新的动作脚本和在我的3x3瓷砖益智游戏中发现问题

时间:2015-05-13 09:27:37

标签: actionscript-3

此代码适用于3x3平铺拼图游戏。我在学校为我的课程设计一个游戏而且我已经尽了最大努力,但这就是我所能做的。

我认为这个问题是我不知道如何制作它,以便当点击空白图块旁边的图块时它会交换,但如果它们不在空白图块旁边则不会交换。

此外,我还没准备好胜利序列,因为它们全部都是有序的,并且在开始时瓦片开始时不是随机的,因为我不确定如何让它随机。它还说问题是它预期2,得到1.我不知道这意味着什么。

var blank:Blank = new Blank();
var one:One = new One(); 
var two:Two = new Two();
var three:Three = new Three();
var four:Four = new Four();
var five:Five = new Five(); 
var six:Six = new Six();
var seven:Seven = new Seven();
var eight:Eight = new Eight();
var tile = String

function swapBlank(tile):void
{
    var m = int
    var n = int
    m = tile.x
    n = tile.y
    tile.x = blank.x
    tile.y = blank.y
    blank.x = m
    blank.y = n
}  

function swap(tile,e:MouseEvent):void
{
    if (tile.x == blank.x)
    {
        if (tile.y == blank.y + 110)
        {
            swapBlank(tile);
        }
        else if (tile.y == blank.y - 110)
        {
            swapBlank(tile);
        }
    }
    else if (tile.y == blank.y)
    {
        if (tile.x == blank.x + 110)
        {
            swapBlank(tile);
        }
        else if (tile.x == blank.x - 110)
        {
            swapBlank(tile);
        }
    }

}
//expected 2, got 1//

addChild(blank);
addChild(one);
addChild(two);
addChild(three);
addChild(four);
addChild(five);
addChild(six);
addChild(seven);
addChild(eight);


three.x = 10
three.y = 10
eight.x = 120
eight.y = 10
seven.x = 230
seven.y = 10
one.x = 10
one.y = 120
four.x = 120
four.y = 120
six.x = 230
six.y = 120
two.x = 10
two.y = 230
five.x = 120
five.y = 230
blank.x = 230
blank.y = 230

one.addEventListener(MouseEvent.CLICK, swap);
two.addEventListener(MouseEvent.CLICK, swap);
three.addEventListener(MouseEvent.CLICK,swap);
four.addEventListener(MouseEvent.CLICK, swap);
five.addEventListener(MouseEvent.CLICK, swap);
six.addEventListener(MouseEvent.CLICK, swap);
seven.addEventListener(MouseEvent.CLICK, swap);
eight.addEventListener(MouseEvent.CLICK, swap);

1 个答案:

答案 0 :(得分:0)

您在交换函数调用中遇到的错误是因为事件监听器始终只有一个参数:Event。所以swap()应该看起来像 function swap(event:MouseEvent):void

该事件将引用已点击的图块,因此您可以大致如下:

tile = event.target;

然后你可以检查瓷砖是否在空白旁边,其余的。 但Stack Overflow并不是要告诉你如何进行任务,以便你可以解决这个问题。