-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathapp.js
85 lines (78 loc) · 2.75 KB
/
app.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
const app = Vue.createApp({
data() {
return {
board: Array(15 * 15).fill(''),
currentPlayer: '✖',
gameOver: false,
winner: null,
winnerCells: [],
menuVisible: false
};
},
methods: {
makeMove(index) {
if (!this.board[index] && !this.gameOver) {
this.board[index] = this.currentPlayer;
if (this.checkWinner(index)) {
this.gameOver = true;
} else {
this.currentPlayer = this.currentPlayer === '✖' ? '⭕' : '✖';
}
}
},
checkWinner(index) {
const directions = [
[1, 0], [0, 1], [1, 1], [1, -1]
];
const currentSymbol = this.board[index];
const row = Math.floor(index / 15);
const col = index % 15;
for (let [dx, dy] of directions) {
let count = 1;
let tempCells = [index];
// Směr k pozitivnímu indexu
for (let step = 1; step < 5; step++) {
let x = row + dx * step;
let y = col + dy * step;
let nextIndex = x * 15 + y;
if (x >= 0 && y >= 0 && x < 15 && y < 15 && this.board[nextIndex] === currentSymbol) {
count++;
tempCells.push(nextIndex);
} else {
break;
}
}
// Směr k negativnímu indexu
for (let step = 1; step < 5; step++) {
let x = row - dx * step;
let y = col - dy * step;
let nextIndex = x * 15 + y;
if (x >= 0 && y >= 0 && x < 15 && y < 15 && this.board[nextIndex] === currentSymbol) {
count++;
tempCells.push(nextIndex);
} else {
break;
}
}
// Pokud je 5 symbolů v řadě
if (count >= 5) {
this.winner = currentSymbol;
this.winnerCells = tempCells;
return true;
}
}
return false;
},
resetGame() {
this.board = Array(15 * 15).fill('');
this.currentPlayer = '✖';
this.gameOver = false;
this.winner = null;
this.winnerCells = [];
},
toggleMenu() {
this.menuVisible = !this.menuVisible;
}
}
});
app.mount('#app');