-
Notifications
You must be signed in to change notification settings - Fork 0
/
script.js
168 lines (149 loc) · 6.41 KB
/
script.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
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
$(document).ready(() => {
//putanja svih slika (src)
let pictures =
[
"./db/goku.jpg", "./db/krillin.jpg", "./db/vegeta.jpeg",
"./db/gohan.jpg", "./db/roshi.jpg", "./db/chichi.jpg",
"./db/yamcha.jpg", "./db/chautzu.jpg", "./db/frieza.jpg",
"./db/cell.jpg", "./db/android18.jpg", "./db/kidbuu.jpg",
"./db/pikolo.jpg", "./db/tien.jpeg", "./db/trunks.jpg"
];
//deklarisem promenljivu timer da bi mogla da se koristi u dve razlicite funkcije
let timer;
$("#difficulty").change(() => {
let numOfPictures = $("#difficulty").val();
let board = $("#board");
//prvo se cisti tabla svaki put kad se promeni difficulty
board.empty();
//dodajem kartice
for (let i = 0; i < numOfPictures / 2; i++) {
for (let y = 0; y < 2; y++) {
board.append("<div class='memoryCard'><img class='cardFront' src='" +
pictures[i] + "'><img class='cardBack' src='./db/kugla.jpg' alt='kugla'></div>");
}
}
//rotira karticu da se vidi na pocetku
$(".memoryCard").addClass(" rotate");
});
$("#startBtn").click(() => {
//.val() vraca string pa ga pretvaram u broj
let numOfPictures = parseInt($("#difficulty").val());
let randomNumbers = [];
let disableBoard = false;
let timeRemaining = 59;
let timerField = $("#timer");
let endGameText = $("#overlay");
let flippedCard = false;
let firstFlipped;
let secondFlipped;
let totalMoves = 0;
let cardsMatched = 0;
let counter = $("#moves");
if (numOfPictures != 0) {
//ne moze vise da se menja difficulty
$("#difficulty").prop('disabled', true);
//iskljucujem start dugme da ne moze vise da se pritiska
$("#startBtn").prop('disabled', true);
//okrecem karte
$(".memoryCard").removeClass(" rotate");
//pravim niz sa random brojevima
while (randomNumbers.length < numOfPictures) {
var number = Math.floor(Math.random() * numOfPictures) + 1;
if (randomNumbers.indexOf(number) === -1) randomNumbers.push(number);
}
//mesam karte sa nizom random brojeva i orderom
function suffleCards() {
for (let i = 0; i < numOfPictures; i++) {
$("#board .memoryCard:eq(" + i + ")").css("order", randomNumbers[i]);
}
}
//settimeout je da se karte ne bi videle na kratko kad se promesaju
setTimeout(suffleCards, 200);
//Tajmer
function countdown() {
timerField.text(timeRemaining);
timeRemaining--;
if (timeRemaining < 0) {
clearInterval(timer);
$("#endGame").text("DEFEAT!");
endTextOn();
//ne moze vise da se klikce na kartice
disableBoard = true;
}
}
timer = setInterval(countdown, 1000);
//fukncije koje pokazuju i sklanjaju tekst
function endTextOn() {
endGameText.css("display", "block");
}
function endTextOff() {
endGameText.css("display", "none");
}
//kad se pojavi tekst, na klik se sklanja
endGameText.click(endTextOff);
//okrecem kartice na klik
$(".memoryCard").click(function () {
//ako postoje vec dve otkrivene ceka se da se vrate ili ako je isteklo vreme
if (disableBoard) {
return false;
}
//dodaje klasu rotate na kliknutu karticu
$(this).addClass(" rotate");
//da li je prvi klik, ako ne postoje okrenute karte
if (!flippedCard) {
flippedCard = true;
firstFlipped = $(this);
//ako nije onda je drugi
} else {
//ovde pazimo da se nije dva puta kliknulo na istu kartu
//ako je karta na koju smo kliknuli ista kao prva na koju smo kliknuli onda false
if ($(this).css("order") === firstFlipped.css("order")) {
return false;
}
secondFlipped = $(this);
flippedCard = false;
//proveravam da li se slike poklapaju kod okrenutih kartica
if (firstFlipped.children(".cardFront").attr("src") ===
secondFlipped.children(".cardFront").attr("src")) {
//iskljucujemo klik efekat na uparenim karticama
firstFlipped.off("click");
secondFlipped.off("click");
//registruje se pogodak, broji potez i ispisuje na stranici
cardsMatched++;
totalMoves++;
counter.text(totalMoves);
} else {
//iskljucuje se tabla da se ne okrecu karte dok se ove dve ne vrate
disableBoard = true;
//kartice se okrecu, settimeout je da bi se videle na kratko
function turnCards() {
firstFlipped.removeClass("rotate");
secondFlipped.removeClass("rotate");
disableBoard = false;
}
setTimeout(turnCards, 1000);
totalMoves++;
counter.text(totalMoves);
}
}
if (cardsMatched * 2 === numOfPictures) {
clearInterval(timer);
$("#endGame").text("VICTORY!");
endTextOn();
}
});
} else {
window.alert("Please choose difficulty level!");
}
});
//dugme za restart igre
$("#restartBtn").click(function () {
$("#board").empty();
$("#difficulty").prop('disabled', false);
$("#difficulty").val("0");
$("#startBtn").prop('disabled', false);
clearInterval(timer);
$("#moves").text("0");
$("#timer").text("60");
});
});