基于JQuery的井字过三关游戏(玩家与AI对战)
来源:互联网 发布:淘宝服装店铺文案 编辑:程序博客网 时间:2024/04/30 09:17
这是一款能与AI对战的井字关三关游戏,AI会智能地封锁你的胜利连线。
JQuery:
$(document).ready(function(){ var AiMoveId; $(".block").click(function(){ var blockSelected = $(this); if(blockSelected.hasClass("ex") || blockSelected.hasClass("oh")){ alert("Please select another block."); } else if(blockSelected.hasClass("game-over")){ alert("This game is finished. Please click 'RESET' to start a new game."); } else { blockSelected.addClass("ex").text("X"); if(checkVictory("ex")){ $(".block").addClass("game-over"); $(".victory-msg").text("Player's Victory!").fadeIn("slow"); } else { AiMoveId = AiSmartMove(); $("#"+AiMoveId).addClass("oh").text("O"); if(checkVictory("oh")){ $(".block").addClass("game-over"); $(".victory-msg").text("AI's Victory!").fadeIn("slow"); } } } }); $(".reset").click(function(){ $(".block").html("").removeClass("ex oh game-over"); $(".victory-msg").fadeOut("slow"); }); function checkVictory(symbol){ if($("#1").hasClass(symbol) && $("#2").hasClass(symbol)&& $("#3").hasClass(symbol)){ return true; } else if($("#4").hasClass(symbol) && $("#5").hasClass(symbol) && $("#6").hasClass(symbol)){ return true; } else if($("#7").hasClass(symbol) && $("#8").hasClass(symbol) && $("#9").hasClass(symbol)){ return true; } else if($("#1").hasClass(symbol) && $("#4").hasClass(symbol) && $("#7").hasClass(symbol)){ return true; } else if($("#2").hasClass(symbol) && $("#5").hasClass(symbol) && $("#8").hasClass(symbol)){ return true; } else if($("#3").hasClass(symbol) && $("#6").hasClass(symbol) && $("#9").hasClass(symbol)){ return true; } else if($("#1").hasClass(symbol) && $("#5").hasClass(symbol) && $("#9").hasClass(symbol)){ return true; } else if($("#3").hasClass(symbol) && $("#5").hasClass(symbol) && $("#7").hasClass(symbol)){ return true; } else { return false; } } //AI封锁胜利连线的函数 function AiSmartMove(){ var result; if(($("#2").hasClass("ex") && $("#3").hasClass("ex")) || ($("#4").hasClass("ex") && $("#7").hasClass("ex")) || ($("#5").hasClass("ex") && $("#9").hasClass("ex"))){ if($("#1").hasClass("oh")){ result = AiRandomMove(); } else { result = 1; } } else if(($("#1").hasClass("ex") && $("#3").hasClass("ex")) || ($("#5").hasClass("ex") && $("#8").hasClass("ex"))){ if($("#2").hasClass("oh")){ result = AiRandomMove(); } else { result = 2; } } else if(($("#1").hasClass("ex") && $("#2").hasClass("ex")) || ($("#5").hasClass("ex") && $("#7").hasClass("ex")) || ($("#6").hasClass("ex") && $("#9").hasClass("ex"))){ if($("#3").hasClass("oh")){ result = AiRandomMove(); } else { result = 3; } } else if(($("#1").hasClass("ex") && $("#7").hasClass("ex")) || ($("#5").hasClass("ex") && $("#6").hasClass("ex"))){ if($("#4").hasClass("oh")){ result = AiRandomMove(); } else { result = 4; } } else if(($("#4").hasClass("ex") && $("#6").hasClass("ex")) || ($("#2").hasClass("ex") && $("#8").hasClass("ex")) || ($("#1").hasClass("ex") && $("#9").hasClass("ex")) || ($("#3").hasClass("ex") && $("#7").hasClass("ex"))){ if($("#5").hasClass("oh")){ result = AiRandomMove(); } else { result = 5; } } else if(($("#4").hasClass("ex") && $("#5").hasClass("ex")) || ($("#3").hasClass("ex") && $("#9").hasClass("ex"))){ if($("#6").hasClass("oh")){ result = AiRandomMove(); } else { result = 6; } } else if(($("#1").hasClass("ex") && $("#4").hasClass("ex")) || ($("#8").hasClass("ex") && $("#9").hasClass("ex")) || ($("#3").hasClass("ex") && $("#5").hasClass("ex"))){ if($("#7").hasClass("oh")){ result = AiRandomMove(); } else { result = 7; } } else if(($("#7").hasClass("ex") && $("#9").hasClass("ex")) || ($("#2").hasClass("ex") && $("#5").hasClass("ex"))){ if($("#8").hasClass("oh")){ result = AiRandomMove(); } else { result = 8; } } else if(($("#1").hasClass("ex") && $("#5").hasClass("ex")) || ($("#7").hasClass("ex") && $("#8").hasClass("ex")) || ($("#3").hasClass("ex") && $("#6").hasClass("ex"))){ if($("#9").hasClass("oh")){ result = AiRandomMove(); } else { result = 9; } } else { result = AiRandomMove(); } return result; } //AI随机落子函数 function AiRandomMove(){ var blockIdArr = [1,2,3,4,5,6,7,8,9]; var movableBlocksArr = blockIdArr.filter(function(e){ if(!$("#"+e).hasClass("ex") && !$("#"+e).hasClass("oh") && !$("#"+e).hasClass("game-over")){ return e; } }); return movableBlocksArr[Math.floor(Math.random()*movableBlocksArr.length)]; }});
DEMO:Tic Tac Toe Game with AI
0 0
- 基于JQuery的井字过三关游戏(玩家与AI对战)
- 基于JQuery的井字过三关游戏(两玩家对战)
- 关于“井字过三关”游戏
- 井字过三关(算法分析)
- 【cocos2dx 3.2】井字过三关
- 做游戏长知识------基于行为树与状态机的游戏AI(一)
- 玩家对游戏设计的影响
- 基于html5的五子棋游戏(无AI)
- 基于C#弹幕类射击游戏的实现——(四)玩家的战机
- 智能手机游戏的六个残酷真相:对玩家一定要狠
- 智能手机游戏的六个残酷真相:对玩家一定要狠
- 实现敌人(怪物)的简单AI(自动巡逻、看到玩家攻击玩家、玩家离开恢复自动巡逻)
- Python:pygame游戏编程之旅三(玩家控制的小球)
- Python:pygame游戏编程之旅三(玩家控制的小球)
- 5-2-4 二维数组-遍历-初始化-井字过三关
- 基于MFC框架的C++游戏开发(三)游戏贴图与透明特效的实现
- 鼠标点选-玩家化身与游戏世界沟通的桥梁
- 游戏玩家的学习日志
- ACM前奏模板
- 给程序员最好的18个忠告!
- 微信网页开发--分享接口
- PAT-A1032
- PAT-A1034
- 基于JQuery的井字过三关游戏(玩家与AI对战)
- Central Processing Unit及集成电路
- PAT-A1035
- iOS星级评价效果
- Java中常用的集合小结
- Mac 修改host
- PAT-A1036
- Activity-Fragment存储与返回
- PAT-A1037