如何制作基于阵列的Simon Js游戏?

时间:2013-07-25 11:22:37

标签: javascript arrays 2d-games

我正在编写一个简单的sims游戏,我对如何做到这一点毫无头绪。

我知道:

我需要创建两个数组和一个级别(得分)变量

  • 需要添加从1到4(含)的随机生成的数字 到第一个数组,当按下四个按钮之一时,该值 如果第二个数组不是第二个数组,则将其添加到第二个数组中 与第一个阵列相同或更大。每次添加一个值 到第二个数组,检查该值是否等于
    中的值 第一个数组中的相同位置,如果没有,清除两个数组,和 将levelvar设置为1,并提醒“gameover”这意味着如果你得到一个
    错了,你不能继续。如果第二阵列的长度
    匹配级别变量,将随机数添加到数组1,清除
    数组二,增量levelvar。

但是,我对代码无能为力。

我的Jsfiddle:http://jsfiddle.net/jbWcG/2/

JS:

var x = []
var y = []
var levelvar = 1
document.getElementById("test").onclick= function() {
document.getElementById("test").innerHTML=x
};
document.getElementById("button1").onclick= function() {
x.push("Red")
};
document.getElementById("button2").onclick= function() {
x.push("Green")
};
document.getElementById("button3").onclick= function() {
x.push("Yellow")
};
document.getElementById("button4").onclick= function() {
x.push("Blue")
};

HTML:

<button id="button1">Red</button><br />
<button id="button2">Green</button><br />
<button id="button3">Yellow</button><br />
<button id="button4">Blue</button><br />
<p id="test">Click To see What you have clicked</p>

我如何使两个数组看到某个值是否相同?

可以说,生成的数组是:[1,2,3,4,1,2,3] 我在第5位,我按2,我怎么检查这两个数字是否匹配? 提前致谢

1 个答案:

答案 0 :(得分:2)

一次检查一个数组位置ix的最简单方法是

if (gen_arr[i] == x) {
  // matches
} else {
  // doesn't match
}

因此,如果您将游戏的流程概念化,那么您需要按下每个按钮:

  1. 以某种方式跟踪他们所在的索引(可能有一个计数器随着每个按钮按下而递增)
  2. 检查是否gen_arr[i] == x(如果没有,则显示游戏结束)。
  3. 或者,您可以调用gen_array.shift()来获取gen_array中的第一项并将其从数组中删除,而不是跟踪哪个索引,而是以这样的流方式:

    var gen_array = [1,2,3,4,1];
    
    function press_button(button_pressed) {
      var supposed_to_be = gen_array.shift();
    
      // at this point, on the first call,
      //   supposed_to_be = 1, and gen_array = [2,3,4,1]
    
      if (supposed_to_be != button_pressed) {
    
        // game over!
    
      } else {
        // you survive for now!
    
        if (gen_array.length() == 0) {
          // gen_array is empty, they made it through the entire array
          // game is won!
        }
      }
    }
    

    虽然这代表了每一步的一般“检查内容”,但不推荐使用此逐字,因为它很快会导致非结构化游戏。

    我建议调查一下所谓的“游戏状态”图表,这些图表基本上都是流程图,其中包含游戏的每个“状态” - 在您的情况下,至少包括

    1. “显示”模式
    2. 等待按下按钮
    3. 检查按钮按下是否正确
    4. 游戏结束
    5. 游戏赢了
    6. 从每个州,在“如何”从一个州过渡到另一个州时画出箭头。您可以进行谷歌搜索以查看示例。

      一旦你有了一个好的游戏状态图/流程图,就可以更容易地将你的程序分解成特定的块并更好地组织它......然后你通常可以看到你需要编码什么以及缺少什么/什么不缺。