JavaScript で戦車戦の全記録を作成する (2)_JavaScript スキル
2. マップを改善する
私たちのマップには、広場、壁、鉄、草、水、本部などの障害物があります。 これらすべてをオブジェクトとしてデザインできます。
2.1 障害物オブジェクトグループの作成
オブジェクト グループには、さまざまなマップ上のオブジェクトが格納されており、オブジェクトのプロパティを使用して、オブジェクトが通過できるか、攻撃できるかを決定します。
Barrier.js:
// TankObject
から継承された障害物基本クラス オブジェクト バリア = 関数 () {
This.DefenVal = 1 // 防御力
; This.CanBe Attacked = true // 攻撃可能かどうか
}
Barrier.prototype = new TankObject();
// 壁
WallB = function () { }
WallB.prototype = new Barrier();
// オープンスペース
EmptyB = function () {
This.CanAcross = true // パススルー可能
}
EmptyB.prototype = new Barrier();
// 川
RiverB = function () {
This.DefenVal = 0;
This.CanBe Attacked = false; // オブジェクトのメンバーが最初に取得され、親クラスから継承されたメンバーが上書きされます。
}
RiverB.prototype = new Barrier();
// スチール
SteelB = function () {
This.DefenVal = 3;
}
SteelB.prototype = new Barrier();
// 草オブジェクト
TodB = function () {
This.CanBe Attacked = false;
This.DefenVal = 0;
This.CanAcross = true;
}
TodB.prototype = new Barrier();
//本社
PodiumB = function () {
This.DefenVal = 5;
}
PodiumB.prototype = new Barrier();
2.2 マップに書き込まれるデータ。
Common.js に次のコードを追加します:
//マップ要素タイプの列挙
/*
0: オープンスペース
1: 壁
2: 鋼
3: 茂み
4:川
5: 本部
*/
var EnumMapCellType = {
空: "0"
、壁:「1」
、鋼:「2」
、トッド:「3」
、川:「4」
、表彰台:「5」
};
//各地形に対応するスタイル名
var ArrayCss = ['空', '壁', '鋼', 'tod', '川', '表彰台'];
// レベルマップ
/*レベル*/
var str = '0000000000000';
str = ',0011100111010';
str = ',1000010000200';
str = ',1200333310101';
str = ',0000444400001';
str = ',3313300001011';
str = ',3011331022011';
str = ',3311031011011';
str = ',0101011102010';
str = ',0101011010010';
str = ',0100000000110';
str = ',0100012101101';
str = ',0010015100000';
//ストレージ レベル マップ 0、1、2、3... はそれぞれ 1 ~ n です...Level
var Top_MapLevel = [str];
2.3 地図を描く
準備が整ったので、料理の提供と地図の作成を始めましょう。前述したように、マップは 13 * 13 のテーブルです。そこで、ゲーム読み込みオブジェクトに行属性と列属性を追加し、初期化マップ メソッドを追加します。
Frame.js:
// ゲームロードオブジェクト ゲーム全体のコアオブジェクト
GameLoader = function () {
This._mapContainer = document.getElementById("divMap") // ゲームマップを格納する div
; This._selfTank = null // プレイヤーのタンク
This._gameListener = null // ゲームのメインループタイマー ID
/*v2.0 で追加された新しい属性*/
This._level = 1;
This._rowCount = 13;
This._colCount = 13;
This._battleField = [] // マップ オブジェクトの 2 次元配列を格納します
; }
//マップメソッドをロード
ロード: function () {
// レベルに応じてマップを初期化します
var map = Top_MapLevel[this._level - 1].split(",");
var mapBorder = UtilityClass.CreateE("div", "", "mapBorder", this._mapContainer);
// マップ テーブル内の各セルを走査します
for (var i = 0; i < this._rowCount; i ) {
// div を作成すると、各行のマップがこの div に保存されます
var divRow = UtilityClass.CreateE("div", "", "", mapBorder);
//一次元配列に別の配列を作成
This._battleField[i] = [];
for (var j = 0; j
var v = (map[i] &&map[i].charAt(j)) || 0;
// spa 要素を挿入します。span 要素はマップ単位です
var spanCol = UtilityClass.CreateE("span", "", "", divRow);
spanCol.className = ArrayCss[v];
// その後の衝突検出を容易にするために、マップ オブジェクトを 2 次元配列に配置します。
var to = null;
スイッチ (v) {
case EnumMapCellType.Empty:
to = new EmptyB();
休憩;
case EnumMapCellType.Wall:
to = new WallB();
休憩;
case EnumMapCellType.Steel:
to = new SteelB();
休憩;
case EnumMapCellType.Tod:
to = new TodB();
休憩;
case EnumMapCellType.River:
to = new RiverB();
休憩;
case EnumMapCellType.Podium:
to = new PodiumB();
休憩;
デフォルト:
throw new Error("マップ番号が範囲外です!");
休憩;
}
to.UI = scanCol;
// j は X です。内側のループは水平なので、x は横軸です
to.XPosition = j;
to.YPosition = i;
// 現在のマップ オブジェクトを 2 次元配列に格納します。obj は障害物オブジェクト、occupier は占有しているオブジェクトです
This._battleField[i][j] = { obj: to、occupier: null、lock: false };
//
の終了 //
は終了 // ウィンドウのグローバル変数に入れます
window.BattleField = this._battleField;
}
OK、地図はこれで完成です。 ここのコメントは非常に詳しく書かれているので、まだ理解できない場合は、ソースコードをダウンロードして自分でデバッグすると理解しやすくなります。
ここでは主に地図データを読み込み、各地図をspan要素としてHTMLドキュメントに挿入します。そして、マップ オブジェクトを 2 次元配列に格納します。将来、衝突検出を行うときに、オブジェクトの座標を通じて対応する配列オブジェクトを直接取得できるようになり、非常に便利になります。
ソースコードを添付します: http://xiazai.jb51.net/201411/yuanma/jstankedazhan(jb51.net).rar

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

Video Face Swap
完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック









JavaScript チュートリアル: HTTP ステータス コードを取得する方法、特定のコード例が必要です 序文: Web 開発では、サーバーとのデータ対話が頻繁に発生します。サーバーと通信するとき、多くの場合、返された HTTP ステータス コードを取得して操作が成功したかどうかを判断し、さまざまなステータス コードに基づいて対応する処理を実行する必要があります。この記事では、JavaScript を使用して HTTP ステータス コードを取得する方法を説明し、いくつかの実用的なコード例を示します。 XMLHttpRequestの使用

Go 言語は、型定義とメソッドの関連付けを通じてオブジェクト指向プログラミングをサポートします。従来の継承はサポートされていませんが、合成を通じて実装されます。インターフェイスは型間の一貫性を提供し、抽象メソッドを定義できるようにします。実際の事例では、顧客操作の作成、取得、更新、削除など、OOP を使用して顧客情報を管理する方法を示します。

PHP における OOP のベスト プラクティスには、命名規則、インターフェイスと抽象クラス、継承とポリモーフィズム、依存関係の注入が含まれます。実際のケースには、ウェアハウス モードを使用してデータを管理する場合や、ストラテジー モードを使用して並べ替えを実装する場合などがあります。

Go 言語は、オブジェクト指向プログラミング、構造体によるオブジェクトの定義、ポインター レシーバーを使用したメソッドの定義、インターフェイスによるポリモーフィズムの実装をサポートしています。オブジェクト指向の機能は、Go 言語でのコードの再利用、保守性、カプセル化を提供しますが、クラスや継承、メソッド シグネチャ キャストといった従来の概念が欠如しているなどの制限もあります。

Golang (Go 言語) には伝統的な意味でのクラスの概念はありませんが、構造体と呼ばれるデータ型が提供され、これによってクラスと同様のオブジェクト指向機能を実現できます。この記事では、構造体を使用してオブジェクト指向機能を実装する方法を説明し、具体的なコード例を示します。構造体の定義と使用法 まず、構造体の定義と使用法を見てみましょう。 Golang では、type キーワードを通じて構造を定義し、必要に応じて使用できます。構造には属性を含めることができます

JavaScript で HTTP ステータス コードを取得する方法の紹介: フロントエンド開発では、バックエンド インターフェイスとの対話を処理する必要があることが多く、HTTP ステータス コードはその非常に重要な部分です。 HTTP ステータス コードを理解して取得すると、インターフェイスから返されたデータをより適切に処理できるようになります。この記事では、JavaScript を使用して HTTP ステータス コードを取得する方法と、具体的なコード例を紹介します。 1. HTTP ステータス コードとは何ですか? HTTP ステータス コードとは、ブラウザがサーバーへのリクエストを開始したときに、サービスが

オブジェクトのステータスの追跡、ブレークポイントの設定、例外の追跡を習得し、xdebug 拡張機能を利用することで、PHP オブジェクト指向プログラミング コードを効果的にデバッグできます。 1. オブジェクトのステータスを追跡する: var_dump() と print_r() を使用して、オブジェクトの属性とメソッドの値を表示します。 2. ブレークポイントの設定: 開発環境にブレークポイントを設定すると、実行がブレークポイントに到達するとデバッガが一時停止するため、オブジェクトのステータスを簡単に確認できます。 3. 例外のトレース: try-catch ブロックと getTraceAsString() を使用して、例外発生時のスタック トレースとメッセージを取得します。 4. デバッガーを使用します。xdebug_var_dump() 関数は、コードの実行中に変数の内容を検査できます。

JavaScript と WebSocket: 効率的なリアルタイム検索エンジンの構築 はじめに: インターネットの発展に伴い、ユーザーのリアルタイム検索エンジンに対する要求はますます高くなっています。従来の検索エンジンで検索を行う場合、ユーザーは検索ボタンをクリックする必要があり、リアルタイムの検索結果を求めるユーザーのニーズに応えることができませんでした。そのため、JavaScript と WebSocket テクノロジを使用してリアルタイム検索エンジンを実装することが注目されています。この記事ではJavaScriptの使い方を詳しく紹介します。
