解决方案 »
- Javascript中如何动态的加载文件,并将文件嵌入到当前页面的HTML中?
- 新手求教百度这个效果怎么做
- div mouseout事件问题 jQuery
- 如何将拼接的options放到指定的位置
- JQ事件注册实现拖动层 代码交流
- div中加载一个页面
- 子页面调用父页面的easyui dialog,如何让其在子页面弹出,而不是在父页面弹出。
- 自己写了一个条形统计图的js,传上来大家参考参考,前100名up有分!
- 急!!!!!!!如何让在<div>内容</div>中的内容不换行!!!!!!!
- jsp input 问题
- chrome 怎么看函数执行了多长时间啊
- 求js 通过Img的src动态获取验证码的兼容代码
function Human_move();
{
....onclick(funcion(){
....
turn();
});
}function turn(){
if(step%2==0){
Human_move();
}
else{
AI_move();
turn();
}
}
onclick事件函数在 human_move()函数里面??不是很理解啊
还有那个turn()那样写的话不就是递归了???这样写逻辑好像不是很好吧。
嗯。这个和我那个while循环的思路差不多。就是不知道怎么控制唯一人能走。因为人走棋 是onclick事件触发的。AI走棋是 AI_move() 函数,不知道怎么控制 人走完之后,AI才能走,AI走完之后,才允许 onclick事件发生。
您能否讲得具体一些呢???我的最大的疑问就是:
人走棋 是onclick事件触发的。AI走棋是 AI_move() 函数,不知道怎么控制 人走完之后,AI才能走,AI走完之后,才允许 onclick事件发生
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事件触发ai行动试试
额 看了2楼的我感觉这样写比较合理 目前我的想法最好就是
var ctx;//2d画布元素
var xxxx;//控制谁先走 1为人 2为AI
var xxx=0;//控制输赢 1为输 2为赢 3为平 0为继续下棋
xxxx=?//选定谁先走后赋值function human_move() {};
function ai_move() {};
function judge() {};//判断输赢给xxx赋值
function win() {//结果出现后
if (xxx=1){
alert("输")
}
else if (xxx=2){
alert("赢")
}
else{
alert("平")
}};function mian() {//下棋主流程方法
human_move()//人下棋
ctx.removeEventListener("click",function () {},false)//人下完解绑CLICK事件
judge()//判断输赢给xxx赋值
if(xxx!=0){
win()
return false;
}//不为0 输出并结束 ai_move()
judge()
if(xxx!=0){
win()
return false;
}//不为0 输出并结束
ctx.addEventListener("click",function () {},false)//为0继续 绑定CLICK事件
main()//下一回合
};
/*判断谁先手*/
if(xxxx=1){
ctx.addEventListener("click",function () {},false)//人先手绑定CLICK事件
main()//进入主流程
}else if (xxxx=2){
ai_move()
ctx.addEventListener("click",function () {},false)//AI先手 下棋后绑定CLICK事件
main()//进入主流程
}
随便写写 不懂
var ctx;//2d画布元素
var xxxx;//控制谁先走 1为人 2为AI
var xxx=0;//控制输赢 1为输 2为赢 3为平 0为继续下棋
xxxx=?//选定谁先走后赋值function human_move() {};
function ai_move() {};
function judge() {};//判断输赢给xxx赋值
function win() {//结果出现后
if (xxx=1){
alert("输")
}
else if (xxx=2){
alert("赢")
}
else{
alert("平")
}};function mian() {//下棋主流程方法
human_move()//人下棋
ctx.removeEventListener("click",function () {},false)//人下完解绑CLICK事件
judge()//判断输赢给xxx赋值
if(xxx!=0){
win()
return false;
}//不为0 输出并结束 ai_move()
judge()
if(xxx!=0){
win()
return false;
}//不为0 输出并结束
ctx.addEventListener("click",function () {},false)//为0继续 绑定CLICK事件
main()//下一回合
};
/*判断谁先手*/
if(xxxx=1){
ctx.addEventListener("click",function () {},false)//人先手绑定CLICK事件
main()//进入主流程
}else if (xxxx=2){
ai_move()
ctx.addEventListener("click",function () {},false)//AI先手 下棋后绑定CLICK事件
main()//进入主流程
}
嗯。看了你的方法之后很受启发。非常感谢!
还有一个疑问,就是怎么将 human_move() 设置成阻塞的,就是只有当 onclick 事件触发了之后才执行一下步 ?
因为 humain_move() 就是 onclick事件函数 而已。
我最初时候是这么写的。但是觉得很不好。因为人开局前要选择 先手 或者 后手 ,让onclick触发 执行 ai_move() 显然不好,虽然可以实现,但是那样逻辑就很乱了。。
啊...OO觉得太麻烦了,所以自己写的还是面向过程的形式。
请教一个具体问题吧。
类似于这样的一个逻辑中:
while( 胜负条件... )
{
if( steps % 2 == 0 ) Human_move();
else if( steps % 2 == 1 ) AI_move();
}
可以把 Human_move() 设置成阻塞的吗???
就是在 Human_move() 中如果没有出现 onclick事件,就卡在那里等待 onclick事件,而不继续执行 ?
因为如果不是阻塞的,就一直在那while(), 变成死循环了。
ttt = true? false:true;