我正在创建一个Java多米诺骨牌游戏。

这是游戏板的外观:

SEEEEEEE
DDDDEEEE
EEEDEEEE
EEEDEEEE
EEEDEEEE
EEECEEEE


每个字母都是一个对象。
S是一个开关,它是唯一可以触摸的值。
D是Domino,其状态为down或up。
如果Domino击中C,C就是赢得游戏的地方。

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

我的问题是:

1.)按下S时,我将如何检查每侧,看是否有
骨牌?如果有多个面(N,S,E,W)怎么办。

一旦在交换机旁边找到Domino,它们的状态必须更改为Down,然后我们必须检查处于Down状态的Domino旁边是否有更多Domino,直到所有连接的Domino都关闭为止。

2.)如何有效地创建包含不同订单的不同关卡
这些对象。
我将使用双数组,因为级别大小是静态的8 x 6。

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

谢谢,

费尔南多·迪亚兹

最佳答案

我会这样处理:
假设Hit Queue是刚刚被击中的多米诺骨牌的列表(想象它们正处于下降过程中,即将与其他多米诺骨牌发生碰撞)。
如果可以将Switch视为Domino,请将其添加到Hit Queue中,然后启动以下domino-toppling算法。
如果不能将Switch视为Domino,请先在算法中间执行检查,然后再开始算法。
Domino推顶算法

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或没有更多的多米诺骨牌可以击中任何现有的多米诺骨牌时,它结束。

关于java - 创建Java翻转Domino游戏,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/4077784/

10-12 04:14