一文字ずつタイピングを行うゲームです。
時間制限を設けることで、よりゲーム性を高めています。
【HTMLソースコード】
<body onkeydown="keydown()"> <center> <div id="qsKeyPrint"> </div> <div id="kekka"> </div> <div id="keyPrint> </div> <br> <input name="start" type="button" value=" Start " onClick="JavaScript:gameStart()"> </body>
【JavaScriptゲームソースコード】
var gameFlg=false; var timer; var qsKeyCode; var keyCode; var kekka; var startTime; var qsCount=0; var correctCount=0; function gameStart() { var startDate=new Date; startTime=startDate.getTime(); qsCount=0; correctCount=0; startTime=0; timer=setInterval("nextChar();", 1000); gameFlg=true; } function keydown() { var keyPrint; if(gameFlg==true){ keyCode=window.event.keyCode; if(qsKeyCode==keyCode){ kekka="OK"; correctCount+=1; startTime=1000; nextChar(); keyPrint=""; }else{ kekka="NG"; keyPrint=String.fromCharCode(keyCode); } document.getElementById('keyPrint').innerHTML=keyPrint; document.getElementById('kekka').innerHTML=kekka; } } function nextChar() { var startDate; var nowDate=new Date; var nowTime=Math.floor(nowDate.getTime()-startTime); if(nowTime>1000){ qsKeyCode=Math.floor(Math.random()*36+1); if(qsKeyCode<=10){ qsKeyCode=qsKeyCode+47; }else{ qsKeyCode=qsKeyCode+54; } startDate=new Date; startTime=startDate.getTime(); qsCount+=1; if(qsCount >= 21){ gameStop(); }else{ document.getElementById('kekka').innerHTML=" "; document.getElementById('qsKeyPrint').innerHTML=String.fromCharCode(qsKeyCode); } } } function gameStop() { clearInterval(timer); alert(correctCount + "/" + (qsCount-1)); document.getElementById('kekka').innerHTML=" "; document.getElementById('qsKeyPrint').innerHTML=" "; gameFlg=false; }
StartボタンがクリックされたらgameStart()メソッドを呼び出します。
gameStart()メソッドでは、nextChar()メソッドを1秒間隔で呼び出すようにタイマーをセットし、起動します。
一文字が表示される時間は1秒とし、1秒経過すると自動的に別の一文字に表示が変わるようにします。
nextChar()メソッドでは、呼ばれる度に現在時間を取得し、一文字が表示されてからの経過時間を計ります。
もし、一秒以上経過していたら、新しい文字コードをランダムに取得し、表示させる一文字を変えます。
nextChar()メソッドはキー入力イベントが発生し、入力されたキーと表示されている一文字が一致したときにも呼び出されます。
その際は、一文字が表示されてから一秒経過していなくても、次の一文字に表示を変えます。
キーボードから入力されたキーは、window.event.keyCodeプロパティで取得します。
合計20文字表示されるとゲームは終了し、結果を出力します。
<<フラッシュ暗算ゲーム | タイピングゲーム>> |
JavaScriptゲームプログラミング講座 |
Copyright(c)2009 JavaScriptゲーム探検広場