2

私は C#/Java のバックグラウンドを持っており、HTML5 でゲームを作成する方法を学ぼうとしています。気が遠くなるような問題に出くわしました。通常は友人に尋ねるのですが、彼は MIA でした。コミュニティに質問するためにアカウントを作成したことを残念に思いますが、答えを探していましたが、役に立ちませんでした。

問題はこれです... タワーのインスタンスを保持できるゲームオブジェクトを作成したいと思います。また、一種のバックエンド リポジトリとして、タワーの配列リストを作成したいと考えています。基本的に、これらがメインのゲームで参照できる外部 js ファイルであることを望んでいました。これがjsで可能かどうか、またはこれがどのように機能するかはわかりません。

私が試みたのは... 外部 JS ファイルを作成し、tower オブジェクトを宣言します。ここで迷子になりました。最初のタイプの単純なリスト、towerList である別のオブジェクトを作成したかったのです。この外部 JS ファイルでは、一連のタワー プロパティをリストに入力します。次に、canvas 要素を含むメイン ファイルで、リストを反復処理してグラフィックを描画します。どうすればいいのかわかりません。

function Tower (type, texture, cost, damage, speed, range, health, Xpos, Ypos) 
{
this.type = type;
this.texture = new Image();
this.texture.src = texture;
this.cost = 0;
this.damage = 0;
this.speed = 0;
this.range = 0;
this.health = 0;
this.Xposition = 0;
this.Yposition = 0;
this.target = false;
}


var TowerList = [Tower("Basic", "tower.png", 0, 0, 0, 0, 0, 0, 0), Tower(), Tower()];

これが正しく機能しているとは思えませんが、メイン プロジェクトでタワーリストのインスタンスを作成し、配列のようにランダムにアクセスして、適切と思われる内容を出力できるようにしたいと考えています。JSでこれを達成するための最良のオブジェクト指向の方法は何ですか? 後でメインコードでリストからタワーを割り当てることができるようにしたい

var tL = new TowerList();
var tower = new Tower();

tower = tL[0];

今日から始めたばかりなので、学ぶことがたくさんあると思います。関数を var として再定義する必要があると思います。それ以外の場合はインスタンス化できます(以前に読んだはずです)。誰かが私を助けてくれたり、私が学ぶことができるかもしれない例を含むリソースへの方向を教えてくれたりしたら、とても感謝しています.

4

3 に答える 3

1

TowerList新しいタイプのオブジェクトであるArray必要はありません。

var towerList = [];
towerList.push(new Tower("Basic", "tower.png", 0, 0, 0, 0, 0, 0, 0));
//             ^^^
//            use 'new' to instantiate a new Tower
towerList.push(...);

繰り返すにはTowerList

var tower;

for (var i = 0, n = towerList.length; i < n; ++i) {
    tower = towerList[i];
    // do stuff with tower
}

同様にTowerList継承させることもできます:Array

function TowerList()
{
}

TowerList.prototype = [];

TowerList.prototype.yourFunction = function() {
}

var towerList = new TowerList();

towerList.push(new Tower(...));

towerList.yourFunction();
于 2013-04-08T03:38:56.810 に答える
0

おそらくタワーにオブジェクトを返してもらい、そのインスタンスを作成します。(「これ」を避けて)

モジュラー アプローチを検討してください。

大まかなアイデア:

function Tower(type, texture, cost, damage, speed, range, health, Xpos, Ypos)  {
    var obj = {};
        obj.type = type;
        obj.texture = new Image();
        obj.texture.src = texture;
        obj.cost = cost;
        obj.damage = 0;
        obj.speed = 0;
        obj.range = 0;
        obj.health = 0;
        obj.Xposition = 0;
        obj.Yposition = 0;
        obj.target = false;

    return obj;
}


var TowerList = [Tower("Basic", "r", 5, 0, 0, 0, 0, 0, 0), Tower(), Tower()];
var mytower = TowerList[1];
于 2013-04-08T04:00:25.383 に答える