質問編集履歴

3

アドバイスいただいたように書き直しました。

2023/01/13 00:33

投稿

yore
yore

スコア2

test CHANGED
File without changes
test CHANGED
@@ -191,7 +191,8 @@
191
191
  }
192
192
  };
193
193
  ```
194
+ ```JavaScript
194
- `const WORD_LIST_COUNTRY = ["afghanistan", "argentina", "australia"];
195
+ const WORD_LIST_COUNTRY = ["afghanistan", "argentina", "australia"];
195
196
  const WORD_LIST_COUNTRY_JAPANESE = ["アフガニスタン", "アルゼンチン", "オーストラリア"];
196
197
   let wordlist;
197
198
  let wordlistJapanese;

2

アドバイス通り書き直しました。

2023/01/13 00:31

投稿

yore
yore

スコア2

test CHANGED
File without changes
test CHANGED
@@ -8,8 +8,10 @@
8
8
  ### 発生している問題・エラーメッセージ
9
9
  ### 該当のソースコード
10
10
  ```JavaScript
11
- var wordlist = ["aaiebakouiu", "auhawakarenohajime", "abunaihashiwowataru"];
11
+ const WORD_LIST_KOTOWAZA = ["aaiebakouiu", "auhawakarenohajime", "abunaihashiwowataru"];
12
- var wordlistJapanese = ["ああ言えばこう言う", "会うは別れの初め", "危ない橋を渡る"];
12
+ const WORD_LIST_KOTOWAZA_JAPANESE = ["ああ言えばこう言う", "会うは別れの初め", "危ない橋を渡る"];
13
+ let wordlist;
14
+ let wordlistJapanese;
13
15
  var time_limit = 60;
14
16
  var readytime = 3;
15
17
  var score;
@@ -19,6 +21,8 @@
19
21
  var word_char;
20
22
  var random;
21
23
  function ready1(){
24
+   wordlist = WORD_LIST_KOTOWAZA;
25
+ wordlistJapanese = WORD_LIST_KOTOWAZA_JAPANESE;
22
26
  readytime = 3;
23
27
  scoredis.innerHTML = "";
24
28
  start_button.style.visibility = "hidden";
@@ -95,10 +99,12 @@
95
99
  };
96
100
  ```
97
101
  ```JavaScript
