创建Java翻转Dominoes游戏

时间:2010-11-02 12:50:25

标签: java

我正在创建一个java多米诺骨牌游戏。
这就是游戏板的外观:

SEEEEEEE
DDDDEEEE
EEEDEEEE
EEEDEEEE
EEEDEEEE
EEECEEEE

每个字母都是一个对象。 S是一个开关,它是唯一可触及的值。 D是Domino,其状态是向下或向上。 如果Domino击中C,C就是赢得比赛的地方。

每个对象都有坐标,并将用坐标初始化。 例如,S在(0,0)中,      和S初始化为Switch S = new Switch(0,0);

我的问题是:

1。)当按下S时,我如何检查每一方,看是否有     骨牌?如果有多个方面(N,S,E,W)会怎样。

一旦在交换机旁找到Domino,它们的状态必须变为Down,然后我们必须检查具有Down状态的Domino之后的更多多米诺骨牌,直到所有连接的多米诺骨牌都关闭。

2.。)如何有效地创建包含不同订单的不同级别     这些对象。     我将使用双阵列,因为水平尺寸是静态的,8 x 6。

3。)将来我想制作一个带图像的游戏板,而不是文字。     我该怎么做呢?     我给某种类型的对象提供图片属性,然后在板上显示图片。每个对象的大小都相同。

谢谢你,
费尔南多·迪亚兹

1 个答案:

答案 0 :(得分:1)

我会这样做:

Hit Queue成为刚刚被击中的多米诺骨牌的列表(想象它们正在坠落,即将与其他多米诺骨牌碰撞)。

如果可以将Switch视为Domino,请将其添加到命中队列,然后启动以下多米诺骨牌倒退算法。

如果Switch不能被视为Domino,请首先在算法中间执行检查,然后开始算法。

Domino Toppling算法

While (Domino C is not Down) AND (Hit Queue is not empty):
    Let New Hits be an empty queue of dominoes
    For each Domino in Hit Queue:
        mark Domino as Down
        Check each adjacent position (NSEW) for a domino:
            If one is found, add a reference to it to New Hits
    Replace Hit Queue with New Hits
    Update GUI (make Down dominoes red or something)

Let Victory be a Boolean equal to whether Domino C is Down

这实际上是在波浪中向外移动,在每次波浪之后更新GUI。当C被击中或任何现有的多米诺骨牌没有更多的多米诺骨牌时,它就会结束。