Paweł Łaba commited on
Commit
cc1da8d
·
1 Parent(s): 8a9ddbd
Files changed (1) hide show
  1. public/script.js +97 -11
public/script.js CHANGED
@@ -1,15 +1,101 @@
1
- const $ = e => document.querySelector(e);
 
 
 
 
 
2
 
3
- for(let i = 0; i < 10; i++) {
4
- const div = document.createElement('div');
5
- div.className = 'cell';
6
- div.id = `i`+i;
7
- $('.board').appendChild(div);
 
 
 
8
  }
9
 
10
- fetch('/status')
11
- .then(res => res.json())
12
- .then(data => {
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
13
  console.log(data);
14
-
15
- });
 
 
 
 
 
 
1
+ const board = Array(9).fill(0);
2
+ const winPatterns = [
3
+ [0, 1, 2], [3, 4, 5], [6, 7, 8], // poziome
4
+ [0, 3, 6], [1, 4, 7], [2, 5, 8], // pionowe
5
+ [0, 4, 8], [2, 4, 6] // przekątne
6
+ ];
7
 
8
+ function checkWin(board) {
9
+ for (let pattern of winPatterns) {
10
+ const [a, b, c] = pattern;
11
+ if (board[a] !== 0 && board[a] === board[b] && board[a] === board[c]) {
12
+ return board[a];
13
+ }
14
+ }
15
+ return 0;
16
  }
17
 
18
+ function initializeBoard() {
19
+ const boardElement = document.querySelector('.board');
20
+ boardElement.innerHTML = '';
21
+
22
+ for(let i = 0; i < 9; i++) {
23
+ const div = document.createElement('div');
24
+ div.className = 'cell';
25
+ div.id = 'cell-' + i;
26
+ div.addEventListener('click', () => handleMove(i));
27
+ boardElement.appendChild(div);
28
+ }
29
+
30
+ updateBoardDisplay();
31
+ }
32
+
33
+ function updateBoardDisplay() {
34
+ board.forEach((value, index) => {
35
+ const cell = document.getElementById('cell-' + index);
36
+ cell.className = 'cell';
37
+ if (value === 1) {
38
+ cell.classList.add('o');
39
+ } else if (value === -1) {
40
+ cell.classList.add('x');
41
+ }
42
+ });
43
+
44
+ const winner = checkWin(board);
45
+ const messageElement = document.querySelector('.message');
46
+ if (winner === 1) {
47
+ messageElement.textContent = 'Komputer wygrał!';
48
+ } else if (winner === -1) {
49
+ messageElement.textContent = 'Wygrałeś!';
50
+ } else if (!board.includes(0)) {
51
+ messageElement.textContent = 'Remis!';
52
+ } else {
53
+ messageElement.textContent = '';
54
+ }
55
+ }
56
+
57
+ async function handleMove(index) {
58
+ if (board[index] !== 0 || checkWin(board)) return;
59
+
60
+ // Ruch gracza
61
+ board[index] = -1;
62
+ updateBoardDisplay();
63
+
64
+ if (checkWin(board)) return;
65
+
66
+ try {
67
+ // Wysłanie stanu planszy do API
68
+ const response = await fetch('/move', {
69
+ method: 'POST',
70
+ headers: {
71
+ 'Content-Type': 'application/json'
72
+ },
73
+ body: JSON.stringify({ board: board })
74
+ });
75
+
76
+ const data = await response.json();
77
+
78
+ if (data.status === 'success' && data.move >= 0 && data.move < 9) {
79
+ // Ruch komputera
80
+ board[data.move] = 1;
81
+ updateBoardDisplay();
82
+ }
83
+ } catch (error) {
84
+ console.error('Błąd podczas komunikacji z API:', error);
85
+ }
86
+ }
87
+
88
+ // Inicjalizacja gry i pobranie aktualnego stanu
89
+ async function initGame() {
90
+ try {
91
+ const response = await fetch('/status');
92
+ const data = await response.json();
93
+ // Tutaj możesz zaktualizować planszę zgodnie z danymi z serwera
94
  console.log(data);
95
+ } catch (error) {
96
+ console.error('Błąd podczas pobierania stanu gry:', error);
97
+ }
98
+ initializeBoard();
99
+ }
100
+
101
+ initGame();