質問編集履歴

1

HTMLの16-43行目を変えました。文字数の関係で都道府県のjsは消しました。

2023/01/23 15:50

投稿

yore
yore

スコア2

test CHANGED
File without changes
test CHANGED
@@ -1,9 +1,8 @@
1
1
  ### 前提
2
2
  JavaScript,HTML,CSSを使ってタイピングゲームを作っています
3
- お題セレクトボタンを作りゲームをスタートさせたいです
3
+ お題セレクトボタンを作りゲームをスタートさせたいです
4
- 文字数が多くなってしまうため、タイピング問題の量を減らしています
5
4
  ### 実現したいこと
6
- セレクトボタンでお題を選択したらゲームが始まるようにしたい
5
+ セレクトボタンでゲームが始まるようにしたい
7
6
  ### 該当のソースコード
8
7
 
9
8
  ```HTML
@@ -22,12 +21,34 @@
22
21
  <p class="title">TYPING GAME</p>
23
22
  </div>
24
23
  <div class="wrap1">
25
- <select name="">
24
+ <select name="" id="odai" onchange="myfunc()">
26
- <option value="">お題</option>
25
+ <option disabled selected> </option>
27
- <option value="ことわざ" onclick="ready1()" style="text-align: center">ことわざ</option>
26
+ <option value="ことわざ" style="text-align: center">ことわざ</option>
28
- <option value="国" onclick="ready2()" style="text-align: center">国</option>
27
+ <option value="国" style="text-align: center">国</option>
29
- <option value="都道府県" onclick="ready3()" style="text-align: center">都道府県</option>
28
+ <option value="都道府県" style="text-align: center">都道府県</option>
30
29
  </select>
30
+ <script type="text/javascript">
31
+ function myfunc() {
32
+ var value = document.getElementById("odai").value;
33
+ var target = document.getElementById("target");
34
+ if(value === 'ことわざ'){
35
+ var kotowaza = function ready1(){
36
+
37
+ }
38
+ }
39
+ else if(value === '国'){
40
+ var country = function ready2(){
41
+
42
+ }
43
+ }
44
+ else if(value === '都道府県'){
45
+ var pref = function ready3(){
46
+
47
+ }
48
+ }
49
+ }
50
+ </script>
51
+ <p id="target"></p>
31
52
  <div id="count"></div>
32
53
  <h1><div id="japanese"></div></h1>
33
54
  <h2><div id="word"></div></h2>
@@ -37,8 +58,8 @@
37
58
  </html>
38
59
  ```
39
60
  ```JavaScript
40
- const WORD_LIST_KOTOWAZA = ["aaiebakouiu", "auhawakarenohajime"];
61
+ const KOTOWAZA = ["ai"];
41
- const WORD_LIST_KOTOWAZA_JAPANESE = ["ああ言えばこう言う", "会うは別れの初め"];
62
+ const KOTOWAZA_JP = ["あ"];
42
63
  var wordlist;
43
64
  var wordlistJapanese;
44
65
  var time_limit = 60;
@@ -50,8 +71,8 @@
50
71
  var word_char;
51
72
  var random;
52
73
  function ready1(){
53
- wordlist = WORD_LIST_KOTOWAZA;
74
+ wordlist = KOTOWAZA;
54
- wordlistJapanese = WORD_LIST_KOTOWAZA_JAPANESE;
75
+ wordlistJapanese = KOTOWAZA_JP;
55
76
  readytime = 3;
56
77
  scoredis.innerHTML = "";
57
78
  kotowaza_button.style.visibility = "hidden";
@@ -128,8 +149,8 @@
128
149
  };
129
150
  ```
130
151
  ```JavaScript
131
- const WORD_LIST_COUNTRY = ["afghanistan", "argentina"];
152
+ const COUNTRY = ["afu"];
132
- const WORD_LIST_COUNTRY_JAPANESE = ["アフガニスタン", "アルゼンチン"];
153
+ const COUNTRY_JP = ["アフ"];
133
154
  var wordlist;
134
155
  var wordlistJapanese;
135
156
  var time_limit = 60;
@@ -141,8 +162,8 @@
141
162
  var word_char;
142
163
  var random;
143
164
  function ready2(){
144
- wordlist = WORD_LIST_COUNTRY;
165
+ wordlist = COUNTRY;
145
- wordlistJapanese = WORD_LIST_COUNTRY_JAPANESE;
166
+ wordlistJapanese = COUNTRY_JP;
146
167
  readytime = 3;
147
168
  scoredis.innerHTML = "";
148
169
  country_button.style.visibility = "hidden";
@@ -220,99 +241,9 @@
220
241
  }
221
242
  };
222
243
  ```
