この記事では、JSオブジェクト指向タイピングゲームの具体的なコードを参考までに紹介します。具体的な内容は次のとおりです。 デモの紹介落下するボールに表示されている数字をキーボードでクリックすると、ボールは更新され、任意の位置に再び落下します。さらに、ボールが 5 個落ちるごとに、落下速度が上がり、ボールの位置とサイズが更新され、色がランダムになります。デモ ソース コードは、オブジェクト指向クラス メソッドを実装することで直接使用できます。 HTMLファイルに割り当てて開いて使用します。学校のコースデザインとして使用できます。 ソースコード<!DOCTYPE html> <html lang="ja"> <ヘッド> <メタ文字セット="UTF-8"> <meta http-equiv="X-UA-compatible" content="IE=edge"> <meta name="viewport" content="width=デバイス幅、初期スケール=1.0"> <title>ドキュメント</title> </head> <スタイル> 。タイトル{ 幅: 1200ピクセル; 高さ: 80px; マージン:400px 自動; 色: ダークブルー; テキストシャドウ: 3px 3px 3px 黒; フォントサイズ: 80px; フォントの太さ: 太字; テキスト配置: 中央; font-family: "楷体"; } 。名前{ 幅: 1000ピクセル; 高さ: 40px; マージン:0 自動; 色: スカイブルー; テキストシャドウ: 3px 3px 3px 黒; フォントサイズ: 40px; フォントの太さ: 太字; テキスト配置: 中央; font-family: "楷体"; } </スタイル> <本文> <div style="font-size: 40px;">現在のスコア<div class="score" >0</div></div> <div class="title">ネイティブ js の小さなデモ: タイピング練習ゲーム</div> <div class="name">著者: lz</div> </本文> <スクリプト> クラス TypingGame { コンストラクタ() { this.oSpan this.speed = 2; this.timer = ""; この.word; this.colors = ["red", "orange", "purple", "black", "pink", "blue", "skyblue", "yellowgreen", "brown", "tomato", "indianred", "orchid", "peru", "aqua", "slateblue", "gray", "grey", "crimson", "green"]//カラーコレクション this.createWord(this.speed); document.onkeydown = e => { var e = e || window.event; var キーコード = e.keyCode || e.which; // TypingGame.oSpan = this.$$("span"); var キーワード = String.fromCharCode(キーコード)。 小文字に変換() if (this.word === キーワード) { // 1 つ倒す - スコア // 元のスコアを取得する var score = this.$('.score', false).innerText - 0 // スコアを+1する スコア++ // 1 を加えた後のスコアを div に入れます。 document.querySelector('.score').innerText = score (スコア === 5)の場合{ this.speed += 2 // 5文字ごとに落下速度が速くなります} this.oSpan.親要素の子要素を削除します(this.oSpan) this.createWord(this.speed) } } } createWord(スピード) { let wh=this.getRandom(30,80);//ランダムサイズ this.oSpan = this.creEle('span'); // コンソールログ(this.oSpan) this.setStyle(this.oSpan, { 幅: wh+"px", 高さ: wh+"px", 位置: '絶対'、 上: 0, 左: this.getRandom(document.documentElement.clientWidth - 30) + "px", 境界半径: "50%", 行の高さ: '30px'、 テキスト配置: 'center'、 背景色: this.colors[this.getRandom(18)], 色: "白", フォントの太さ: "太字", テキスト配置:"center", 行の高さ:wh+"px" }) document.body.appendChild(this.oSpan) // ランダムな文字: 97~122 var randomNum = this.getRandom(97, 123) this.word = String.fromCharCode(randomNum); this.oSpan.innerText = this.word // このラベルはゆっくりと下に移動します this.elementsMove(this.speed); } 要素を移動します() { // コンソールログ(this.oSpan) // タイマー clearInterval(this.timer) this.timer = setInterval(() => { // 高さを取得します var t = this.oSpan.offsetTop; // 高さを増やす t += this.speed; console.log(このスピード) // このタグがブラウザの下部に到達したらゲームオーバー t >= document.documentElement.clientHeight - 30 の場合 { クリア間隔(this.timer) if (confirm("ゲームオーバーです。もう一度プレイしますか?")) { location.reload(); // 更新してもう一度再生します} } // 拡大後のラベルの上部を設定する this.oSpan.style.top = t + "px" }, 50) } setStyle(ele, styleObj) { (var attr in styleObj) { ele.style[属性] = styleObj[属性] } } $(タグ、すべて = false) { すべてを返しますか? document.querySelectorAll(tag) : document.querySelector(tag); } creEle(タグ) { document.createElement(タグ) を返します。 } ランダム値を取得します(a, b = 0) { var max = Math.max(a, b); var min = Math.min(a, b) Math.floor(Math.random() * (max - min)) + min を返します。 } } 新しいタイピングゲーム; </スクリプト> </html> デモのスクリーンショット 改善すべき点 自分で書き直したり、エラープロンプトを追加したり、高さをランダムに更新したりすることができます。速度の最適化がいくらか可能かもしれません。アニメーションを requestAnimationFrame() に変更すると、効果がよりリアルになります。 以上がこの記事の全内容です。皆様の勉強のお役に立てれば幸いです。また、123WORDPRESS.COM を応援していただければ幸いです。 以下もご興味があるかもしれません:
|
>>: CentOS 7 で Docker のポート転送をファイアウォールと互換性のあるように設定する方法
DockerにNginxをインストールするNginx は、IMAP/POP3/SMTP サービスも提...
目次1 違い1.1 スペース占有1.2 表現範囲1.3 タイムゾーン2 テスト3つの選択肢MySQL...
現在、クラウドサーバーに nginx をインストールする際、最初に zlib などの依存ライブラリを...
序文ターミナルを使用してデータベースまたはテーブルを作成するたびに、文字セットが latin1 であ...
Nginx の紹介Nginx (「エンジン x」) は、ロシアのプログラマー Igor Sysoev...
MySQL マスター/スレーブ レプリケーションを使用すると、1 つのデータベース (マスター デー...
序文MySQL と Oracle のキーワードはまったく同じではありません。Oracle データベー...
今日、Baiduのページで練習していたところ、検索ボックスとボタンの余白とパディングの値が0に設定さ...
Web フロントエンド開発に含まれる内容は、主に W3C 標準の構造、動作、パフォーマンスです。では...
1. 準備Linux オペレーティング システムをインストールした後、ここで Linux 7 を選択...
目次問題の説明:原因分析:解決:補足: Reactでは、フックが使用されている場合、useState...
何?何のスターコートですか?さて、もっとわかりやすくするために写真を見てみましょう。 よく見ると、パ...
目次1. 時間が経つにつれて限界が遅くなる理由2. 百万データシミュレーション1. 従業員テーブルと...
目次1. 通常の機能2. 矢印関数3. データパケットJSON 4. オブジェクト5. 約束6. 非...
このプロジェクトでは、Vue+Router+Element の具体的なコードを共有して、シンプルなナ...