JavaScript でグレイウルフのポットビーティングゲームを実装

JavaScript でグレイウルフのポットビーティングゲームを実装

1. プロジェクト文書

ここに画像の説明を挿入

2. ページレイアウトにHTMLとCSSを使用する

HTML部分

<div class="コンテナ">
        <h1 class="スコア">0</h1>
        <div class="progress"></div>
        <div id="開始">
            <h2>ポットはビッグ・バッド・ウルフの手に</h2>
            <button class="start">ゲームを開始する</button></div>
        <div class="rules">ゲームルール</div>
        <div class="rule">
            <p>ゲームのルール:</p>
            <p>1. ゲーム時間: 60 秒</p>
            <p>2. ハンドスピードで競い、グレイウルフに+10ポイント勝つ</p>
            <p>3. シャオ・フイフイを倒す - 10 ポイント</p>
            <a href="#" rel="external nofollow" class="close">[閉じる]</a>
        </div>
        <div class="mask">
            <h1>ゲームオーバー</h1>
            <button class="reStart">再起動</button>
            <button class="finish">ゲームを終了する</button>
        </div>
        <div id="終了">
            <h2>ポットはビッグ・バッド・ウルフの手に</h2>
            <h3>スコア: <span class="scoreEnd"></span> </h3>
        </div>
    </div>

CSS部分

* {
    マージン: 0;
    パディング: 0;
}

。容器 {
    幅: 320ピクセル;
    高さ: 480ピクセル;
    背景: url("./images/game_bg.jpg") 繰り返しなし 0 0;
    マージン: 50px 自動;
    位置: 相対的;
}

.コンテナ>h1 {
    左マージン: 60px;
}

.コンテナ>.進行状況{
    幅: 180ピクセル;
    高さ: 16px;
    背景: url("./images/progress.png") 繰り返しなし 0 0;
    位置: 絶対;
    上: 66px;
    左: 63px;
}

.コンテナ>#start>h2 {
    上マージン: 180px;
    色: 白;
    テキスト配置: 中央;
}

.コンテナ>#start>.start {
    幅: 150ピクセル;
    行の高さ: 35px;
    テキスト配置: 中央;
    色: 白;
    背景: 線形グラデーション(#E55C3D, #C50000);
    境界線の半径: 20px;
    境界線: なし;
    フォントサイズ: 20px;
    位置: 絶対;
    上: 320px;
    左: 50%;
    左マージン: -75px;
}

.コンテナ>.ルール{
    幅: 100%;
    高さ: 20px;
    背景: #ccc;
    位置: 絶対;
    左: 0;
    下部: 0;
    テキスト配置: 中央;
}

.コンテナ>.ルール{
    幅: 100%;
    高さ: 100%;
    背景: rgba(0, 0, 0, 0.5);
    位置: 絶対;
    左: 0;
    上: 0;
    パディング上部: 100px;
    ボックスのサイズ: 境界線ボックス;
    テキスト配置: 中央;
    表示: なし;
}

.rule>p {
    行の高さ: 50px;
    色: 白;
}

.rule>a {
    色: 赤;
}

.コンテナ>.マスク{
    幅: 100%;
    高さ: 100%;
    背景: rgba(0, 0, 0, 0.5);
    位置: 絶対;
    左: 0;
    上: 0;
    パディング上部: 200px;
    ボックスのサイズ: 境界線ボックス;
    テキスト配置: 中央;
    表示: なし;
}

.mask>h1 {
    色: #ff4500;
    テキストシャドウ: 3px 3px 0 #fff;
    フォントサイズ: 40px;
}

.mask>ボタン{
    幅: 100ピクセル;
    行の高さ: 35px;
    テキスト配置: 中央;
    色: 白;
    背景: 線形グラデーション(#74ACCF, #007DDC);
    境界線の半径: 20px;
    境界線: なし;
    フォントサイズ: 20px;
    位置: 絶対;
    上: 320px;
    残り: 30%
}

.mask>.reStart {
    左マージン: -50px;
}

.mask>.finish {
    左マージン: 80px;
    フロート: 右;
}

#仕上げる {
    色: 白;
    テキスト配置: 中央;
    表示: なし;
    上マージン: 100px;
}

#終了 h2 {
    パディング: 25px;
}

3. JavaScriptを使用して効果を実現する

var begin = document.querySelector('#start');
var h = begin.querySelector('h2');
var start.queryselector( '。start'); .Close '); .QuerySelector('。ScoreEnd ');
    // コンソール.log(123);
    // ボタンを非表示にする Finish.style.display = 'none';
    var fadIndex = this.parentNode;
    fadIndex.style.display = 'なし';
    // プログレスバーの長さを設定します。var progressWidth = 180;
    progressHandler(進行幅);
    var タイマー;
    startAnimation(); // アニメーションが開始されます };
// ルール // console.log(rules);
ルール.onclick = 関数() {
    console.log('ゲームルールをクリックしてください');
    ルール.スタイル.表示 = 'ブロック';
};
// 閉じる close.onclick = function() {
    コンソールログ('閉じる');
    ルール.スタイル.表示 = 'なし';
};
// ゲームを再開する reStart.onclick = function() {
    スコア.innerHTML = 0;
    マスクスタイル表示 = 'なし';
    // コンソールログ(スコア.innerHTML);
    var 進行幅 = 180;
    progress.style.width = '180px';
    progressHandler(進行幅);
    アニメーションを開始します。
};
// ゲーム終了ボタンfinishBtn.onclick = function() {
        マスクスタイル表示 = 'なし';
        終了.スタイル.表示 = 'ブロック';
        scoreEnd.innerHTML += score.innerHTML;
        begin.style.display = 'ブロック';
        h.style.display = 'なし';
        progress.style.width = 180 + 'px';
    }
    //プログレスバー関数 progressHandler(index) {
    // タイマーを設定する var setProgress = setInterval(function() {
        索引 - ;
        progress.style.width = インデックス + "px";
        (インデックス<= 0)の場合{
            clearInterval(setProgress); //タイマーをクリア mask.style.display = 'block';
            stopAnimation(); //アニメーションを停止}
    }, 100);
}
//アニメーションを開始する関数 startAnimation() {
    //画像を保存するための2つの配列を定義します var imgArr = ['./images/h0.png', './images/h1.png', './images/h2.png',
        './images/h3.png'、'./images/h4.png'、'./images/h5.png'、'./images/h6.png'、
        './images/h7.png'、'./images/h8.png'、'./images/h9.png'
    ];
    var imgArr2 = ['./images/x0.png', './images/x1.png', './images/x2.png',
        './images/x3.png'、'./images/x4.png'、'./images/x5.png'、'./images/x6.png'、
        './images/x7.png'、'./images/x8.png'、'./images/x9.png'
    ];
    // すべての可能な位置を保存する配列を定義します var arrPos = [{
        左: "98px",
        上: "115px"
    }, {
        左: "17px",
        上: "160px"
    }, {
        左: "15px",
        上: "220px"
    }, {
        左: "30px",
        上: "293px"
    }, {
        左: "122px",
        上: "273px"
    }, {
        左: "207px",
        上: "295px"
    }, {
        左:「200px」、
        上: "211px"
    }, {
        左: "187px",
        上: "141px"
    }, {
        左:「100px」、
        上: "185px"
    }];
    // 画像を作成します var imgs = document.createElement('img');
    imgs.setAttribute('class', 'wolfImages');
    //画像のランダムな位置 var posIndex = Math.round(Math.random() * 8);
    //画像の表示位置を設定します。imgs.style.position = 'absolute';
    imgs.style.left = arrPos[posIndex].left;
    imgs.style.top = arrPos[posIndex].top;
    // コンソールログ(img.style.left);
    // 配列型をランダムに取得します var imgType = Math.round(Math.random()) == 0 ? imgArr : imgArr2;
    // 画像の内容を 0 番目から 5 番目までに制限するように設定します。window.index = 0;
    ウィンドウのインデックス終了 = 5;
    タイマー = setInterval(() => {
        if (インデックス > インデックス終了) {
            画像を削除します。
            タイマーの間隔をクリアします。
            アニメーションを開始します。
        }
        imgs.setAttribute('src', imgType[index]);
        インデックス++;
    }, 400);
    //画像を追加しますcontainer.appendChild(imgs);
    //スコアscoreEverySum(imgs);

}
// スコア統計関数 scoreEverySum(e) {
    e.onclick = 関数() {
        // 画像の内容を 5 番目から 9 番目までに制限するように設定します。window.index = 5;
        ウィンドウのインデックス終了 = 9;
        // 現在クリックされている画像のパスを取得します。 var src = this.getAttribute('src');
        // 画像のアドレスに基づいて判断します // クリックされた画像の種類に基づいてスコアを増減します if (src.indexOf("h") >= 0) {
            スコア.innerHTML = parseInt(スコア.innerHTML) + 10;
        } それ以外 {
            スコア.innerHTML = parseInt(スコア.innerHTML) - 10;
        }
        e.onclick = null
    }
}
//アニメーションを停止する関数 stopAnimation() {
    var img = document.querySelector('.wolfImages');
    コンソールにログ出力します。
    画像を削除します。
    タイマーの間隔をクリアします。
}

