Создайте игру в крестики-нолики с помощью jQuery

В этом посте мы собираемся реализовать крестики-нолики для двух игроков с помощью jQuery. Его довольно легко разработать с помощью простых проверок и проверок ошибок. Игрок-1 начинает игру, и оба игрока делают ходы по очереди. Игрок, собравший прямую цепочку из 3 блоков, побеждает в игре. Здесь мы будем реализовывать эту игру во внешнем интерфейсе, используя только простую логику и проверки достоверности.
Предварительные требования: базовые знания некоторых интерфейсных технологий, таких как HTML, CSS, jQuery и Bootstrap.
Разработка макета: Прежде всего, мы разработаем макет сетки 3 * 3 и применим к нему некоторые эффекты CSS. Также должен отображаться текст, показывающий ход игрока. Он также должен содержать кнопку для сброса игры, когда это необходимо.
- HTML-код:
<!DOCTYPE html><htmllang="en"><head><metacharset="utf-8"/><metahttp-equiv="X-UA-Compatible"content="IE=edge, chrome=1"/><scriptsrc=</script><linkrel="stylesheet"href=<scriptsrc=</script><linkrel="stylesheet"href=integrity="sha384-lZN37f5QGtY3VHgisS14W3ExzMWZxybE1SJSEsQp9S+oqd12jhcu+A56Ebc1zFSJ"crossorigin="anonymous"></head><body><!-- Heading --><divclass="container-fluid text-center"><h1style="color: white;">TIC-TAC-TOE</h1></div><br><br><divclass="container-fluid text-center"><!-- Inform area for player's turn --><h4id="screen"style="color: white;">PLAYER 1 TURN FOLLOWS</h4></div><br><divclass="container-fluid"><divclass="row"><divclass="col-lg-4"> </div><divclass="col-lg-4"><!-- Playing Canvas --><center><table><tr><tdcolspan="3"></tr><tr><td><buttonclass="sq1 r"></button></td><td><buttonclass="sq2 r"></button></td><td><buttonclass="sq3 r"></button></td></tr><tr><td><buttonclass="sq4 r"></button></td><td><buttonclass="sq5 r"></button></td><td><buttonclass="sq6 r"></button></td></tr><tr><td><buttonclass="sq7 r"></button></td><td><buttonclass="sq8 r"></button></td><td><buttonclass="sq9 r"></button></td></tr></table><br><br><!-- Reset button for Game --><inputtype="button"class="reset btn btn-lg btn-danger btn-block"value="RESET"onClick="reset()"/></center></div><divclass="col-lg-4"> </div></div></div></body></html> - Код CSS:
<!-- Applying CSS Properties --><style>body {background-color:#000000;}button {height:80px;width:80px;background-color:white;border:0pxtransparent;border-radius:50%;margin:4px;padding:4px;}.fa {font-size:48px;color:black;}.reset {padding:8px;}.reset:hover {opacity:0.8;}</style> - Выход:

Реализация логики: Теперь нам нужно реализовать следующие шаги в нашем основном коде для имитации логики игры в крестики-нолики.
- Последовательные ходы игроков: последовательные ходы следуют после того, как первый игрок сделает свой ход. Также следует соответствующим образом обновить текст, уведомляющий об очереди игрока.
<!-- Consecutive player Turns --><script>// Flag variable for checking Turn// We'll be modifying our base logic in the// next steps as per requirementsvarturn = 1;$("button").click(function() {if(turn == 1) {$("#screen").text("PLAYER 2 TURN FOLLOWS");// Check sign font from font-awesome$(this).addClass("fa fa-check");turn = 2;}else{$("#screen").text("PLAYER 1 TURN FOLLOWS");// Cross sign font from font-awesome$(this).addClass("fa fa-times");turn = 1;}});</script>
- Отметить / уведомить о недопустимых ходах: Кроме того, мы должны убедиться, что игрок на ходу не должен делать недопустимые ходы. Для этого мы проверим, не используется ли уже нажатая кнопка другим классом шрифтов в процессе. Если он уже отмечен шрифтом, отметьте ход недействительным на короткий промежуток времени.
<!-- Scriptforchecking any invalid moves -->$("button").click(function() {if($(this).hasClass("fa fa-times") ||$(this).hasClass("fa fa-check")){$(this).css("background-color","red");setTimeout(() => {$(this).css("background-color","white");}, 800);}});
- Проверка на выигрышные ходы: мы разработаем функцию, которая будет проверять, заполнил ли игрок сетку или нет. Для этого нам нужно проверить 8 выигрышных конфигураций плеера. Мы отправим класс шрифта в функцию для проверки.
<!-- Function to check the winning move -->functioncheck(symbol) {if($(".sq1").hasClass(symbol) &&$(".sq2").hasClass(symbol) &&$(".sq3").hasClass(symbol)){$(".sq1").css("color","green");$(".sq2").css("color","green");$(".sq3").css("color","green");returntrue;}elseif($(".sq4").hasClass(symbol)&& $(".sq5").hasClass(symbol)&& $(".sq6").hasClass(symbol)){$(".sq4").css("color","green");$(".sq5").css("color","green");$(".sq6").css("color","green");returntrue;}elseif($(".sq7").hasClass(symbol)&& $(".sq8").hasClass(symbol)&& $(".sq9").hasClass(symbol)){$(".sq7").css("color","green");$(".sq8").css("color","green");$(".sq9").css("color","green");returntrue;}elseif($(".sq1").hasClass(symbol)&& $(".sq4").hasClass(symbol)&& $(".sq7").hasClass(symbol)){$(".sq1").css("color","green");$(".sq4").css("color","green");$(".sq7").css("color","green");returntrue;}elseif($(".sq2").hasClass(symbol)&& $(".sq5").hasClass(symbol)&& $(".sq8").hasClass(symbol)){$(".sq2").css("color","green");$(".sq5").css("color","green");$(".sq8").css("color","green");returntrue;}elseif($(".sq3").hasClass(symbol)&& $(".sq6").hasClass(symbol)&& $(".sq9").hasClass(symbol)){$(".sq3").css("color","green");$(".sq6").css("color","green");$(".sq9").css("color","green");returntrue;}elseif($(".sq1").hasClass(symbol)&& $(".sq5").hasClass(symbol)&& $(".sq9").hasClass(symbol)){$(".sq1").css("color","green");$(".sq5").css("color","green");$(".sq9").css("color","green");returntrue;}elseif($(".sq3").hasClass(symbol)&& $(".sq5").hasClass(symbol)&& $(".sq7").hasClass(symbol)){$(".sq3").css("color","green");$(".sq5").css("color","green");$(".sq7").css("color","green");returntrue;}else{returnfalse;}} - Сброс игры: нажатие на эту кнопку сбросит игру.
<!-- Resetting the game -->functionreset(){$("#screen").text("PLAYER 1 TURN FOLLOWS");$("#screen").css("background-color","transparent");$(".r").removeClass("fa fa-check");$(".r").removeClass("fa fa-times");turn=1;// Reset Colors$(".sq1").css("color","black");$(".sq2").css("color","black");$(".sq3").css("color","black");$(".sq4").css("color","black");$(".sq5").css("color","black");$(".sq6").css("color","black");$(".sq7").css("color","black");$(".sq8").css("color","black");$(".sq9").css("color","black");}
Результат: Комбинируя все коды, написанные выше, получится полноценная игра в крестики-нолики. 