Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- ////////////////////////////////HTML////////////////////////////////////////
- <!DOCTYPE html>
- <html lang="pl">
- <head>
- <meta charset="utf-8">
- <meta http-equiv="X-UA-Compatible" content="IE=edge">
- <meta name="viewport" content="width=device-width, initial-scale=1">
- <title>Tic Tac Toe</title>
- <!-- import the webpage's stylesheet -->
- <link rel="stylesheet" href="/style.css">
- <link rel="icon" href="https://cdn.glitch.com/3a64b184-c0e3-4213-8a2d-7907a1bdbabe%2Ffav.JPG?v=1623189441713">
- <!-- import the webpage's javascript file -->
- <script src="/script.js" defer></script>
- </head>
- <body>
- <h1>Tic Tac Toe</h1>
- <table>
- <!-- pierwszy wiersz w tabeli-->
- <tr>
- <td><button class="przyciskGry"></button></td>
- <td><button class="przyciskGry"></button></td>
- <td><button class="przyciskGry"></button></td>
- </tr>
- <!--drugi wiersz w tabeli-->
- <tr>
- <td><button class="przyciskGry"></button></td>
- <td><button class="przyciskGry"></button></td>
- <td><button class="przyciskGry"></button></td>
- </tr>
- <!--trzeci wiersz w tabeli-->
- <tr>
- <td><button class="przyciskGry"></button></td>
- <td><button class="przyciskGry"></button></td>
- <td><button class="przyciskGry"></button></td>
- </tr>
- </table>
- <!-- miejsce wyświetlania informacji z gry-->
- <h2 id="infoGry"></h2>
- </body>
- </html>
- ////////////////////////////////CSS////////////////////////////////////////
- @import url('https://fonts.googleapis.com/css2?family=Seymour+One&display=swap');
- body{
- background-color:#184353;/*kolor tła dla całej strony*/
- font-family: 'Seymour One', sans-serif;/*ustawiamy czcionkę dla całej strony*/
- }
- table{
- margin-left:auto;/*wyśrodkowanie tabeli*/
- margin-right:auto;/*wyśrodkowanie tabeli*/
- margin-top:60px;/*odstęp z góry*/
- }
- .przyciskGry{
- width:150px;
- height:150px;
- border:none;/*wyłączone obramowanie przycisku*/
- background-color:#171a21;
- color:#c5c3c0;
- font-size:80px;
- font-family: 'Seymour One', sans-serif;
- }
- .przyciskGry:hover{
- cursor:pointer;/*zmiana kursora myszki po najechaniu*/
- opacity:0.8;/*zmiana przezroczystości elementu*/
- }
- td{
- width:160px;
- height:160px;
- text-align:center;/*wyśrodkowanie przycisków w komórkach tabeli*/
- padding:0px;
- }
- h1,h2{
- color:#c5c3c0;/*kolor czcionki*/
- width:450px;
- margin-left:auto;
- margin-right:auto;
- text-align:center;
- text-transform:uppercase;
- }
- ////////////////////////////////////////////////////JS///////////////////////////////////////////////////
- /*grę zawsze rozpoczynać będzie krzyżyk, dzięki tej zmiennej będziemy zmieniać graczy*/
- let graczKrzyzyk=true;
- /*zmienna, dzięki której będziemy sprawdzać remis w naszej grze*/
- let licznik=0;
- /*kolor czcionki, który ustawimy dla zwycięskiej kombinacji*/
- const kolor='#d21841';
- /*zmienna mająca dostęp do NodeList czyli kolekcji węzłów, dzięki niej mamy dostęp do wszystkich naszych przycisków które posiadają klasę .przyciskGry*/
- const przyciski=document.querySelectorAll('.przyciskGry');
- /*pokazujemy uczestnikom jak wygląda taka kolekcja i zwracamy uwagę, że numeracja elementów rozpoczyna się od 0, dlatego na naszych przyciskach również wyświetlamy cyfry od 0*/
- console.log(przyciski);
- /*zmienna mająca dostęp do nagłówka h2 w którym będziemy wyświetlać info z gry*/
- const info=document.getElementById('infoGry');
- /*początkowy tekst-grę rozpoczyna X*/
- info.textContent='Aktualnie gra:X';
- /*dla każdego elementu, czyli naszego każdego przycisku, dodajemy zdarzenie na kliknięcie myszką, a następnie wywołujemy funkcję wstawZnak, do której przekazujemy konkretny obiekt przycisk*/
- przyciski.forEach(function(przycisk){
- przycisk.addEventListener('click',function(){
- console.log('kliknięto')
- wstawZnak(przycisk);
- });
- });
- /*tworzymy funkcję, która będzie ustawiać odpowiedni znak na przycisku i wyświetlać komunikat. Do funkcji będziemy przesyłać odwołanie do aktualnie klikniętego przycisku, bo to jego chcemy w danej chwili zmodyfikować*/
- function wstawZnak(przycisk){
- if (graczKrzyzyk){
- przycisk.textContent="X";
- graczKrzyzyk=false;
- info.textContent='Aktualnie gra:O';
- }
- else{
- przycisk.textContent="O";
- graczKrzyzyk=true;
- info.textContent='Aktualnie gra:X';
- }
- przycisk.disabled=true;
- sprawdzWygrana();
- }
- /*sprawdzenie zwycięstwa oraz remiusu. W grze mamy 8 kombinacji na zwycięstwo te same znaki obok siebie mogą być w 3 wierszach/ 3 kolumnach oraz 2 na skos*/
- function sprawdzWygrana(){
- licznik++;
- if(przyciski[0].textContent==przyciski[1].textContent && przyciski[1].textContent==przyciski[2].textContent &&przyciski[1].textContent!=''){
- przyciski[0].style.color=kolor;
- przyciski[1].style.color=kolor;
- przyciski[2].style.color=kolor;
- wygrana();
- }
- else if(przyciski[3].textContent==przyciski[4].textContent && przyciski[3].textContent==przyciski[5].textContent && przyciski[4].textContent!=''){
- przyciski[3].style.color=kolor;
- przyciski[4].style.color=kolor;
- przyciski[5].style.color=kolor;
- wygrana();
- }
- else if(przyciski[6].textContent==przyciski[7].textContent && przyciski[7].textContent==przyciski[8].textContent && przyciski[7].textContent!=''){
- przyciski[6].style.color=kolor;
- przyciski[7].style.color=kolor;
- przyciski[8].style.color=kolor;
- wygrana();
- }
- else if(przyciski[0].textContent==przyciski[3].textContent && przyciski[3].textContent==przyciski[6].textContent && przyciski[3].textContent!=''){
- przyciski[0].style.color=kolor;
- przyciski[3].style.color=kolor;
- przyciski[6].style.color=kolor;
- wygrana();
- }
- else if(przyciski[1].textContent==przyciski[4].textContent && przyciski[4].textContent==przyciski[7].textContent && przyciski[4].textContent!=''){
- przyciski[1].style.color=kolor;
- przyciski[4].style.color=kolor;
- przyciski[7].style.color=kolor;
- wygrana();
- }
- else if(przyciski[2].textContent==przyciski[5].textContent && przyciski[5].textContent==przyciski[8].textContent && przyciski[5].textContent!=''){
- przyciski[2].style.color=kolor;
- przyciski[5].style.color=kolor;
- przyciski[8].style.color=kolor;
- wygrana();
- }
- else if(przyciski[0].textContent==przyciski[4].textContent && przyciski[4].textContent==przyciski[8].textContent && przyciski[8].textContent!=''){
- przyciski[0].style.color=kolor;
- przyciski[4].style.color=kolor;
- przyciski[8].style.color=kolor;
- wygrana();
- }
- else if(przyciski[2].textContent==przyciski[4].textContent && przyciski[4].textContent==przyciski[6].textContent && przyciski[4].textContent!=''){
- przyciski[2].style.color=kolor;
- przyciski[4].style.color=kolor;
- przyciski[6].style.color=kolor;
- wygrana();
- }
- else if(licznik==9){
- info.textContent='remis!';
- }
- }
- /*kiedy padnie zwycięstwo dezaktywujemy wszystkie przyciski i wyświetlamy info kto zwyciężył*/
- function wygrana(){
- przyciski.forEach(function(przycisk){
- przycisk.disabled=true;
- przycisk.classList.remove('hover');
- console.log('usuwam');
- });
- if (graczKrzyzyk){
- info.textContent='wygrywa kółko';
- }
- else{
- info.textContent='wygrywa krzyżyk!';
- }
- }
Add Comment
Please, Sign In to add comment