98
- var wordlist = ["hokkaido",
102
+ const WORD_LIST_PREF = ["hokkaido",
99
103
  "aomorikenn", "iwatekenn"];
100
- var wordJapanese = ["北海道",
104
+ const WORD_LIST_PREF_JAPANESE = ["北海道",
101
105
  "青森県", "岩手県"];
106
+  let wordlist;
107
+ let wordlistJapanese;
102
108
  var time_limit = 60;
103
109
  var readytime = 3;
104
110
  var score;
@@ -108,6 +114,8 @@
108
114
  var word_char;
109
115
  var random;
110
116
  function ready3(){
117
+   wordlist = WORD_LIST_PREF;
118
+ wordlistJapanese = WORD_LIST_PREF_JAPANESE;
111
119
  readytime = 3;
112
120
  scoredis.innerHTML = "";
113
121
  start_button.style.visibility = "hidden";
@@ -183,9 +191,10 @@
183
191
  }
184
192
  };
185
193
  ```
186
- ```JavaScript
187
- var wordlist = ["afghanistan", "argentina", "australia"];
194
+ `const WORD_LIST_COUNTRY = ["afghanistan", "argentina", "australia"];
188
- var wordlistJapanese = ["アフガニスタン", "アルゼンチン", "オーストラリア"];
195
+ const WORD_LIST_COUNTRY_JAPANESE = ["アフガニスタン", "アルゼンチン", "オーストラリア"];
196
+  let wordlist;
197
+ let wordlistJapanese;
189
198
  var time_limit = 60;
190
199
  var readytime = 3;
191
200
  var score;
@@ -195,6 +204,8 @@
195
204
  var word_char;
196
205
  var random;
197
206
  function ready2(){
207
+   wordlist = WORD_LIST_COUNTRY;
208
+ wordlistJapanese = WORD_LIST_COUNTRY_JAPANESE;
198
209
  readytime = 3;
199
210
  scoredis.innerHTML = "";
200
211
  start_button.style.visibility = "hidden";

1

試したソースコードに変更しました。ご指摘ありがとうございます。

2023/01/11 14:16

投稿

yore
yore

スコア2

test CHANGED
@@ -1 +1 @@
1
- [JavaScript]タイピングゲームのレベル選択ボタンを作る
1
+ [JavaScript]タイピングゲームのお題選択ボタンを作る
test CHANGED
@@ -1,110 +1,15 @@
1
1
  ### 前提
2
-
3
- JavaScript,HTML,CSSを使ってタイピングゲームを作っています
2
+ JavaScript,HTML,CSSを使ってタイピングゲームを作っています
4
- 今のままでは面白みがないため、お題選択ができるものにしたいです。
5
- ※今はことわざのタイピングゲームきていま
3
+ お題選択できるタイピングゲームにしたいです
6
-
4
+ 文字数が多くなってしまうため、タイピング問題の量を減らしています
7
5
  ### 実現したいこと
8
- ことわざ、都道府県、国のボタンを作る
6
+ ことわざ、都道府県、国のボタンを作る
9
- 選択されたお題でタイピングゲームが始まる
7
+ 選択されたお題でタイピングゲームが始まる
10
- ・お題選択ボタン→スタートボタンで3,2,1のカウントダウン→問題表示
11
-
12
-
13
8
  ### 発生している問題・エラーメッセージ
14
-
15
-
16
-
17
9
  ### 該当のソースコード
18
-
19
10
  ```JavaScript
20
- var wordlist = ["aaiebakouiu", "auhawakarenohajime", "abunaihashiwowataru",
11
+ var wordlist = ["aaiebakouiu", "auhawakarenohajime", "abunaihashiwowataru"];
21
- "ishinouenimosannen", "isogabamaware", "inumoarukebabouniataru",
22
- "ujiyorisodachi", "usotukihadorobounohajimari", "undeinosa",
23
- "ebidetaiwoturu", "ennkoutukiwotoru", "ennnoshitanochikaramochi",
24
- "oninikanabou", "oninomenimonamida", "oyanokokorokoshirazu",
25
- "kaerunokohakaeru", "gakumonnnioudounashi", "kawaiikonihatabiwosaseyo",
26
- "kinouhahitonomikyouhawagami", "gyuujiwotoru", "gyofunori",
27
- "kusaimononifutawosuru", "kusurimosugirebadokutonaru", "kumonokowochirasu",
28
- "keigunnnoikkaku", "keitarigatakuteinarigatashi", "keganokoumyou",
29
- "koukaisakinitatazu", "gojyuppohyappo", "korobanusakinotue",
30
- "sakehahyakuyakunocyou", "sarumokikaraochiru", "sarumonohaowazu",
31
- "shishinokootoshi", "shininnnikuchinashi", "shiranugahotoke",
32
- "suigyonomajiwari", "suimoamaimokamiwaketa", "suzumenonamida",
33
- "seitennnohekireki", "seniharahakaerarenu", "zennhaisoge",
34
- "soukainoichizoku", "soukanoinu", "sojyounouo",
35
- "daihasyouwokaneru", "tadayoritakaimonohanai", "tabihamichidure",
36
- "chigyonowazawai", "chiwochidearau", "chirimotumorebayamatonaru",
37
- "tukitosupponn", "tumenihiwotomosu", "turunohitokoe",
38
- "deicyuunohachisu", "tekihahonnnoujiniari", "tennnitubasuru",
39
- "toshiyorinohiyamizu", "tobutoriwootosu", "donngurinoseikurabe",
40
- "naisodehafurenai", "nagaimononihamakarero", "namekujinishio",
41
- "nikaikaramegusuri", "nogashitasakanahaookii", "nidoarukotohasanndoaru",
42
- "nukanikugi", "nusuttonioisenn", "nuretedeawa",
43
- "nekonikobann", "nekonotemokaritai", "nekowokaburu",
44
- "noucyuunokiri", "nokorimononihafukugaaru", "norennniudeoshi",
45
- "haisuinojinn", "hanayoridanngo", "haramominouchi",
46
- "higenochiriwoharau", "hinonaitokoronikemurihatatanu", "hyakubunnhaikkennnishikazu",
47
- "fuuzennnotomoshibi", "fuefukedomoodorazu", "butanishinnjyu",
48
- "hesogachawowakasu", "hetanoyokozuki", "bennkeinonakidokoro",
49
- "bouzunikukeryakesamadenikui", "hotoketukuttetamashiiirezu", "hotokenokaomosanndo",
50
- "magonimoisyou", "mayugewoyomareru", "mayunihigatuku",
51
- "mikaradetasabi", "mizutoabura", "misowotukeru",
52
- "muikanosyoubu", "musumehitorinimukohachininn", "muneniichimotu",
53
- "mekarahanahenukeru", "menihamehanihaha", "mehakuchihodonimonowoiu",
54
- "moubosannsennnooshie", "mochihamochiya", "motonomokuami",
55
- "yanaginiyukiorenashi", "yabukarabou", "yamiyonoteppou",
56
- "yukitosumi", "yukinishirasagi", "yudanntaiteki",
57
- "yokunimegakuramu", "yowarimenitatarime",
58
- "rakuhakunotanekuharakunotane", "rakuyounoshikawotakamu",
59
- "ryoujyounokunnshi", "ryoutenihana", "ryouyakuhakuchininigashi",
60
- "ruihatomowoyobu",
61
- "reiniyottereinogotoshi",
62
- "roudann", "rouwoetesyokuwonozomu", "ronngoyominoronngoshirazu",
63
- "watarinifune", "watarusekennnionihanai", "waraukadonihafukukitaru"];
64
- var wordlistJapanese = ["ああ言えばこう言う", "会うは別れの初め", "危ない橋を渡る",
12
+ var wordlistJapanese = ["ああ言えばこう言う", "会うは別れの初め", "危ない橋を渡る"];
65
- "石の上にも三年", "急がば回れ", "犬も歩けば棒に当たる",
66
- "氏より育ち", "嘘つきは泥棒の始まり", "雲泥の差",
67
- "蝦で鯛を釣る", "猿猴月を取る", "縁の下の力持ち",
68
- "鬼に金棒", "鬼の目にも涙", "親の心子知らず",
69
- "蛙の子は蛙", "学問に王道なし", "可愛い子には旅をさせよ",
70
- "昨日は人の身今日は我が身", "牛耳を執る", "漁夫の利",
71
- "臭いものに蓋をする", "薬も過ぎれば毒となる", "蜘蛛の子を散らす",
72
- "鶏群の一鶴", "兄たり難く弟たり難し", "怪我の功名",
73
- "後悔先に立たず", "五十歩百歩", "転ばぬ先の杖",
74
- "酒は百薬の長", "猿も木から落ちる", "去る者は追わず",
75
- "獅子の子落とし", "死人に口なし", "知らぬが仏",
76
- "水魚の交わり", "酸いも甘いも嚙み分けた", "雀の涙",
77
- "青天の霹靂", "背に腹はかえられぬ", "善は急げ",
78
- "滄海の一粟", "喪家の狗", "俎上の魚",
79
- "大は小を兼ねる", "ただより高い物はない", "旅は道連れ世は情け",
80
- "稚魚の災い", "血を血で洗う", "塵も積もれば山となる",
81
- "月と鼈", "爪に火を灯す", "鶴の一声",
82
- "泥中の蓮", "敵は本能寺に在り", "天に唾する",
83
- "年寄りの冷や水", "飛ぶ鳥を落とす", "どんぐりの背比べ",
84
- "無い袖は振れない", "長い物には巻かれろ", "蛞蝓に塩",
85
- "二階から目薬", "逃がした魚は大きい", "二度あることは三度ある",
86
- "糠に釘", "盗人に追い釘", "濡れ手で粟",
87
- "猫に小判", "猫の手も借りたい", "猫を被る",
88
- "嚢中の錐", "残り物には福がある", "暖簾に腕押し",
89
- "背水の陣", "花より団子", "腹も身の内",
90
- "髭の塵を払う", "火のないところに煙は立たぬ", "百聞は一見に如かず",
91
- "風前の灯", "笛吹けども踊らず", "豚に真珠",
92
- "臍が茶を沸かす", "下手の横好き", "弁慶の泣き所",
93
- "坊主憎けりゃ袈裟まで憎い", "仏作って魂入れず", "仏の顔も三度",
94
- "馬子にも衣装", "眉毛を読まれる", "眉に火が付く",
95
- "身から出た錆", "水と油", "味噌を付ける",
96
- "六日の菖蒲", "娘一人に婿八人", "胸に一物",
97
- "目から鼻へ抜ける", "目には目歯には歯", "目は口ほどに物を言う",
98
- "孟母三遷の教え", "餅は餅屋", "元の木阿弥",
99
- "柳に雪折れなし", "藪から棒", "闇夜の鉄砲",
100
- "雪と墨", "雪に白鷺", "油断大敵",
101
- "欲に目が眩む", "弱り目に祟り目",
102
- "楽は苦の種苦は楽の種", "洛陽の紙価を高む",
103
- "梁上の君子", "両手に花", "良薬は口に苦し",
104
- "類は友を呼ぶ",
105
- "例によって例の如し",
106
- "壟断", "隴を得て蜀を望む", "論語読みの論語知らず",
107
- "渡りに船", "渡る世間に鬼はない", "笑う門には福来たる"];
108
13
  var time_limit = 60;
109
14
  var readytime = 3;
110
15
  var score;
@@ -189,6 +94,182 @@
189
94
  }
190
95
  };
191
96
  ```
97
+ ```JavaScript
98
+ var wordlist = ["hokkaido",
99
+ "aomorikenn", "iwatekenn"];
100
+ var wordJapanese = ["北海道",
101
+ "青森県", "岩手県"];
102
+ var time_limit = 60;
103
+ var readytime = 3;
104
+ var score;
105
+ var correct;
106
+ var mistake;
107
+ var char_num = 0;
108
+ var word_char;
109
+ var random;
110
+ function ready3(){
111
+ readytime = 3;
112
+ scoredis.innerHTML = "";
113
+ start_button.style.visibility = "hidden";
114
+ var readytimer = setInterval(function(){
115
+ count.innerHTML = readytime;
116
+ readytime--;
117
+ if(readytime < 0){
118
+ clearInterval(readytimer);
119
+ gameStart();
120
+ }
121
+ },1000);
122
+ }
123
+ function gameStart(){
124
+ score = 0.0;
125
+ mistake = 0;
126
+ correct = 0;
127
+ wordDisplay();
128
+ var time_remaining = time_limit;
129
+ var gametimer = setInterval(function(){
130
+ count.innerHTML = "残り時間: " + time_remaining;
131
+ time_remaining--;
132
+ if(time_remaining <= 0){
133
+ clearInterval(gametimer);
134
+ finish();
135
+ }
136
+ },1000)
137
+ }
138
+ function wordDisplay(){
139
+ random = Math.floor(Math.random()*wordlist.length);
140
+ word.innerHTML = wordlist[random];
141
+ japanese.innerHTML = wordlistJapanese[random];
142
+ charInsort();
143
+ }
144
+ function charInsort(){
145
+ word_char = wordlist[random].charAt(char_num);
146
+ }
147
+ function finish(){
148
+ score = Math.floor(Math.pow(correct, 2)*Math.pow((correct/(correct + mistake)), 5));
149
+ scoredis.innerHTML = "スコア: " + score + "<hr>正しいタイプ数: " + correct + "<br>誤ったタイプ数: " + mistake +"<br>正答率: " + (correct/(correct + mistake) * 100).toFixed(1) + "%";
150
+ count.innerHTML = "";
151
+ word.innerHTML = "";
152
+ japanese.innerHTML = "";
153
+ start_button.style.visibility = "visible";
154
+ word_char = 0;
155
+ random = 0;
156
+ char_num = 0;
157
+ }
158
+ document.onkeydown = function(e){
159
+ if(e.keyCode == 189){
160
+ keyStr = "-";
161
+ }
162
+ else if(e.keyCode == 188){
163
+ keyStr = ",";
164
+ }
165
+ else{
166
+ var keyStr = String.fromCharCode(e.keyCode);
167
+ keyStr = keyStr.toLowerCase();
168
+ }
169
+ if(keyStr == word_char){
170
+ word.innerHTML = "<span style = 'color: red;'>" + wordlist[random].substr(0, char_num + 1) + "</span>" + wordlist[random].substr(char_num + 1, wordlist[random].length);
171
+ char_num++;
172
+ correct++;
173
+ charInsort();
174
+ }
175
+ else{
176
+ new Audio('miss.mp3').play();
177
+ mistake++;
178
+ }
179
+ if(char_num == wordlist[random].length){
180
+ new Audio('correct.mp3').play();
181
+ char_num = 0;
182
+ wordDisplay();
183
+ }
184
+ };
185
+ ```
186
+ ```JavaScript
187
+ var wordlist = ["afghanistan", "argentina", "australia"];
188
+ var wordlistJapanese = ["アフガニスタン", "アルゼンチン", "オーストラリア"];
189
+ var time_limit = 60;
190
+ var readytime = 3;
191
+ var score;
192
+ var correct;
193
+ var mistake;
194
+ var char_num = 0;
195
+ var word_char;
196
+ var random;
197
+ function ready2(){
198
+ readytime = 3;
199
+ scoredis.innerHTML = "";
200
+ start_button.style.visibility = "hidden";
201
+ var readytimer = setInterval(function(){
202
+ count.innerHTML = readytime;
203
+ readytime--;
204
+ if(readytime < 0){
205
+ clearInterval(readytimer);
206
+ gameStart();
207
+ }
208
+ },1000);
209
+ }
210
+ function gameStart(){
211
+ score = 0.0;
212
+ mistake = 0;
213
+ correct = 0;
214
+ wordDisplay();
215
+ var time_remaining = time_limit;
216
+ var gametimer = setInterval(function(){
217
+ count.innerHTML = "残り時間: " + time_remaining;
218
+ time_remaining--;
219
+ if(time_remaining <= 0){
220
+ clearInterval(gametimer);
221
+ finish();
222
+ }
223
+ },1000)
224
+ }
225
+ function wordDisplay(){
226
+ random = Math.floor(Math.random()*wordlist.length);
227
+ word.innerHTML = wordlist[random];
228
+ japanese.innerHTML = wordlistJapanese[random];
229
+ charInsort();
230
+ }
231
+ function charInsort(){
232
+ word_char = wordlist[random].charAt(char_num);
233
+ }
234
+ function finish(){
235
+ score = Math.floor(Math.pow(correct, 2)*Math.pow((correct/(correct + mistake)), 5));
236
+ scoredis.innerHTML = "スコア: " + score + "<hr>正しいタイプ数: " + correct + "<br>誤ったタイプ数: " + mistake +"<br>正答率: " + (correct/(correct + mistake) * 100).toFixed(1) + "%";
237
+ count.innerHTML = "";
238
+ word.innerHTML = "";
239
+ japanese.innerHTML = "";
240
+ start_button.style.visibility = "visible";
241
+ word_char = 0;
242
+ random = 0;
243
+ char_num = 0;
244
+ }
245
+ document.onkeydown = function(e){
246
+ if(e.keyCode == 189){
247
+ keyStr = "-";
248
+ }
249
+ else if(e.keyCode == 188){
250
+ keyStr = ",";
251
+ }
252
+ else{
253
+ var keyStr = String.fromCharCode(e.keyCode);
254
+ keyStr = keyStr.toLowerCase();
255
+ }
256
+ if(keyStr == word_char){
257
+ word.innerHTML = "<span style = 'color: red;'>" + wordlist[random].substr(0, char_num + 1) + "</span>" + wordlist[random].substr(char_num + 1, wordlist[random].length);
258
+ char_num++;
259
+ correct++;
260
+ charInsort();
261
+ }
262
+ else{
263
+ new Audio('miss.mp3').play();
264
+ mistake++;
265
+ }
266
+ if(char_num == wordlist[random].length){
267
+ new Audio('correct.mp3').play();
268
+ char_num = 0;
269
+ wordDisplay();
270
+ }
271
+ };
272
+ ```
192
273
  ```HTML
