練習のために JavaScript を使った簡易タイピングゲームを作ってみました。
単語一覧の中からランダムに出題され、制限時間以内にいくつ入力できたかを計測します。
<!DOCTYPE html> <html> <head> <title></title> <meta charset="utf-8"> <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.2/jquery.min.js"></script> <script> // 単語 var wordList = [ "Alfa", "Bravo", "Charlie", "Delta", "Echo", "Foxtrot", "Golf", "Hotel", "India", "Juliett", "Kilo", "Lima", "Mike", "November", "Oscar", "Papa", "Quebec", "Romeo", "Sierra", "Tango", "Uniform", "Victor", "Whiskey", "X-ray", "Yankee", "Zulu" ]; // 時間制限 var timeLimit = 30; var timer1; var wordStr; var wordChars; var charIndex; var messageArea; var wordArea; var typeArea; var score; var timeLeft; window.onload = function (){ messageArea = document.getElementById("message"); wordArea = document.getElementById("word"); typeArea = document.getElementById("type"); startButton = document.getElementById("start-button"); } // 3秒後に開始 function onStartButtonClick(){ messageArea.textContent = "Ready?"; setTimeout("startTyping()", 3000); } // 開始 function startTyping(){ score = 0; timeLeft = timeLimit; nextWord(); countDown(); timer1 = setInterval("countDown()", 1000); startButton.disabled = true; } // 終了 function stopTyping(){ clearInterval(timer1); wordChars = []; messageArea.textContent = "Score: " + score; wordArea.textContent = ""; typeArea.textContent = ""; startButton.disabled = false; } // 次の単語を表示 function nextWord(){ charIndex = 0; var random = Math.floor( Math.random() * wordList.length ); wordArea.textContent = wordList[random]; typeArea.textContent = ""; wordChars = wordList[random].toUpperCase().split(''); } // 残り時間を計測 function countDown(){ if(timeLeft <= 0) { stopTyping(); return; } messageArea.textContent = timeLeft + " sec."; timeLeft--; } // キー押下時の処理 document.onkeydown = function (e){ var keyStr; if(e.keyCode == 189){ keyStr = "-"; } else { keyStr = String.fromCharCode(e.keyCode); } if(wordChars[charIndex] == keyStr){ charIndex++; typeArea.textContent = typeArea.textContent + keyStr; if(charIndex== wordChars.length){ score++; nextWord(); } } }; </script> </head> <body> <form><p><input type="button" id="start-button" value="Start" onClick="onStartButtonClick()"> <span id="message">Press Start</span></p></form> <hr> <div style="font-weight: bold;" id="word"> </div> <div id="type"> </div> </body> </html>
単語を split() で一文字ごとに区切り、入力した文字と先頭の文字が一致すれば一文字進めます。同様にその文字と一致すれば更に一文字進め、最後まで到達したら別の単語を表示します。
タイマーで残り時間を計測し、時間が来たらスコアを表示して終わります。
Similar Posts:
- [JS]HTML5 Canvasを使ったライフゲーム
- [JS][jQuery]フォームから複数のファイルをアップロード(入力欄の動的追加)
- [PHP]統計学(平均、分散、標準偏差、偏差値)
- [PHP]「もしかして: ~」スペルミス時の修正候補を表示する
- [PHP]文章中の単語に自動でリンクを貼る(キーワードリンク)
- [PHP, JS]jQueryのAjaxによるPHP、Javascript間の送受信(JSON)
- [PHP][jQuery]Ajax(非同期通信)を使ったチャット
- [JS]Reactのインストールと周辺ツール(Babel, Webpack)の導入方法