223
- ```JavaScript
244
+
224
- const WORD_LIST_PREF = ["hokkaido", "aomorikenn"];
225
- const WORD_LIST_PREF_JAPANESE = ["北海道", "青森県"];
226
- var wordlist;
227
- var wordlistJapanese;
228
- var time_limit = 60;
229
- var readytime = 3;
230
- var score;
231
- var correct;
232
- var mistake;
233
- var char_num = 0;
234
- var word_char;
235
- var random;
236
- function ready3(){
237
- wordlist = WORD_LIST_PREF;
238
- wordlistJapanese = WORD_LIST_PREF_JAPANESE;
239
- readytime = 3;
240
- scoredis.innerHTML = "";
241
- pref_button.style.visibility = "hidden";
242
- var readytimer = setInterval(function(){
243
- count.innerHTML = readytime;
244
- readytime--;
245
- if(readytime < 0){
246
- clearInterval(readytimer);
247
- gameStart();
248
- }
249
- },1000);
250
- }
251
- function gameStart(){
252
- score = 0.0;
253
- mistake = 0;
254
- correct = 0;
255
- wordDisplay();
256
- var time_remaining = time_limit;
257
- var gametimer = setInterval(function(){
258
- count.innerHTML = "残り時間: " + time_remaining;
259
- time_remaining--;
260
- if(time_remaining <= 0){
261
- clearInterval(gametimer);
262
- finish();
263
- }
264
- },1000)
265
- }
266
- function wordDisplay(){
267
- random = Math.floor(Math.random()*wordlist.length);
268
- word.innerHTML = wordlist[random];
269
- japanese.innerHTML = wordlistJapanese[random];
270
- charInsort();
271
- }
272
- function charInsort(){
273
- word_char = wordlist[random].charAt(char_num);
274
- }
275
- function finish(){
276
- score = Math.floor(Math.pow(correct, 2)*Math.pow((correct/(correct + mistake)), 5));
277
- scoredis.innerHTML = "スコア: " + score + "<hr>正しいタイプ数: " + correct + "<br>誤ったタイプ数: " + mistake +"<br>正答率: " + (correct/(correct + mistake) * 100).toFixed(1) + "%";
278
- count.innerHTML = "";
279
- word.innerHTML = "";
280
- japanese.innerHTML = "";
281
- start_button.style.visibility = "visible";
282
- word_char = 0;
283
- random = 0;
284
- char_num = 0;
285
- }
286
- document.onkeydown = function(e){
287
- if(e.keyCode == 189){
288
- keyStr = "-";
289
- }
290
- else if(e.keyCode == 188){
291
- keyStr = ",";
292
- }
293
- else{
294
- var keyStr = String.fromCharCode(e.keyCode);
295
- keyStr = keyStr.toLowerCase();
296
- }
297
- if(keyStr == word_char){
298
- word.innerHTML = "<span style = 'color: red;'>" + wordlist[random].substr(0, char_num + 1) + "</span>" + wordlist[random].substr(char_num + 1, wordlist[random].length);
299
- char_num++;
300
- correct++;
301
- charInsort();
302
- }
303
- else{
304
- new Audio('miss.mp3').play();
305
- mistake++;
306
- }
307
- if(char_num == wordlist[random].length){
308
- new Audio('correct.mp3').play();
309
- char_num = 0;
310
- wordDisplay();
311
- }
312
- };
313
- ```
314
245
  ### 試したこと
315
- HTMLのセレクトボタンを作る箇所valueの後にonclick="ready○()"のようにとんでほし場所を書きましたが動きませんでした
246
+ HTMLのセレクトボタンでchangeイベントをましたが動きません
316
247
  ### 補足情報(FW/ツールのバージョンなど)
317
- 環境OS、VScodeを使っています
248
+ 環境OS、VScode
318
-
249
+