193
274
  <!DOCTYPE html>
194
275
  <html>
@@ -196,15 +277,18 @@
196
277
  <title>タイピングゲーム</title>
197
278
  <meta charset="utf-8">
198
279
  <link rel="stylesheet" type="text/css" href="k22136.css" />
280
+ <script src="kotowaza-k22136.js"></script>
281
+ <script src="todofukenn-k22136.js"></script>
199
- <script src="kadai60-k22136.js"></script>
282
+ <script src="kuni-k22136.js"></script>
200
283
  </head>
201
284
  <body>
202
285
  <div class="imgt">
203
286
  <p class="title">TYPING GAME</p>
204
- <p>〜ことわざ〜</p>
205
287
  </div>
206
288
  <div class="wrap1">
207
- <input type="button" id="start_button" value="スタート" onclick="ready1()" style="text-align: center">
289
+ <input type="button" id="kotowaza_button" value="ことわざ" onclick="ready1()" style="text-align: center">
290
+ <input type="button" id="todofukenn_button" value="都道府県" onclick="ready2()" style="text-align: center">
291
+ <input type="button" id="kuni_button" value="国" onclick="ready3()" style="text-align: center">
208
292
  <div id="count"></div>
209
293
  <h1><div id="japanese"></div></h1>
210
294
  <h2><div id="word"></div></h2>
@@ -213,12 +297,7 @@
213
297
  </body>
214
298
  </html>
215
299
  ```
216
-
217
300
  ### 試したこと
218
-
219
- ネットでJavaScriptで複数のボタンを使う方法などを調べ、実行しましたがうまく動かなかったです
301
+ ネットでJavaScriptで複数のボタンを使う方法などを調べ、実行しましたがうまく動かなかったです
220
-
221
302
  ### 補足情報(FW/ツールのバージョンなど)
222
-
223
- 環境はOSで、VScodeを使っています
303
+ 環境はOSで、VScodeを使っています
224
-