4. レンダリング

スタート画面

ここに画像の説明を挿入

終了インターフェース

ここに画像の説明を挿入

これで、JavaScript でポットビーティング グレイ ウルフ ゲームを実装する記事は終了です。より関連性の高い js ポットビーティング グレイ ウルフ コンテンツについては、123WORDPRESS.COM の以前の記事を検索するか、次の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM を応援していただければ幸いです。

以下もご興味があるかもしれません:
  • ブロック崩しゲームを実装するための JavaScript (完全なソースコード付き)
  • 航空機戦争ゲームを実現するためのjs
  • ジャンプゲームを実現するためのjs
  • フリップカードゲームを実現するjs
  • スネークゲームを実現する js (壁を追加)
  • スネークゲームを実装するためのJavaScript

<<:  MySQLのストレージエンジンの詳細な説明

>>:  Nginx サーバーで URL リンクを設定する方法

推薦する

VMware 仮想マシン (CentOS7 イメージ) を使用して Linux をインストールする

1. VMwareのダウンロードとインストールリンク: https://www.jb51.net/s...

MySQLのグループカウントと範囲集計を実装する2つの方法

1つ目:通常動作 選択 SUM(ddd) AS count_days、 場合 aa.days >...

読み込み進捗バーのネイティブ JS 実装

この記事では、ネイティブ JS によって実装された動的読み込みプログレス バーの特殊効果を紹介します...

Vue でデータが変更された後にビューを同期的に更新する方法

序文少し前に、興味深い問題を目にしました。Vue のデータが変更された後に、ビューを同期的に更新する...

Linux でのプロセスデーモン スーパーバイザーのインストール、構成、および使用

Supervisor は非常に優れたデーモン管理ツールです。自動起動、ログ出力、自動ログカットなど、...

jQueryブリージングカルーセルの制作原理を詳しく解説

この記事では、jQueryブリージングカルーセル制作原理の具体的なプロセスを参考までに紹介します。具...

Jenkins は Docker イメージを構築し、Harbor ウェアハウスにプッシュします

目次DockerファイルドキュメントJenkins の設定Spring Boot プロジェクトでは、...

HTML で特定のテキストを非表示にするにはどうすればよいでしょうか?

テキスト非表示コード、HTML 内の特定のテキストを非表示にするコードをコピーコードは次のとおりです...

Linux で Multitail コマンドを使用するチュートリアル

MultiTail は、tail コマンド機能と同様に、複数のドキュメントを同時に監視するために使用...

Bootstrap 3.0 学習ノート CSS関連補足

この記事の主な内容は次のとおりです。 1. ブラウザのサポート2. 画像3. レスポンシブツール4....

VueはWebSocketを使用してチャット機能をシミュレートします

この効果は、2つのブラウザが互いにシミュレートしていることを示しています 1. シミュレートされたノ...

Blazor における CSS 分離の問題

1. 環境VS 2019 16.9.0 プレビュー 1.0 .NET SDK 5.0.100 2. ...

MySQL でタイムスタンプを日付に変換する例

序文職場で次のような状況に遭遇しました。ログ システムのテーブルでは、時間フィールドには日付データで...

CSS で実現される HTML 背景色のグラデーション

エフェクトのスクリーンショット:実装コード:コードをコピーコードは次のとおりです。 <!DOC...

Dockerカスタムブリッジdocker0とdockerのコマンド操作の開始、終了、再起動

質問会社がサーバーを移行した後、デフォルトで作成された docker0 ブリッジが会社の外部ネットワ...