-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathscript.js
142 lines (102 loc) · 3.28 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
var rows = 5;
var columns = 5;
var currTile;
var otherTile;
var turns = 0;
var q = 0;
window.onload = function() {
for (let r = 0; r < rows; r++) {
for (let c = 0; c < columns; c++) {
let tile = document.createElement("img");
tile.src = "./images/blank.jpg";
q++;
//DRAG FUNCTIONALITY
tile.addEventListener("dragstart", dragStart);
tile.addEventListener("dragover", dragOver);
tile.addEventListener("dragenter", dragEnter);
tile.addEventListener("dragleave", dragLeave);
tile.addEventListener("drop", dragDrop);
tile.addEventListener("dragend", dragEnd);
document.getElementById("board").append(tile); //Appended tiles with BLANK image on our blank canvas i.e Board
}
}
//PIECES
let pieces = [];
for (let i = 1; i <= rows * columns; i++) {
pieces.push(i.toString()); //Pushed numbers from 1-25 in Array : pieces
}
pieces.reverse();
for (let i = 0; i < pieces.length; i++) {
let j = Math.floor(Math.random() * pieces.length); //Generates Randomised indices i.e a number between 0-24
//swapping the element at present index, with the element at randomised index j
let tmp = pieces[i];
pieces[i] = pieces[j];
pieces[j] = tmp;
}
for (let i = 0; i < pieces.length; i++) {
let tile = document.createElement("img");
tile.src = "./images/" + pieces[i] + ".jpeg"; // appending the picture pieces according to their corresponding number in the array :Pieces ( which had been randomised)
//DRAG FUNCTIONALITY
tile.addEventListener("dragstart", dragStart);
tile.addEventListener("dragover", dragOver);
tile.addEventListener("dragenter", dragEnter);
tile.addEventListener("dragleave", dragLeave);
tile.addEventListener("drop", dragDrop);
tile.addEventListener("dragend", dragEnd);
document.getElementById("pieces").append(tile);
}
}
function isWin() {
var t = -1;
q = 0;
for (let i = 1; i <= rows * columns; i++) {
if (document.getElementById("board").children[i - 1].src.match("/images/" + i + ".jpeg")) {
q++;
}
}
if (q === 25) {
t = 1;
} else {
t = 0;
}
return t;
}
//DRAG TILES
function dragStart() {
currTile = this;
}
function dragOver(e) {
e.preventDefault();
}
function dragEnter(e) {
e.preventDefault();
}
function dragLeave() {
}
function dragDrop() {
otherTile = this;
}
var closePopupBtn = document.querySelector(".popup-close");
var popUp = document.querySelector(".popup");
var overlayy = document.querySelector(".popup-overlay");
closePopupBtn.addEventListener("click", function() {
overlayy.style.display = "none";
popUp.style.top = "-150%";
});
function dragEnd() {
if (currTile.src.includes("blank")) {
return;
}
let currImg = currTile.src;
let otherImg = otherTile.src;
currTile.src = otherImg;
otherTile.src = currImg;
turns += 1;
document.getElementById("turns").innerText = turns;
if (isWin()) {
popUp.style.top = "50%";
overlayy.style.display = "block";
//console.log("You won");
}
}
var q = 0;