一个做
游戏的小游戏,这个游戏代码比较简单,主要是掌握算法原理,但也有一些地方要注意。
游戏
界面 进入这个主题。这个项目的结果如下:
游戏有一个游戏玩家角色的开始界面
选项,然后选择上一手牌,然后开始游戏,选择界面制作一个遮罩层,为
用户提供选择,然后隐藏遮罩层并开始游戏。
具体的实现
说得这么多,可能会比较枯燥,下面是具体代码的具体实现。
用二维数组板
保存状态板,1是
电脑的值,1是游戏玩家的值。
winarr保存所有8种可能的组合象棋组合;保持computerwin和userwin,和初始值等于winarr。当电脑或玩家下棋,他们更新两阵分开,并
删除象棋组合不能won.computerwin和userwin更新时分别
面板更新。
核心方法是玩,
执行步骤伪代码如下所示:
如果你能攻击
穿越computerwin阵列,
发现国际象棋的游戏,可以攻击,下棋,
显示无论赢。
不能攻击,如果你需要防守
穿越userwin,根据玩家能赢的组合,找到需要捍卫的棋局,下棋,更新面板;
不需要防守,如果这是上位机的第一步
在中心下棋,更新面板;
不只是第一步
如果中心没有占用,在中心下棋,更新面板;返回中心。
如果是特殊
情况,在边缘下棋,更新面板;返回。
如果在角落里还有
位置,选择一个角落下棋,更新面板;返回角落。
在最后一种情况下,发现剩余的
空间,选择空间computerwin,下棋,更新面板;返回。
播放算法的实现如下:
如果(会攻击()){
console.log(攻);
无功attackpos = findattackpos();
UpdatePanel(attackpos,computerval);
} else if(needdefend()){
Console.log (defend);
无功defendpos = finddefendpos();
UpdatePanel(defendpos,computerval);
} else if(步()){
Console.log (first);
UpdatePanel(firstpos,computerval);
运行=真;
{人}
console.log(其他);
如果(面板{ 1 } { 1 } = 0){
UpdatePanel(firstpos,computerval);
返回;
}
如果(特殊()){
console.log(特别的);
VaR POS = findspecialpos();
UpdatePanel(POS,computerval);
返回;
}
无功随机= math.floor(Math.random)*(2);
如果(面板{ 0 } { 0 } = 0 { {面板{ 2 } { 2 } = 0)
var(随机= 0)0:8;
UpdatePanel(POS,computerval);
否则如果(面板{ 0 } { 2 } = 0 } {面板{ 2 } { 0 } = 0)
var(随机= 0)2:6;
UpdatePanel(POS,computerval);
{人}
无功otherpos = findemptypos();
UpdatePanel(otherpos,computerval);
}
}
总结
在编码过程中遇到的一个问题是Javascript对象的数组,当我第一次开始叫起法输出面板,玩的是面板的价值实施后获得的,然后请神,这是因为面板是一个对象,因为对象遍历引用的
内存地址相同块,所以如果有变化,一切都改变了。如果你使用下标输出的每一个值,你可以得到的初始值。还可以使用JSON方法
打印数组字符串,并将其打印出来查看结果。