export명이 'nemoM', 'pieceM'인 무비클립을 만들어 뒀다.
nemoM의 경우 체스판의 한 블럭으로 프레임 넘버 1은 백색, 2는 회색.
pieceM의 경우 체스의 기물들로 프레임 넘버 1: 폰, 2: 룩, 3: 나이트, 4.비숍, 5: 퀸, 6: 킹
11~16까지는 흰색 폰~킹
var abcArr:Array = ["a","b","c","d","e","f","g","h"];
var numArr:Array = [8,7,6,5,4,3,2,1];
//black 배치용 배열
var pieceBArr:Array=["BQR","BQN","BQB","BQ","BK","BKB","BKN","BKR",
"BP1","BP2","BP3","BP4","BP5","BP6","BP7","BP8"];
//white 배치용 배열
var pieceWArr:Array=["WP1","WP2","WP3","WP4","WP5","WP6","WP7","WP8",
"WQR","WQN","WQB","WQ","WK","WKB","WKN","WKR"];
var boards:MovieClip=new MovieClip(); //체스판 블럭들 담기용
var boardArr:Array=new Array(); //체스판 배열
var pieceArr:Array=new Array(); //기물 배열
var nX=0, nY=0; //타일 x,y 임시 위치 저장용
var tNum = 0; //배열 총 숫자 저장용
function init(){
boardSet(); //체스판 만들고 배치
pieceSet(pieceBArr, 0); //검정 기물 만들고 배치
pieceSet(pieceWArr, 6*41); //흰색 기물 만들고 배치
trace(6*40);
}
function boardSet(){ //체스판 초기설정
stage.addChild(boards);
boards.x=100, boards.y=30;
tNum = 0;
for(var i = 0; i < 8; i++){
for(var j = 0; j < 8; j++){
var n:MovieClip = new nemoM();
//배경색 정하기
//무비클립의 프레임 1은 흰색, 2는 회색
if(i%2 == 0){ //짝수일경우
n.gotoAndStop(tNum%2+1);
}else{ //홀수일 경우
n.gotoAndStop((tNum+1)%2+1);
}
//무비클립 위치 정하기
if(tNum < 8){ //첫 8개
nX = tNum * n.width;
nY = 0;
}else if(tNum % 8 == 0){ //매 9번째
nX -= n.width * 7;
nY += n.height;
}else{ //그외
nX += n.width;
}
n.x= nX;
n.y= nY;
//체스 표기법대로 이름 붙이기.
n.name =String(abcArr[j%8])+String(numArr[i]);
//무비클립 안 다이나믹 텍스트에 이름 표시
n.tb.text=n.name;
boards.addChild(n); //화면에 추가
boardArr.push(n); //배열에 추가
tNum++; //전체 숫자 증가
}
}
}
function pieceSet(pArr,yStart){
tNum=nX=nY=0;
for(var i=0; i < pArr.length; i++){
var p:MovieClip = new pieceM();
//기물 모양 정하기
p.name = String(pArr[i]);
switch(pArr[i]){
case("BP1"):case("BP2"):case("BP3"):
case("BP4"):case("BP5"):case("BP6"):
case("BP7"):
case("BP8"): p.gotoAndStop(1); break;
case("BKR"):
case("BQR"): p.gotoAndStop(2); break;
case("BKN"):
case("BQN"): p.gotoAndStop(3); break;
case("BKB"):
case("BQB"): p.gotoAndStop(4); break;
case("BQ"): p.gotoAndStop(5); break;
case("BK"): p.gotoAndStop(6); break;
case("WP1"):case("WP2"):case("WP3"):
case("WP4"):case("WP5"):case("WP6"):
case("WP7"):
case("WP8"): p.gotoAndStop(11); break;
case("WKR"):
case("WQR"): p.gotoAndStop(12); break;
case("WKN"):
case("WQN"): p.gotoAndStop(13); break;
case("WKB"):
case("WQB"): p.gotoAndStop(14); break;
case("WQ"): p.gotoAndStop(15); break;
case("WK"): p.gotoAndStop(16); break;
}
//기물 위치 정하기
if(tNum < 8){ //첫 8개
nX = tNum * 41; //p.width;
nY = yStart;
}else if(tNum % 8 == 0){ //매 9번째
nX -= 41 * 7;// p.width 대신 41
nY += 41; //p.height 대신 41
}else{ //그외
nX += 41; //p.width 대신 41
}
p.x= nX;
p.y= nY;
p.addEventListener(MouseEvent.MOUSE_DOWN, mDown);
p.addEventListener(MouseEvent.MOUSE_UP, mUp);
boards.addChild(p); //화면에 추가
pieceArr.push(p); //배열에 추가
tNum++;
}
}
function mDown(e:MouseEvent){
//선택한 기물 맨 위로 보내기.
e.currentTarget.parent.setChildIndex(e.currentTarget,
e.currentTarget.parent.numChildren-1);
e.target.startDrag(); //마우스 따라다니기
}
function mUp(e:MouseEvent){
e.target.stopDrag(); //마우스 따라다니기 중지
}
init(); |