【问题标题】:Javascript board game: looking for optimizationJavascript棋盘游戏:寻找优化
【发布时间】:2013-03-14 21:09:14
【问题描述】:

我正在为 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. 

【问题讨论】:

  • 我希望您存储的行和列不仅是对图像的引用吗?我认为是的,你必须提供你的代码(至少那些初始化你的数据结构的部分,以及你当前的移动逻辑)。
  • @Bergi 我已经添加了我的板子初始化代码

标签: javascript android optimization


【解决方案1】:

移动石头时检查是否有新匹配如何。因此,当石头 x 向下移动时,您检查 X 的新位置是否创建匹配。这样你就可以创建一种递归的方法。

【讨论】:

  • 首先感谢您的回答。如果我使用您的方法并水平删除图块,我会看到事物的方式,我将检查一个图块的匹配项,然后根据该图块所做的更改(如果它具有匹配项),我将检查另一个新图块。一旦没有匹配到新的瓷砖,我将开始返回一个级别并检查第二个瓷砖并重新开始整个过程​​。如果这是我必须要做的,那不是很慢吗?
  • 对于您添加的每一块石头,您只需检查水平和垂直。所以这不是很多处理。假设您向下移动 1 个街区。你只需要检查块下面的石头,看看它是否可以做一个新的行。因为石头上面的石头还是一样的(如果不是上排的话)。不时检查整个字段需要更长的时间。
  • 我完全同意你的观点,但我想说的是我会垂直和水平检查一块石头,如果有匹配的线或列将被删除,它们上面的瓷砖会移动下来,新的瓷砖将取代它们的位置。并且可能会有新的比赛可用。您确实同意要检查是否存在任何新匹配项,我必须检查所有新图块?
猜你喜欢
  • 2021-12-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-11-27
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多