2011-01-12 16 views
0

Ich versuche, ein Grafikprogramm zu machen, die die 8 Damen-Problem und so weit löst, was ich habe, ist das Schachbrettbekommen Array Koordinaten (8 Damen-Problem)

var chessBoard:Array = new Array(); 
for(var i:int = 0; i < 4; i++) 
{ 
    chessBoard.push(new Array(1,0,1,0,1,0,1,0)); 
    chessBoard.push(new Array(0,1,0,1,0,1,0,1)); 
} 

var tileSize:int = 20; 

function createChessBoard():void 
{ 
    for(var i:int = 0; i < chessBoard.length; i++) 
    { 
     for(var j:int = 0; j < chessBoard[i].length; j++) 
     { 
      var tile:Sprite = new Sprite(); 
      var tileColor:int = chessBoard[i][j] * 0xffffff; 

      tile.graphics.beginFill(tileColor); 
      tile.graphics.drawRect(0, 0, tileSize, tileSize); 
      tile.graphics.endFill(); 

      tile.x = j * tileSize; 
      tile.y = i * tileSize; 

      addChild(tile); 
     } 
    } 
} 

createChessBoard(); 

(dank André für diesen Code)

das schafft ein schwarz-weiß kariertes Brett für das Problem, aber jetzt muss ich in der Lage sein, die Königinnen zu platzieren. Wie kann ich sehen, wo der Benutzer klickt, um die Dame in die angeklickte Box zu legen?

(sorry, wenn meine Frage nicht ganz klar ist)

Antwort

1

habe ich ein sehr einfaches Beispiel, um Ihre Frage. Siehe unten:

var chessBoard:Array = new Array(); 
for(var i:int = 0; i < 4; i++) 
{ 
    chessBoard.push(new Array(1,0,1,0,1,0,1,0)); 
    chessBoard.push(new Array(0,1,0,1,0,1,0,1)); 
} 

var tileSize:int = 20; 

function createChessBoard():void 
{ 
    for(var i:int = 0; i < chessBoard.length; i++) 
    { 
     for(var j:int = 0; j < chessBoard[i].length; j++) 
     { 
      var tile:Sprite = new Sprite(); 
      var tileColor:int = chessBoard[i][j] * 0xffffff; 

      tile.graphics.beginFill(tileColor); 
      tile.graphics.drawRect(0, 0, tileSize, tileSize); 
      tile.graphics.endFill(); 

      //I added the name property and a MouseEvent.CLICK event listener 
      tile.name = "tile__" + i + "_" j + "_sp"; 
     tile.addEventListener(MouseEvent.CLICK, onTileClick); 

      tile.x = j * tileSize; 
      tile.y = i * tileSize; 

      addChild(tile); 
     } 
    } 
} 

function onTileClick(event:MouseEvent):void 
{ 
    //This tells you which tile the user clicked on 
    trace(event.target.name); 
}; 

createChessBoard(); 

Viel Glück, Rob

+0

Dank, sondern auch, wie kann ich ein Kind zu einem fügen jetzt, dass ich seine Position kennen? – master565

+0

macht mir nichts aus, wenn ich die Königinnen x und y gleich zu event.target.x und event.target.y mache und sie direkt auf die Kachel lege – master565