View difference between Paste ID: jtQDJEzG and iy3gL5At
SHOW: | | - or go back to the newest paste.
1
============================================ HTML ============================================ 
2
<!DOCTYPE html>
3
<html lang="pl">
4
  <head>
5
    <title>Wisielec</title>
6
    <meta charset="utf-8" />
7
    <meta http-equiv="X-UA-Compatible" content="IE=edge" />
8
    <meta name="viewport" content="width=device-width, initial-scale=1" />
9
10
    <!-- import the webpage's stylesheet -->
11
    <link rel="stylesheet" href="/style.css" />
12
    <link
13
      rel="icon"
14
      href="https://cdn.glitch.com/fbbbb34f-0b8d-49c9-afe0-d55182ec0908%2Fwis.png?v=1608563089741"
15
    />
16
    <!-- import the webpage's javascript file -->
17
    <script src="/script.js" defer></script>
18
  </head>
19
  <body>
20
    <div id="container">
21
      <h1>Hangman</h1>
22
23
      <p id="game">
24
        <!--here we will display the obscured password and if we guess it right, the given letter will be revealed-->
25
      </p>
26
27
      <label>Submit a letter</label>
28
      <input
29
        id="letter"
30
        type="text"
31
        maxlength="1"
32
      /><!--field for entering letters-->
33
34
      <button id="ok">Ok</button>
35
      <!-- button that appears at the end of the game-->
36
      <button id="reset">reset</button>
37
38
      <!--here we will display messages like lost/win/no letter/repeated letter-->
39
      <h3 id="message"></h3>
40
41
      <div>
42
        <!--the place where the gallows will appear-->
43
44
        <img
45
          id="hangman"
46
          src="https://cdn.glitch.com/252ccab9-3cec-4a04-89f5-816ee2994f79%2F1.png?v=1585147286506"
47
          width="300"
48
        />
49
      </div>
50
    </div>
51
  </body>
