Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- <!DOCTYPE html>
- <html>
- <head>
- <meta charset="utf-8" />
- <title>Tic Tac Toe</title>
- <style>
- table.tris {
- width: 300px;
- height: 300px;
- border: 1px dashed black;
- }
- table.tris td {
- border-radius: 50px;
- border: 1px solid brown;
- margin: 0;
- width: 100px;
- height: 100px;
- padding: 5px;
- }
- .player0 {
- background-color: red;
- }
- .player1 {
- background-color: yellow;
- }
- </style>
- </head>
- <body>
- <h1>Tris</h1>
- <table class="tris">
- <tr><td></td><td></td><td></td></tr>
- <tr><td></td><td></td><td></td></tr>
- <tr><td></td><td></td><td></td></tr>
- </table>
- <button id="start_game">Inizia partita</button>
- <div id="feedback">È il turno del giocatore <span id="player"> </span></div>
- <script src="node_modules/jquery/dist/jquery.js"></script>
- <script>
- var running = false; // indica se la partita è in corso
- var player; // prossimo giocatore
- // mostra a video le informazioni di gioco
- function displayInfo() {
- if (running) { // se sono in gioco
- $("#start_game").prop("disabled", true); // disabilita il pulsante di avvio
- $("#feedback").show(); // mostra un feedback
- $("#player").removeClass("player0"); // pulisce lo span del prossimo giocatore
- $("#player").removeClass("player1");
- $("#player").addClass("player" + player); // mostra il prossimo giocatore
- }
- else { // non sono in gioco
- $("#start_game").prop("disabled", false); // abilita il pulsante di avvio
- $("#feedback").hide(); // nasconde il div di feedback
- }
- }
- function init() { // inizializza il tabellone
- $("td").removeClass("player0");
- $("td").removeClass("player1");
- running = false;
- displayInfo();
- }
- function startGame() { // inizia la partita
- running = true;
- player = 0;
- displayInfo();
- }
- $(function () { // gestore del gioco
- init();
- displayInfo();
- $("#start_game").click(function () { startGame(); }); // inizia la partita
- $("td").click(function () { // click su una cella della tabella
- if (running) { // sono in partita
- $(this).addClass("player" + player); // colora la cella
- var check = checkWin(player); // controlla se c'è vittoria
- if (check > 0) { // il giocatore corrente ha vinto
- winner(player);
- }
- else if (check < 0) { // partita patta
- draw(player);
- }
- else { // nessuno ha ancora vinto e la partita non è pari
- // 0 -> 1 % 2 = 1
- // 1 -> 2 % 2 = 0
- player = (player + 1) % 2; // prossimo giocatore
- displayInfo();
- }
- }
- })
- });
- function draw() { alert("Partita pari"); init(); } // indica partita patta
- function winner(player) { alert("Il giocatore " + player + " ha vinto"); init(); } // indica vittoria
- function checkWin(player) { // controlla vincita
- var className = "player" + player;
- var table = []; // tabella per il controllo vincite
- table[0] = [0, 0, 0];
- table[1] = [0, 0, 0];
- table[2] = [0, 0, 0];
- // inizia la tabella per il controllo vincite
- var rows = $("table.tris tr");
- var checked = 0;
- for (var row = 0; row < rows.length; ++row) {
- var cols = $(rows[row]).find("td");
- for (var col = 0; col < cols.length; ++col) {
- if ($(cols[col]).hasClass("player1") || $(cols[col]).hasClass("player0"))
- // conta le celle piene
- ++checked;
- // controlla se la cella è marcata dal giocatore passato come parametro
- if ($(cols[col]).hasClass(className)) table[row][col] = 1;
- }
- }
- // faccio un po' di conti
- for (var row = 0; row < 3; ++row) {
- var sum = table[row][0] + table[row][1] + table[row][2];
- if (sum == 3) return 1;
- }
- for (var col = 0; col < 3; ++col) {
- var sum = table[0][col] + table[1][col] + table[2][col];
- if (sum == 3) return 1
- }
- if (table[0][0] + table[1, 1] + table[2, 2] == 3
- || table[2][0] + table[1][1] + table[0][2] == 3)
- return 1;
- if (checked == 9) return -1;
- return 0;
- }
- </script>
- </body>
- </html>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement