1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

年末まで毎日webサイトを作り続ける大学生 〜36日目 keyDownで文字入力ゲーム(1)〜

Last updated at Posted at 2019-11-23

はじめに

こんにちは!@70days_jsです。

タイピングゲームを作ろうと思い、今日はその触りということでkeydownを使って文字入力できるようにしました。
今日は36日目。(2019/11/23)
よろしくお願いします。

サイトURL

やったこと

ここ数日かけてちゃんとしたタイピングゲームを作ろうと思い、今日はその触りとしてeventオブジェクトのkeydownを使って文字入力で遊びました。↓
test2.gif

<body>
    <p>あの時、どう思ったのか。</p>
    <div id="keyDownWrapper">
        <div id="keyDown"></div>
    </div>
</body>

id="keyDown"のdivに文字が入力されていきます。

javascript↓

document.addEventListener('keydown', logKey);
let keyDown = document.getElementById('keyDown');
let count = 0;

function logKey(e) {
    let myKeyCode = e.keyCode;
    console.log(myKeyCode);
    if (myKeyCode == 190) {
        keyDown.innerHTML += '.<br>';
        count++;
    } else if (myKeyCode == 32) {
        keyDown.innerHTML += ' ';
        count++;
    } else if (myKeyCode == 13) {
        keyDown.innerHTML += '<br>';
        count++;
    } else if (myKeyCode < 65 || myKeyCode > 91) {
        return false;
    } else {
        let myCharCode = String.fromCharCode(myKeyCode);
        let myCharCodeLower = myCharCode.toLowerCase();
        keyDown.innerHTML += myCharCodeLower;
        count++;
    }

    if (count > 25) {
        keyDown.innerHTML += '<br>';
        count = 0;
    }
}

イベントリスナーで、keydownされたらlogkey関数を呼び出す設定にしています。
documentで呼び出しているので、キーを押したらすぐに呼び出されます。

let myKeyCode = e.keyCode;

keyCodeプロパティを参照して、キーコード番号を取り出します。

190は.です。.が押されたら.と改行をする設定にしています。
32はスペースです。
13は改行です。
65~91でa~zをカバーしています。それ以外の数字はfalseを返します。(0~9はカバーしていません)
count変数は、25文字を超えたら自動的に改行されるように設定しています。

感想

色々調べていると、タイピングゲームにはどうやらブラウザの互換性とか厄介な問題が絡んでくるようです。さて、どう乗り切ろう・・・。

最後までお読みいただきありがとうございます。明日も投稿しますのでよろしくお願い致します。

参考

  1. キーコード一覧 (http://faq.creasus.net/04/0131/CharCode.html)
  2. String.fromCharCode() - JavaScript | MDN (https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Global_Objects/String/fromCharCode)

参考にさせていただきました。ありがとうございます!

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?