52
</html>
53
54
============================================ JS ============================================ 
55
//words array
56
57
const words = ["giants", "function", "hangman"];
58
59
// random word from the words array
60
const word = words[Math.floor(Math.random() * words.length)];
61
62
//table for addresses to pictures
63
const picturesArray = [
64
  "https://cdn.glitch.com/252ccab9-3cec-4a04-89f5-816ee2994f79%2F0.png?v=1623760735527",
65
  "https://cdn.glitch.com/252ccab9-3cec-4a04-89f5-816ee2994f79%2F1.png?v=1623760735604",
66
  "https://cdn.glitch.com/252ccab9-3cec-4a04-89f5-816ee2994f79%2F2.png?v=1623760735890",
67
  "https://cdn.glitch.com/252ccab9-3cec-4a04-89f5-816ee2994f79%2F3.png?v=1623760735703",
68
  "https://cdn.glitch.com/252ccab9-3cec-4a04-89f5-816ee2994f79%2F4.png?v=1623760735867",
69
  "https://cdn.glitch.com/252ccab9-3cec-4a04-89f5-816ee2994f79%2F5.png?v=1623760735857",
70
  "https://cdn.glitch.com/252ccab9-3cec-4a04-89f5-816ee2994f79%2F6.png?v=1623760735876",
71
  "https://cdn.glitch.com/252ccab9-3cec-4a04-89f5-816ee2994f79%2F7.png?v=1623760735751",
72
  "https://cdn.glitch.com/252ccab9-3cec-4a04-89f5-816ee2994f79%2F8.png?v=1623760735918",
73
  "https://cdn.glitch.com/252ccab9-3cec-4a04-89f5-816ee2994f79%2F9.png?v=1623760735966",
74
  "https://cdn.glitch.com/252ccab9-3cec-4a04-89f5-816ee2994f79%2F10.png?v=1623760735998",
75
];
76
77
// the answers array contains an obscure password which we will gradually reveal in the game
78
const answers = [];
79
80
// a variable indicating whether the letter was guessed correctly after being entered
81
let ifGuessed = false;
82
83
//the chances in the game must be such a value because we have so many pictures
84
let chances = 11;
85
86
//an array storing the letters already used
87
88
const used = [];
89
90
//variable counting the number of spaces between words
91
let spaces = 0;
92
93
//preparing the covered drawn word
94
for (let i = 0; i < word.length; i++) {
95
  if (word[i] == " ") {
96
    answers[i] = "|";
97
    spaces++;
98
  } else {
99
    answers[i] = "_";
100
  }
101
}
102
103
//variable storing info how many letters are left to guess
104
let remainingLetters = word.length - spaces;
105
106
//display an array of the covered word each element in the array i.e. _ is joined with a space
107
document.getElementById("game").textContent = answers.join(" ");
108
109
// the event for clicking the ok button
110
document.getElementById("ok").addEventListener("click", function () {
111
  // before each new letter approval, set this variable to false
112
  ifGuessed = false;
113
114
  // we clear the display of the message
115
  document.getElementById("message").textContent = "";
116
117
  //variable storing the player's letter
118
  const guess = document.getElementById("letter").value;
119
120
  document.getElementById("letter").value = "";
121
122
  if (guess.length == 0) {
123
    document.getElementById("message").textContent = "Please enter one letter.";
124
  } else if (used.includes(guess)) {
125
    document.getElementById("message").textContent =
126
      "You already entered this letter.";
127
  } else {
128
    used.push(guess);
129
    //we search the given word letter by letter and check if somewhere there is the same letter as our shot if so, we expose that letter in the answer array
130
    for (let j = 0; j < word.length; j++) {
131
      if (word[j] == guess) {
132
        ifGuessed = true;
133
        answers[j] = guess; //recover the letter in the password
134
        remainingLetters;
135
136
        //update the display of our password
137
        document.getElementById("game").textContent = answers.join(" ");
138
      }
139
    }
140
141
    //we search the given word letter by letter and check if somewhere there is the same letter as our shot if so, we reveal in the answer array that letter
142
    for (let j = 0; j < word.length; j++) {
143
      if (word[j] == guess) {
144
        ifGuessed = true;
145
        answers[j] = guess; //odsłonięcie litery w haśle
146
        remainingLetters--;
147
148
        //update the display of our password
149
        document.getElementById("game").textContent = answers.join(" ");
150
      }
151
    }
152
153
    // win
154
155
    if (remainingLetters == 0) {
156
      document.getElementById("ok").disabled = true;
157
      document.getElementById("letter").disabled = true;
158
      document.getElementById("message").textContent =
159
        "Bravo the guessed password is: " + word;
160
    }
161
162
    //losing the chance, drawing a hangman
163
164
    if (ifGuessed == false) {
165
      setPicture();
166
      chances--;
167
168
      //losing condition
169
      if (chances == 0) {
170
        document.getElementById("ok").disabled = true;
171
        document.getElementById("letter").disabled = true;
172
        document.getElementById("message").textContent =
173
          "You lost, the word is: " + word;
174
      }
175
    }
176
  }
177
});
178
179
//we search the given word letter by letter and check if somewhere there is the same letter as our shot if so, we reveal in the answer array that letter
180
181
function setPicture() {
182
  //select the appropriate image address from the array and set as image source
183
  document.getElementById("hangman").src = picturesArray[chances - 1];
184
  //display the image
185
  document.getElementById("hangman").style.display = "block";
186
}
187
188
document.getElementById("reset").addEventListener("click", function () {
189
  //refreshing the page
190
  window.location.reload();
191
});
192
193
============================================ CSS ============================================ 
194
@import url("https://fonts.googleapis.com/css2?family=Black+Ops+One&family=Bungee+Outline&display=swap");
195
196
body {
197
  font-family: "Black Ops One", cursive;
198
  font-size: 30px;
199
}
200
201
h1 {
202
  color: #373fff;
203
}
204
205
img {
206
  display: none;
207
}
208
209
#container {
210
  width: 1000px;
211
  margin-left: auto;
212
  margin-right: auto;
213
  text-align: center;
214
}
215
216
input {
217
  font-family: "Black Ops One", cursive;
218
  width: 50px;
219
  height: 50px;
220
  font-size: 35px;
221
}
222
223
button {
224
  width: 200px;
225
  height: 50px;
226
  background-color: #fa4a0a;
227
  color: white;
228
  cursor: pointer;
229
  font-size: 16px;
230
  border-radius: 4px;
231
  transition-duration: 0.4s;
232
  border: 2px solid #fa4a0a;
233
  text-transform: uppercase;
234
  font-family: "Black Ops One", cursive;
235
}
236
237
button:hover {
238
  background-color: white;
239
  color: black;
240
}
241
242
p {
243
  letter-spacing: 4px;
244
}
245
246
.active {
247
  display: block;
248
}
249
250
.hidden {
251
  display: none;
252
}
253