質問編集履歴
1
HTMLの16-43行目を変えました。文字数の関係で都道府県のjsは消しました。
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
|
25
|
+
<option disabled selected> </option>
|
27
|
-
<option value="ことわざ"
|
26
|
+
<option value="ことわざ" style="text-align: center">ことわざ</option>
|
28
|
-
<option value="国"
|
27
|
+
<option value="国" style="text-align: center">国</option>
|
29
|
-
<option value="都道府県"
|
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
|
61
|
+
const KOTOWAZA = ["ai"];
|
41
|
-
const
|
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 =
|
74
|
+
wordlist = KOTOWAZA;
|
54
|
-
wordlistJapanese =
|
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
|
152
|
+
const COUNTRY = ["afu"];
|
132
|
-
const
|
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 =
|
165
|
+
wordlist = COUNTRY;
|
145
|
-
wordlistJapanese =
|
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
|
-
|
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のセレクトボタン
|
246
|
+
HTMLのセレクトボタンでchangeイベントをいれましたが動きません
|
316
247
|
### 補足情報(FW/ツールのバージョンなど)
|
317
|
-
環境
|
248
|
+
環境OS、VScode
|
318
|
-
|
249
|
+
|