基于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