我正在创建一个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。)将来我想制作一个带图像的游戏板,而不是文字。 我该怎么做呢? 我给某种类型的对象提供图片属性,然后在板上显示图片。每个对象的大小都相同。
谢谢你,
费尔南多·迪亚兹
答案 0 :(得分:1)
让Hit Queue
成为刚刚被击中的多米诺骨牌的列表(想象它们正在坠落,即将与其他多米诺骨牌碰撞)。
如果可以将Switch视为Domino,请将其添加到命中队列,然后启动以下多米诺骨牌倒退算法。
如果Switch不能被视为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被击中或任何现有的多米诺骨牌没有更多的多米诺骨牌时,它就会结束。