我正在开发一款针对Android的html / javascript游戏。这是一个棋盘游戏,它执行以下操作。 它具有不同颜色的瓷砖,用户可以在电路板上放置一个瓷砖(以编程方式选择)。如果我们得到4个或更多相同颜色/形状的瓷砖,我们会得到一些点,这些瓷砖将会消失。移除的瓷砖上方的瓷砖将替换它们,新的瓷砖将添加到空的位置。下图显示了它的工作原理(这只是一个例子,真正的电路板可以有不同的尺寸):
Tiles是<img>
元素,其id存储在一个数组中,用于检查匹配和替换。
这一切都运作良好但是一旦新的瓷砖被添加到板上我需要检查整个板以检查新的匹配是否可用。我在这里需要一些建议,因为检查整个电路板可能非常慢。有没有办法可以有效地做到这一点? 这就是我的想法:
鉴于上一个例子,我想过只检查红色区域中的元素,即只检查已移动或添加的元素。如果瓷砖垂直移动会很有效,因为我只需检查移动/添加的瓷砖,它就会给我新的匹配。但是如果我水平移除瓷砖可能会有问题,因为如果这些瓷砖位于底部,我将不得不检查整个电路板,我也面临同样的问题。
任何建议或建议都将受到赞赏。
注意:我没有添加任何代码,因为它只是检查给定磁贴的行和列并查找匹配项。但如果需要,我可以提供它。
编辑:在任何人可以反对之前我想通知我刚刚将这个问题添加到游戏开发部分,因为我在这里没有收到任何答案:)。编辑:添加我的代码
function initializeBoard(){
//items is an array which contains tiles/images names
for(var i=0; i < totalItems; i++)
board[i+1] = Math.floor(Math.random() * (items.length - 1)) + 1;
for(var i=0; i < totalItems; i++)
{
if( !(i % numberShapesXAxis) )
document.write("<BR>");
document.write("<img src=\"images/"+ items[board[i+1]]+ ".gif\" style = \"border:0; height:"+ itemSize+ "px; width:"+ itemSize+ "px;\" name=\"t", i+1,"\" onclick = \"replaceAndCheck(", i+1, ")\"><\/a>");
}
}
//so basically board contains image ids.
答案 0 :(得分:0)
移动石头时检查是否有新的匹配怎么样?因此,当石头x向下移动时,检查X的新位置是否创建匹配。这样你就可以创建一种递归方法。