HTML5 スタートレックを自分で作成するためのサンプル コードを共有する

黄舟
リリース: 2017-04-01 11:26:10
オリジナル
1811 人が閲覧しました

学習html5canvas3日目、物足りなさを感じて忘れてしまいましたあっという間にできたので、空き時間を利用して、プレイする小さなゲームを作成する準備をしました。ゲームはパフォーマンスに注意を払う必要があり、ユーザーによる変更可能性も考慮する必要があると思います。さて、シンプルですが興味深い旅を始めましょう—

最初に効果を確認したい場合は、ジャンプを試してみてください

最初のステップはもちろんキャンバスです

1 <canvas id="canvas" width="300" height="400">你的浏览器不支持Canvas</canvas>
ログイン後にコピー

JavaScript全体の構造は次のとおりです:

var定义一些变量
planeMoveTimer飞机移动监听/计时器
attackEnemyTimer发射炮弹计时器
onkeydown监听
onkeyup监听
drawPlane画飞机
drawEnemy画敌人
ログイン後にコピー

最初にいくつかの変数を事前定義します

var _keyA = _keyD = _keyW = _keyS = 0,  // 存储按键状态

    step = 8,                          // 飞机移动速率
    w = 34, h = 44,                  // 飞机实际大小
    planeX = 133, planeY = 356,      // 飞机目前位置
    planeSrc = "feiji.png",          // 飞机素材位置
    imgW = 177, imgH = 220,          // 飞机源图尺寸

    cw = 300, ch = 400,  // 画布大小
    canvas = document.getElementById("canvas"),
    ctx = canvas.getContext("2d");
ログイン後にコピー

このゲームでは 1 つの外部リソース (画像) のみを使用します。アドレスを取得するには、次の場所にあるプロジェクトの GitHub の場所のリンクにアクセスしてください。この記事の一番下にジャンプ

最初に2つの描画方法を見てみましょう

rreee

飛行機の絵はonload()メソッドで描画できるはずです。現在の敵はまだオレンジ色の束です。動かないレンガをキャンバスの上部に描画します

次に、2 つのキーボード イベントを見てください:

変数 _keyA、_keyD、_keyW、_keyS を直接設定する必要がある理由については、描画イベントをトリガーする場合、その理由は、2 つのキーを同時に長押しすると、イベントを同時にトリガーすることはできず、最初に押したキーは 1 回だけトリガーされ、最後に押したキーだけが常にイベントをトリガーできるためです。簡単に言うと、左上隅に移動して A と W を同時に押したい場合、A が W よりも少し遅いと仮定すると、その瞬間は の移動経路になります。航空機は最初に 1 ステップ上に移動し、次に左に移動します。これは明らかに私が望んでいることではありません。ボタンが押されたときのステータスを 1 に設定するために 4 つの変数を使用します。ボタンが押されたとき 立ち上がるときにステータスを 0 に設定し、タイマーを使用してこれらのキーのステータスを継続的に読み取り、時間内に航空機のステータスを更新します

航空機の移動タイマーは次のとおりです。

ctx.clearRect() を使用して、航空機の次の状態を描画する準備をします。ただし、ゲームに背景がある場合、大きな問題があります。と重複している場合は、航空機ではないものを削除する必要はありません。申し訳ありませんが、この問題は今のところ考慮しません

ボタンの状態を判断することで、各動作のステップ距離がプリセットされます。ステップを実行し、境界を処理します

その後、攻撃タイマー:

var planeMoveTimer = window.setInterval(function(){
    if(_keyA||_keyD||_keyW||_keyS){
        ctx.clearRect(planeX, planeY, w, h);
        _keyA && (planeX-=step);
        _keyD && (planeX+=step);
        _keyW && (planeY-=step);
        _keyS && (planeY+=step);
        planeX>=0 || (planeX=0);
        planeX<=(cw-w) || (planeX=cw-w);
        planeY>=0 || (planeY=0);
        planeY<=(ch-h) || (planeY=ch-h);
        drawPlane(planeX, planeY);
    }
}, 10);
ログイン後にコピー

砲弾は 0.5 秒ごとに発射され、各砲弾には制御しやすいように個別のタイマーが設定されています。私も最初にワイプしてからペイントする方法を使用しています。砲弾の動きにはステップ距離もあるので、砲弾のいわゆる貫通効果がダイレクトに現れます。 背景と同じ色で直線を描くだけで砲弾のステップ距離を変更してみてください。砲弾の移動速度、砲弾のサイズも調整できます

最後のステップは、敵と航空機を描画することです。

りー

完了!まだまだ最適化を進めてプレイアビリティを高めていきたいのですが、時間がないので他にも学ぶべきことがたくさんあるので、とりあえずこのゲームはこんな感じです!シンプルではないでしょうか!はは、恥ずかしいしタイトルが魅力的すぎて仕方ない!

以上がHTML5 スタートレックを自分で作成するためのサンプル コードを共有するの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!