1
1
<!DOCTYPE html>
2
- < html lang =" zh " >
2
+ < html >
3
3
< head >
4
4
< title > ็ๆฐๅญๆธธๆ</ title >
5
5
< meta charset ="utf-8 ">
110
110
</ head >
111
111
< body >
112
112
< div class ="container ">
113
- < h1 > ็ๆฐๅญๆธธๆ</ h1 >
113
+ < h1 id =" title " > ็ๆฐๅญๆธธๆ</ h1 >
114
114
< div id ="game-info ">
115
- < span > ็งฏๅ: < span id ="score "> 0</ span > </ span >
116
- < span > ๅฉไฝๆถ้ด: < span id ="timer "> 300</ span > ็ง </ span >
117
- < span > ๅฉไฝ็ๆต: < span id ="guesses-left "> 8</ span > </ span >
115
+ < span > < span id =" score-label " > ็งฏๅ:</ span > < span id ="score "> 0</ span > </ span >
116
+ < span > < span id =" timer-label " > ๅฉไฝๆถ้ด:</ span > < span id ="timer "> 300</ span > < span id =" seconds-label " > ็ง </ span > </ span >
117
+ < span > < span id =" guesses-left-label " > ๅฉไฝ็ๆต:</ span > < span id ="guesses-left "> 8</ span > </ span >
118
118
</ div >
119
- < p > ๅจไธ้ข็่กจๅไธญ่พๅ
ฅไธไธช4ไฝๆฐๅญ๏ผๆฐๅญไธ้ๅค๏ผ๏ผ็ถๅ็นๅป"็ๆต"ๆ้ฎใไฝ ๆ8ๆฌกๆบไผๅ300็งๆถ้ดใ</ p >
120
- < p > ๅฆๆๆฐๅญๅไฝ็ฝฎ้ฝๆญฃ็กฎ๏ผไฝ ไผๅพๅฐไธไธช"A"ใๅฆๆๆฐๅญๆญฃ็กฎไฝไฝ็ฝฎ้่ฏฏ๏ผไฝ ไผๅพๅฐไธไธช"B"ใ</ p >
119
+ < p id =" instruction1 " > ๅจไธ้ข็่กจๅไธญ่พๅ
ฅไธไธช4ไฝๆฐๅญ๏ผๆฐๅญไธ้ๅค๏ผ๏ผ็ถๅ็นๅป"็ๆต"ๆ้ฎใไฝ ๆ8ๆฌกๆบไผๅ300็งๆถ้ดใ</ p >
120
+ < p id =" instruction2 " > ๅฆๆๆฐๅญๅไฝ็ฝฎ้ฝๆญฃ็กฎ๏ผไฝ ไผๅพๅฐไธไธช"A"ใๅฆๆๆฐๅญๆญฃ็กฎไฝไฝ็ฝฎ้่ฏฏ๏ผไฝ ไผๅพๅฐไธไธช"B"ใ</ p >
121
121
< button id ="new-game-btn " onclick ="newGame() "> ๆฐๆธธๆ</ button >
122
122
< button id ="give-up-btn " onclick ="giveUp() "> ๆพๅผ</ button >
123
- < div id ="records "> < h3 > ็ๆต่ฎฐๅฝ:</ h3 > </ div >
124
- < label for ="guess "> ไฝ ็็ๆต:</ label >
123
+ < div id ="records "> < h3 id =" records-title " > ็ๆต่ฎฐๅฝ:</ h3 > </ div >
124
+ < label for ="guess " id =" guess-label " > ไฝ ็็ๆต:</ label >
125
125
< input type ="text " id ="guess " name ="guess " pattern ="\d{4} ">
126
- < button onclick ="submitGuess(document.getElementById('guess').value) "> ็ๆต</ button >
126
+ < button onclick ="submitGuess(document.getElementById('guess').value) " id =" guess-button " > ็ๆต</ button >
127
127
< div id ="result "> </ div >
128
128
</ div >
129
129
@@ -134,6 +134,97 @@ <h2 id="result-message"></h2>
134
134
</ div >
135
135
136
136
< script >
137
+ const translations = {
138
+ "zh" : {
139
+ "title" : "็ๆฐๅญๆธธๆ" ,
140
+ "scoreLabel" : "็งฏๅ:" ,
141
+ "timerLabel" : "ๅฉไฝๆถ้ด:" ,
142
+ "secondsLabel" : "็ง" ,
143
+ "guessesLeftLabel" : "ๅฉไฝ็ๆต:" ,
144
+ "instruction1" : "ๅจไธ้ข็่กจๅไธญ่พๅ
ฅไธไธช4ไฝๆฐๅญ๏ผๆฐๅญไธ้ๅค๏ผ๏ผ็ถๅ็นๅป\"็ๆต\"ๆ้ฎใไฝ ๆ8ๆฌกๆบไผๅ300็งๆถ้ดใ" ,
145
+ "instruction2" : "ๅฆๆๆฐๅญๅไฝ็ฝฎ้ฝๆญฃ็กฎ๏ผไฝ ไผๅพๅฐไธไธช\"A\"ใๅฆๆๆฐๅญๆญฃ็กฎไฝไฝ็ฝฎ้่ฏฏ๏ผไฝ ไผๅพๅฐไธไธช\"B\"ใ" ,
146
+ "newGame" : "ๆฐๆธธๆ" ,
147
+ "giveUp" : "ๆพๅผ" ,
148
+ "recordsTitle" : "็ๆต่ฎฐๅฝ:" ,
149
+ "guessLabel" : "ไฝ ็็ๆต:" ,
150
+ "guessButton" : "็ๆต" ,
151
+ "timeUp" : "ๆถ้ดๅฐ๏ผ" ,
152
+ "inputError" :"่ฏท่พๅ
ฅไธไธช4ไฝๆฐๅญ๏ผไธๆฐๅญไธ่ฝ้ๅคใ" ,
153
+ "correctAnswer" : "ๆญๅ๏ผไฝ ็ๅฏนไบ๏ผ" ,
154
+ "incorrectAnswer" : "ๅพ้ๆพ๏ผไฝ ็้ไบ๏ผ" ,
155
+ "giveUpMessage" : "ไฝ ๆพๅผไบ็ๆต๏ผๆญฃ็กฎ็ญๆกๆฏ" ,
156
+ "noGame" : "ๆฒกๆ่ฟ่กไธญ็ๆธธๆใ" ,
157
+ "finalAnswer" : "ๆญฃ็กฎ็ญๆกๆฏ"
158
+ } ,
159
+ "en" : {
160
+ "title" : "Number Guessing Game" ,
161
+ "scoreLabel" : "Score:" ,
162
+ "timerLabel" : "Time Left:" ,
163
+ "secondsLabel" : "seconds" ,
164
+ "guessesLeftLabel" : "Guesses Left:" ,
165
+ "instruction1" : "Enter a 4-digit number (no repeated digits) below and click the \"Guess\" button. You have 8 chances and 300 seconds." ,
166
+ "instruction2" : "If a number and position are correct, you will get an \"A\". If a number is correct but in the wrong position, you will get a \"B\"." ,
167
+ "newGame" : "New Game" ,
168
+ "giveUp" : "Give Up" ,
169
+ "recordsTitle" : "Guess Records:" ,
170
+ "guessLabel" : "Your Guess:" ,
171
+ "guessButton" : "Guess" ,
172
+ "timeUp" : "Time's Up!" ,
173
+ "inputError" :"Please enter a 4-digit number, no repeated digits." ,
174
+ "correctAnswer" : "Congratulations! You guessed correctly!" ,
175
+ "incorrectAnswer" : "Sorry! You guessed incorrectly!" ,
176
+ "giveUpMessage" : "You gave up and the correct answer is" ,
177
+ "noGame" : "No game in progress." ,
178
+ "finalAnswer" : "The correct answer is"
179
+ } ,
180
+ "ja" : {
181
+ "title" : "ๆฐๅญๅฝใฆใฒใผใ " ,
182
+ "scoreLabel" : "ในใณใข:" ,
183
+ "timerLabel" : "ๆฎใๆ้:" ,
184
+ "secondsLabel" : "็ง" ,
185
+ "guessesLeftLabel" : "ๆฎใใฎๆจๆธฌ:" ,
186
+ "instruction1" : "ไธใฎใใฉใผใ ใซ4ๆกใฎๆฐๅญ๏ผๆฐๅญใฏ้่คใใชใ๏ผใๅ
ฅๅใใใๆจๆธฌใใใฟใณใใฏใชใใฏใใฆใใ ใใใ8ๅใฎใใฃใณในใจ300็งใใใใพใใ" ,
187
+ "instruction2" : "ๆฐๅญใจไฝ็ฝฎใไธกๆนใจใๆญฃใใๅ ดๅใฏใAใใ่กจ็คบใใใพใใๆฐๅญใๆญฃใใใไฝ็ฝฎใ้้ใฃใฆใใๅ ดๅใฏใBใใ่กจ็คบใใใพใใ" ,
188
+ "newGame" : "ๆฐใใใฒใผใ " ,
189
+ "giveUp" : "ใฎใใขใใ" ,
190
+ "recordsTitle" : "ๆจๆธฌ่จ้ฒ:" ,
191
+ "guessLabel" : "ใใชใใฎๆจๆธฌ:" ,
192
+ "guessButton" : "ๆจๆธฌ" ,
193
+ "timeUp" : "ๆ้ๅใ๏ผ" ,
194
+ "inputError" :"4ๆกใฎๆฐๅญใๅ
ฅๅใใฆใใ ใใใๆฐๅญใฏ้่คใใชใใ" ,
195
+ "correctAnswer" : "ใใใงใจใ๏ผๆญฃ่งฃใงใ๏ผ" ,
196
+ "incorrectAnswer" : "ๆฎๅฟต๏ผๆญฃ่งฃใใพใใ๏ผ" ,
197
+ "giveUpMessage" : "ใฎใใขใใใใพใใใๆญฃ่งฃใฏ" ,
198
+ "noGame" : "้ฒ่กไธญใฎใฒใผใ ใฏใใใพใใใ" ,
199
+ "finalAnswer" : "ๆญฃ่งฃใฏ"
200
+ }
201
+ } ;
202
+
203
+ var translatedPage = translations [ detectLanguage ( ) ] ;
204
+ function detectLanguage ( ) {
205
+ const lang = navigator . language . slice ( 0 , 2 ) ;
206
+ return translations [ lang ] ? lang : "en" ;
207
+ }
208
+
209
+ function translatePage ( ) {
210
+
211
+ document . getElementById ( "title" ) . textContent = translatedPage . title ;
212
+ document . getElementById ( "score-label" ) . textContent = translatedPage . scoreLabel ;
213
+ document . getElementById ( "timer-label" ) . textContent = translatedPage . timerLabel ;
214
+ document . getElementById ( "seconds-label" ) . textContent = translatedPage . secondsLabel ;
215
+ document . getElementById ( "guesses-left-label" ) . textContent = translatedPage . guessesLeftLabel ;
216
+ document . getElementById ( "instruction1" ) . textContent = translatedPage . instruction1 ;
217
+ document . getElementById ( "instruction2" ) . textContent = translatedPage . instruction2 ;
218
+ document . getElementById ( "new-game-btn" ) . textContent = translatedPage . newGame ;
219
+ document . getElementById ( "give-up-btn" ) . textContent = translatedPage . giveUp ;
220
+ document . getElementById ( "records-title" ) . textContent = translatedPage . recordsTitle ;
221
+ document . getElementById ( "guess-label" ) . textContent = translatedPage . guessLabel ;
222
+ document . getElementById ( "guess-button" ) . textContent = translatedPage . guessButton ;
223
+ }
224
+
225
+ translatePage ( ) ;
226
+
227
+ // ไธ้ขๆฏไฝ ็ๆธธๆ้ป่พ็JavaScriptไปฃ็
137
228
let answer = "" , records = [ ] , score = 0 , timer , guessesLeft = 8 , isGameActive = false , timeLeft = 300 ;
138
229
139
230
const generateNumber = ( ) => Array . from ( { length : 10 } , ( _ , i ) => i )
@@ -151,7 +242,7 @@ <h2 id="result-message"></h2>
151
242
}
152
243
153
244
const renderRecords = ( ) => {
154
- let list = " <h3>็ๆต่ฎฐๅฝ: </h3>" ;
245
+ let list = ` <h3>${ translatedPage . recordsTitle } </h3>` ;
155
246
for ( let { guess, result} of records ) {
156
247
list += `<p>${ guess } : ${ result } </p>` ;
157
248
}
@@ -172,7 +263,7 @@ <h2 id="result-message"></h2>
172
263
timeLeft -- ;
173
264
updateGameInfo ( ) ;
174
265
if ( timeLeft <= 0 ) {
175
- endGame ( false , "ๆถ้ดๅฐ๏ผ" ) ;
266
+ endGame ( false , translatedPage . timeUp ) ;
176
267
}
177
268
} , 1000 ) ;
178
269
}
@@ -199,7 +290,7 @@ <h2 id="result-message"></h2>
199
290
}
200
291
if ( ! isGameActive ) return ;
201
292
if ( ! / ^ (? ! .* ( .) .* \1) \d { 4 } $ / . test ( guess ) ) {
202
- alert ( "่ฏท่พๅ
ฅไธไธช4ไฝๆฐๅญ๏ผไธๆฐๅญไธ่ฝ้ๅคใ" ) ;
293
+ alert ( translatedPage . inputError ) ;
203
294
document . getElementById ( "guess" ) . value = "" ;
204
295
document . getElementById ( "guess" ) . focus ( ) ;
205
296
return ;
@@ -212,9 +303,9 @@ <h2 id="result-message"></h2>
212
303
updateGameInfo ( ) ;
213
304
document . getElementById ( "result" ) . textContent = result ;
214
305
if ( result === "4A0B" ) {
215
- endGame ( true , "ๆญๅไฝ ๏ผไฝ ่ตขไบ๏ผ" ) ;
306
+ endGame ( true , translatedPage . correctAnswer ) ;
216
307
} else if ( guessesLeft <= 0 ) {
217
- endGame ( false , "ๅพ้ๆพ๏ผไฝ ่พไบใ" ) ;
308
+ endGame ( false , translatedPage . incorrectAnswer ) ;
218
309
}
219
310
document . getElementById ( 'guess' ) . value = "" ;
220
311
document . getElementById ( 'guess' ) . focus ( ) ;
@@ -233,16 +324,16 @@ <h2 id="result-message"></h2>
233
324
234
325
const giveUp = ( ) => {
235
326
if ( isGameActive ) {
236
- endGame ( false , "ไฝ ๆพๅผไบๆธธๆใ" ) ;
327
+ endGame ( false , translatedPage . giveUpMessage ) ;
237
328
} else {
238
- alert ( "ๆฒกๆ่ฟ่กไธญ็ๆธธๆใ" ) ;
329
+ alert ( translatedPage . noGame ) ;
239
330
}
240
331
}
241
332
242
333
const showResultPopup = ( message ) => {
243
334
document . getElementById ( "give-up-btn" ) . style . display = "none" ;
244
335
document . getElementById ( "result-message" ) . textContent = message ;
245
- document . getElementById ( "result-details" ) . textContent = `ๆญฃ็กฎ็ญๆกๆฏ ${ answer } ` ;
336
+ document . getElementById ( "result-details" ) . textContent = `${ translatedPage . finalAnswer } : ${ answer } ` ;
246
337
document . getElementById ( "overlay" ) . style . display = "block" ;
247
338
document . getElementById ( "result-popup" ) . style . display = "block" ;
248
339
document . getElementById ( "result-popup" ) . focus ( ) ;
@@ -268,4 +359,4 @@ <h2 id="result-message"></h2>
268
359
document . getElementById ( "guess" ) . focus ( ) ;
269
360
</ script >
270
361
</ body >
271
- </ html >
362
+ </ html >
0 commit comments