タイピングゲームを思い出しながら作り、下記のコードを書きました
予定では200文字タイピングした後、掛かった時間とGAME終了と画面に出るはずなのですが、私のコードでは200文字のタイピング終了後白い画面となり、更にスペースキーなどを長押しするとその間、最初から何秒経ったかが表示されます
どうしてこんなことになったのか全く見当がつきません
どなたか詳しい方がいらっしゃいましたらどこがどう間違ってるのか指摘して頂けないでしょうか?
html
1<html> 2 3<body onload="gameSet()"> 4 5<div id="waku"></div> 6 7 8</body> 9 10</html> 11 12
javascript
<script> document.onkeydown = typeGame; //文字を格納する配列 var moji = new Array("A","B","C","D","E","F","G","H","I", "J","K","L","M","N","O","P","Q","R", "S","T","U","V","W","X","Y","Z"); //キーコードを格納する配列 var kcode = new Array(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); //0~25までの乱数を格納する配列 var rnd = new Array(); var mondai = ""; //問題の文字列を格納 var cnt=0; //何問目か格納 var typStart,typEnd; //開始時と終了時の時刻を格納 //0~25までの乱数を200個作成して配列rndに格納する関数 //タイピングゲームの問題をセットする関数 function gameSet() { //問題文とカウント数をクリアする mondai=""; cnt=0; //乱数作成関数の呼び出し //問題文の作成(配列mojiの要素をランダムに200文字繋げる) //mondai= "" + moji[rnd[0]] + moji[rnd[1]] + … + moji[rnd[199]]となる for ( var i = 0 ; i < 200 ; i++) { rnd[i] = Math.ceil( Math.random() * 25 ); mondai = mondai + moji[ rnd[i] ]; } //問題枠に表示する document.getElementById("waku").innerHTML = mondai; } function typeGame(evt) { var vc; if(document.all){ vc=event.keyCode; }else{ vc=evt.which; } if (cnt==0) { typStart = new Date(); } if(cnt<20){ if(vc==kcode[rnd[cnt]]){ mondai=mondai.substring(1,mondai.Length); document.getElementById("waku").innerHTML=mondai; cnt++; } }else{ typEnd = new Date(); //終了時間-開始時間で掛かったミリ秒を取得する var keika = typEnd - typStart; //1000で割って「切捨て」、秒数を取得 var sec = Math.floor( keika/1000 ); //1000で割った「余り(%で取得できる)」でミリ秒を取得 var msec = keika % 1000; //問題終了を告げる文字列を作成 var fin="GAME終了 時間:"+sec+"秒"+msec; //問題枠にゲーム終了を表示 document.getElementById("waku").innerHTML = fin; } } </script>
試したコードは掲載のコードと異なるのではないでしょうか?
「200文字のタイピング終了後」と書いてますが、20文字で終了の判定になっているし、
とりあえず20文字打てば、結果画面(GAME終了 時間:XXX秒XXX)が表示されますよ。
「思い出しながら作り」という前提が意味不明です。
決められた仕様がきちんとないのにコードだけなんとなく作ってるんですか?
皆さんコメントありがとうございますm(__)m
shun-Kさん
私の方は白い画面になっちゃうんですよね・・・
m.ts10806さん
仕様とは一体何なんでしょうか・・・
私はウェブサイトに載ってたコードを見ない様に思い出しながら写経?してました
コードは覚えるものではないですよ。
仕様や設計(どういうものを作るか、決め事)があってそれを実現するために組むものです。
既存のコードを、コードだけ覚えたところでプログラミングができるようにはなりません。
御指導ありがとうございます!
一応自分なりにコードで何をしているのか考え、それを自分で再現できるようにしているのですが・・・
私にはプログラミングの道は難しいのかもしれませんね・・・
回答1件
あなたの回答
tips
プレビュー