一个做游戏的小游戏,这个游戏代码比较简单,主要是掌握算法原理,但也有一些地方要注意。



游戏界面



进入这个主题。这个项目的结果如下:





游戏有一个游戏玩家角色的开始界面选项,然后选择上一手牌,然后开始游戏,选择界面制作一个遮罩层,为用户提供选择,然后隐藏遮罩层并开始游戏。



具体的实现



说得这么多,可能会比较枯燥,下面是具体代码的具体实现。



用二维数组板保存状态板,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方法打印数组字符串,并将其打印出来查看结果。