js 棋类游戏 轮流走一步棋 的逻辑
本帖最后由 gjt19910817 于 2012-11-12 09:58:12 编辑
要做一个比较简单的对战的棋类游戏。逻辑,算法什么的全部写在js文件里面。
现在卡在一个小问题上面了。。
两个棋手(一个是人,一个是电脑AI),一人走一步棋。怎么控制呢?
我用的是 html5 的 canvas 控件。人类走棋是在 canvas 上面点击触发 onclick 事件的函数,叫这个函数human_move() 吧。
AI 走棋就是一个 AI_move() 函数。
我现在用的方法是 在 human_move() 函数内,最后执行 AI_move()。等于是把 人类和AI 的移动全部写进 onclick 事件函数里面去了。
但是后来规则要改成,人类可以选择 先手 或者 后手 走棋,那么显然不能把 AI_move() 放在 onclick 事件里面。
我现在就想把 human_move() 和 AI_move() 写到一个主要控制逻辑里面去。
尝试增加一个 step变量, 进行计数, 单数就是人类走,双数就是AI走。每次走完,steps++。
想改成大概下面这样的形式:
while( 胜负条件... )
{
if( steps % 2 == 0 ) Human_move(); // Human_move()是onclick事件函数,这样显然不对。
else if( steps % 2 == 1 ) AI_move();
}
但是怎么弄都搞不定,老是死循环。。。
请问大家有什么思路和建议???
小弟js也是才上手几天,也不是很熟。跪谢了。
------解决方案--------------------不要使用while循环。可以这样写
function Human_move();
{
....onclick(funcion(){
....
turn();
});
}
function turn(){
if(step%2==0){
Human_move();
}
else{
AI_move();
turn();
}
}
------解决方案--------------------这个不懂帮顶!
------解决方案--------------------2个 control
当前只有一个control 再起作用
这个思路 合具体 语言没关系
------解决方案--------------------
var xxxx = 1;//控制谁走
var xxx = 1;//控制输赢
while(xxx=1){
if(xxxx=1){
//onclick可触发等待触发
onclick()//下棋触发
xxxx=2//改变量
//判断输赢然后决定是否给xxx改值
}
else if (xxxx=2){
AI_move()//触发ai走棋
xxxx=1//在改回来
//判断输赢然后决定是否给xxx改值
}}
大概就是这个意思 我也不懂
------解决方案--------------------我就写了一句话这么多错别字 我倒 “。。。我不是写了绑定和解绑click事件么 解绑了不就阻塞了么 ”