word-games-theme 1.2.1 → 1.2.4

Sign up to get free protection for your applications and to get access to all the features.
data/assets/js/game.js CHANGED
@@ -3,37 +3,280 @@ let gameBoard = document.querySelector(".game-board")
3
3
  let serachValue = params.get('q')
4
4
  let decodeBase64 = atob(serachValue)
5
5
  let word = decodeBase64
6
- let gameOver = false;
7
-
8
- console.log(word.length)
9
-
10
- var height = 6;
11
- var width = 5;
12
-
13
- var row = 0;
14
- var col = 0;
15
-
16
- // for (let h = 0; h < height; h++) {
17
- for (let index = 0; index < word.length; index++) {
18
- let tile = document.createElement("div");
19
- tile.classList.add("tile");
20
- tile.innerText = "";
21
- let div = document.createElement("div");
22
- div.classList.add("d-flex")
23
- div.appendChild(tile)
24
- gameBoard.appendChild(div);
25
- console.log(tile)
26
- }
27
- // }
28
- function createTiles() {
29
- for (let h = 0; h < height; h++) {
30
- for (let w = 0; w < width; w++) {
31
- let tile = document.createElement("div");
32
- tile.id = h.toString() + "-" + w.toString();
33
- tile.classList.add("tile");
34
- tile.innerText = "";
35
- gameBoard.appendChild(tile);
6
+ let targetWord = word.toLocaleLowerCase()
7
+ let ANIMATION_DURATION = 500
8
+ let wordLength = 5
9
+ let keyboard = document.querySelector(".game-keyboard")
10
+ let alertContainer = document.querySelector(".alert-container")
11
+ let errorMsg = document.querySelector("#errorMsg")
12
+ let gameResult = document.querySelector(".gameResult")
13
+ let openPopup = document.querySelector(".open-popup")
14
+ let wordleGameShareLink = document.querySelector(".wordle-game-share-link")
15
+ let wordleGameCopyLink = document.querySelector(".wordle-game-copy-link")
16
+ let ResutlGuessWord = document.querySelector(".guess-word")
17
+ let answer = document.querySelector("#answer")
18
+ let facebookSHareLink = document.querySelector(".facebook-share-link")
19
+ let twitterSHareLink = document.querySelector(".twitter-share-link")
20
+ let whatsappSHareLink = document.querySelector(".whatsapp-share-link")
21
+
22
+ document.querySelector(".navbar").style.display = "none"
23
+ document.querySelector(".tools_headings").style.display = "none"
24
+ document.querySelector(".ads_layout").style.display = "none"
25
+ document.querySelector(".relatedPosts").style.display = "none"
26
+ document.querySelector(".footer-section").style.display = "none"
27
+ document.querySelector(".rating-tool").style.display = "none"
28
+
29
+
30
+ let dictionary
31
+ let attempt = 0
32
+ async function getData() {
33
+ const response = await fetch("/dictionary.json")
34
+ const data = await response.json()
35
+ dictionary = data
36
+ }
37
+ getData()
38
+
39
+ const handleClick = (e) => {
40
+ if (e.target.matches("[data-key]")) {
41
+ pressKey(e.target.dataset.key)
42
+ return
43
+ }
44
+ if (e.target.matches("[data-enter]")) {
45
+ handleSubmit()
46
+ return
47
+ }
48
+ if (e.target.matches("[data-delete]")) {
49
+ deleteKey()
50
+ return
51
+ }
52
+ }
53
+ const handleKeyPress = (e) => {
54
+ if (e.key === "Enter") {
55
+ handleSubmit()
56
+ return
57
+ }
58
+ if (e.key === "Delete" || e.key === "Backspace") {
59
+ deleteKey()
60
+ return
61
+ }
62
+
63
+ if (e.key.match(/^[a-zA-Z]$/)) {
64
+ pressKey(e.key)
65
+ return
66
+ }
67
+ }
68
+ const getActiveTiles = () => {
69
+ return gameBoard.querySelectorAll('[data-state="active"]')
70
+ }
71
+ const pressKey = (key) => {
72
+ const activeTiles = getActiveTiles()
73
+ if (activeTiles.length >= wordLength) return
74
+ const nextTile = gameBoard.querySelector(":not([data-letter])")
75
+ nextTile.dataset.letter = key.toLowerCase()
76
+ nextTile.dataset.state = "active"
77
+ nextTile.classList.add("popAni")
78
+ nextTile.innerText = key
79
+ nextTile.style.border = "2px solid #a7adc0"
80
+ }
81
+ const deleteKey = () => {
82
+ const activeTiles = getActiveTiles()
83
+ const lastTile = activeTiles[activeTiles.length - 1]
84
+ if (lastTile == null) return
85
+ lastTile.textContent = ""
86
+ delete lastTile.dataset.state
87
+ delete lastTile.dataset.letter
88
+ lastTile.style.border = "2px solid #dee1e9"
89
+ lastTile.classList.remove("popAni")
90
+ }
91
+ const handleSubmit = () => {
92
+ const allTiles = [...getActiveTiles()]
93
+ if (allTiles.length !== wordLength) {
94
+ showAlertMessage("Not enough letters")
95
+ shakeTiles(allTiles)
96
+ return
97
+ }
98
+ const guessWord = allTiles.reduce((word, tile) => {
99
+ return word + tile.dataset.letter
100
+ }, "")
101
+
102
+
103
+ if (guessWord === targetWord) {
104
+ } else {
105
+ if (!dictionary.includes(guessWord)) {
106
+ showAlertMessage("Not a valid word")
107
+ shakeTiles(allTiles)
108
+ return
109
+ }
110
+ }
111
+
112
+ stopAllEventListeners()
113
+ let matchLetters = [...targetWord]
114
+ let matchedLettersCount = matchLetters.reduce((obj, letter) => {
115
+ if (obj[letter]) {
116
+ obj[letter]++;
117
+ return obj;
118
+ }
119
+
120
+ obj[letter] = 1;
121
+ return obj;
122
+ }, {})
123
+ evaluateTiles(allTiles, matchedLettersCount, guessWord)
124
+ }
125
+ const evaluateTiles = (allTiles, matchedLettersCount, guessWord) => {
126
+ let reEvaluate = []
127
+ allTiles.map((tile, index) => {
128
+
129
+ if (targetWord !== guessWord) {
130
+ setTimeout(() => {
131
+ tile.classList.add("flip")
132
+ }, (index * ANIMATION_DURATION) / 2)
133
+
134
+ tile.addEventListener(
135
+ "transitionend",
136
+ () => {
137
+ tile.classList.remove("flip")
138
+ })
139
+ }
140
+
141
+
142
+ let letter = tile.dataset.letter
143
+ let key = keyboard.querySelector(`[data-key="${letter}"i]`)
144
+ if (targetWord[index] === letter) {
145
+ tile.dataset.state = "correct-spot"
146
+ key.dataset.state = "correct-spot"
147
+ matchedLettersCount[letter]--;
148
+ return
36
149
  }
150
+ reEvaluate.push(tile)
151
+ })
152
+ reEvaluate.map((tile) => {
153
+ let letter = tile.dataset.letter
154
+ let key = keyboard.querySelector(`[data-key="${letter}"i]`)
155
+ if (matchedLettersCount[letter] > 0) {
156
+ tile.dataset.state = "wrong-spot"
157
+ key.dataset.state = "wrong-spot"
158
+ matchedLettersCount[letter]--;
159
+ }
160
+ else {
161
+ tile.dataset.state = "wrong-word"
162
+ key.dataset.state = "wrong-word"
163
+ }
164
+
165
+ })
166
+ startAllEventListeners()
167
+ gameOver(guessWord, allTiles)
168
+ }
169
+ const shakeTiles = (tiles) => {
170
+ tiles.forEach(tile => {
171
+ tile.classList.add("shake")
172
+ tile.addEventListener('animationend', () => {
173
+ // console.log('Animation ended');
174
+ tile.classList.remove("shake")
175
+ });
176
+ })
177
+ }
178
+ const gameOver = (guessWord, tiles) => {
179
+ attempt++
180
+ const danceTiles = (tiles) => {
181
+ tiles.forEach((tile) => {
182
+ tile.classList.add("dance")
183
+ tile.addEventListener("animationend", () => {
184
+ tile.classList.remove("dance")
185
+ })
186
+ })
187
+ }
188
+ if (guessWord === targetWord) {
189
+ // console.log(`Wordle guessed in ${attempt}/6!`)
190
+ facebookSHareLink.setAttribute("href",
191
+ `https://www.facebook.com/share.php?u=${window.location.protocol + "//" + window.location.hostname}/word-game-play?q=${(serachValue)}&quote=
192
+ I guessed this wordle in ${attempt}/6 tries. Can you do better ?
193
+ Try this wordle:
194
+ ${window.location.protocol + "//" + window.location.hostname}/word-game-play?q=${(serachValue)}`)
195
+
196
+ twitterSHareLink.setAttribute("href",
197
+ `https://www.twitter.com/compose/tweet?&text=I guessed this wordle in ${attempt}/6 tries.
198
+ Can you do better ? Try this wordle: ${window.location.protocol + "//" + window.location.hostname}/word-game-play?q=${(serachValue)}`)
199
+
200
+ whatsappSHareLink.setAttribute("href", `whatsapp://send?text=I guessed this wordle in ${attempt}/6 tries.
201
+ Can you do better ? Try this wordle: ${window.location.protocol + "//" + window.location.hostname}/word-game-play?q=${(serachValue)}`)
202
+
203
+ startConfetti()
204
+ showAlertMessage("You WON! 🏆")
205
+ stopAllEventListeners()
206
+ danceTiles(tiles)
207
+ setTimeout(() => {
208
+ openPopup.click()
209
+ stopConfetti()
210
+ }, 1500);
211
+ return
212
+ }
213
+ const remainingTiles = gameBoard.querySelectorAll(":not([data-letter])")
214
+ if (remainingTiles.length === 0) {
215
+ facebookSHareLink.setAttribute("href",
216
+ `https://www.facebook.com/share.php?u=${window.location.protocol + "//" + window.location.hostname}/word-game-play?q=${(serachValue)}&quote=
217
+ I guessed this wordle in ${attempt}/6 tries. Can you do better ?
218
+ Try this wordle:
219
+ ${window.location.protocol + "//" + window.location.hostname}/word-game-play?q=${(serachValue)}`)
220
+ twitterSHareLink.setAttribute("href",
221
+ `https://www.twitter.com/compose/tweet?&text=I guessed this wordle in ${attempt}/6 tries.
222
+ Can you do better ? Try this wordle: ${window.location.protocol + "//" + window.location.hostname}/word-game-play?q=${(serachValue)}`)
223
+ whatsappSHareLink.setAttribute("href", `whatsapp://send?text=I guessed this wordle in ${attempt}/6 tries.
224
+ Can you do better ? Try this wordle: ${window.location.protocol + "//" + window.location.hostname}/word-game-play?q=${(serachValue)}`)
225
+ showAlertMessage("You LOST!")
226
+ setTimeout(() => {
227
+ openPopup.click()
228
+ }, 1000);
229
+ stopAllEventListeners()
37
230
  }
231
+
232
+ }
233
+ const startAllEventListeners = () => {
234
+ document.addEventListener("keydown", handleKeyPress)
235
+ document.addEventListener("click", handleClick)
236
+ }
237
+ startAllEventListeners()
238
+
239
+ const stopAllEventListeners = () => {
240
+ document.removeEventListener("click", handleClick)
241
+ document.removeEventListener("keydown", handleKeyPress)
38
242
  }
39
- // createTiles();
243
+ const showAlertMessage = (msg) => {
244
+ if (msg === "You LOST!") {
245
+ answer.innerText = "The answer was"
246
+ }
247
+
248
+ ResutlGuessWord.innerHTML = targetWord
249
+ gameResult.innerHTML = msg
250
+ errorMsg.innerHTML = msg
251
+
252
+ alertContainer.classList.add("active-alert")
253
+ setTimeout(() => {
254
+ alertContainer.classList.remove("active-alert")
255
+ }, 1000)
256
+ }
257
+ const copyToClipboard = (str) => {
258
+ try {
259
+ const el = document.createElement('textarea')
260
+ el.value = str
261
+ document.body.appendChild(el)
262
+ el.select()
263
+ document.execCommand('copy')
264
+ document.body.removeChild(el)
265
+ errorMsg.innerHTML = "Copied !"
266
+ alertContainer.classList.add("active-alert")
267
+ setTimeout(() => {
268
+ alertContainer.classList.remove("active-alert")
269
+ }, 1000)
270
+ } catch (error) {
271
+ console.log(error)
272
+ }
273
+ }
274
+ wordleGameCopyLink.addEventListener('click', () => {
275
+ copyToClipboard(`${window.location.protocol + "//" + window.location.hostname}/word-game-play?q=${(serachValue)}`)
276
+ })
277
+ wordleGameShareLink.addEventListener('click', () => {
278
+ copyToClipboard(`${window.location.protocol + "//" + window.location.hostname}/word-game-play?q=${(serachValue)}`)
279
+ })
280
+
281
+
282
+
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: word-games-theme
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.2.1
4
+ version: 1.2.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - manpreet-appscms
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2022-04-15 00:00:00.000000000 Z
11
+ date: 2022-04-19 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: jekyll
@@ -181,6 +181,7 @@ files:
181
181
  - _includes/xyzpages/xyzFooter.html
182
182
  - _layouts/allpages.html
183
183
  - _layouts/autogencontent.html
184
+ - _layouts/blank.html
184
185
  - _layouts/blog.html
185
186
  - _layouts/categories.html
186
187
  - _layouts/default.html
@@ -212,6 +213,7 @@ files:
212
213
  - assets/css/wordScrabble.css
213
214
  - assets/css/wordleSolver.css
214
215
  - assets/css/wordsInCertainPosition.css
216
+ - assets/images/404.svg
215
217
  - assets/images/Ankita.webp
216
218
  - assets/images/Anushka.webp
217
219
  - assets/images/Arjyahi.webp
@@ -223,8 +225,11 @@ files:
223
225
  - assets/images/bg_elements.png
224
226
  - assets/images/bg_elements.svg
225
227
  - assets/images/board-game.png
228
+ - assets/images/close.png
229
+ - assets/images/copy.svg
226
230
  - assets/images/facebook-square.svg
227
231
  - assets/images/facebook.svg
232
+ - assets/images/facebooks.svg
228
233
  - assets/images/footer.png
229
234
  - assets/images/footer2-bg.webp
230
235
  - assets/images/header.svg
@@ -260,7 +265,9 @@ files:
260
265
  - assets/images/twitter-square.svg
261
266
  - assets/images/twitter.svg
262
267
  - assets/images/twitter2.svg
268
+ - assets/images/twitters.svg
263
269
  - assets/images/uo.svg
270
+ - assets/images/whatsapp.svg
264
271
  - assets/images/window-close.png
265
272
  - assets/images/window-close.svg
266
273
  - assets/images/word-games-logo.svg
@@ -275,6 +282,7 @@ files:
275
282
  - assets/js/advancedFilter.js
276
283
  - assets/js/advancedFilter2.js
277
284
  - assets/js/advancedFilter3.js
285
+ - assets/js/confetti.js
278
286
  - assets/js/createWordle.js
279
287
  - assets/js/game.js
280
288
  - assets/js/leftNav.js