получение координат массива (проблема 8 королев) - PullRequest
0 голосов
/ 12 января 2011

Я пытаюсь создать графическую программу, которая решает проблему 8 королев, и пока у меня есть шахматная доска

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();

(спасибо Андре за этот код)

это создает черно-белую клетчатую доску для решения этой проблемы, но теперь мне нужно иметь возможность разместить королев. Как я могу увидеть, где пользователь нажимает, чтобы поместить ферзь в поле, на которое щелкают?

(извините, если мой вопрос не до конца ясен)

1 Ответ

1 голос
/ 12 января 2011

Я добавил очень простой пример к вашему вопросу.Смотрите ниже:

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();

Удачи, Роб

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...