2017-12-24 13 views
0

これはおそらく簡単な答えでの基本的な質問ですが、その背後にあるロジックの周りに私の頭を包んでいるようには見えません。独自のクラスインスタンスを作成するプログラムの概念

よく知られているJavaゲームのMinecraftを使って簡単な例を紹介します。プレーヤーは世界に入れられ、異なるオブジェクトと対話することが許されます。プレーヤーが木材を求めているとします。彼は木を見て歩き、それを切り落とす。彼は別の木を見て歩いて同じことをする。彼はこれを何度でもやることができ、プレイヤーが十分遠くまで探検すれば、より多くの木にゲームがロードされます。しかし、これはどのように行われますか?言い換えれば、プログラムが、プレイヤーが常に対話できるツリーの本質的に無限の量をどうやって作ることができるのでしょうか?

コードにツリークラスがあると思います。しかし明らかに、プログラマーはtree1、tree2などの異なるクラスインスタンスでコード化していません。なぜなら、ゲームにロードする必要があるツリーの数がわからないからです。それで、木が何本あるのかが分からなければ、プログラムはこれをどのようにしていますか?

言い換えれば、プログラマが独自のクラスインスタンスを手動でコード化するのではなく、x個のクラスインスタンスを作る方法をプログラムが自分で決めることは理解できません。ゲーム開発者や他のプログラマーはどうしたらいいですか?

ありがとうございます。

+0

おそらくもっと良い質問は、どうやったらそれでしょうか? – ryantxr

+1

動的に割り当てられた配列とファクトリパターンを見てください。 – Dai

+0

@ryantxr可能であればプログラムが追加できる配列? – Suricata

答えて

0

ランダムなゲームマップをどのように生成するかを検討してください。地図の環境が森林にあるとしよう。どんな種類のオブジェクトが森林の一部ですか?

  1. クリッター(すなわちリス、ウサギ)
  2. 林床のテクスチャ(すなわち、草や落ち葉)

私たちは、基本的な100×100単位ゲームのマップで始まります。このプログラムでは、10と30の間に多数のツリーを生成し、同じXとY座標を持つツリーが存在しないという条件でツリーのXとY座標を生成します。他のオブジェクトについても同じことを行います。

ここで、これらのオブジェクトをすべて配置したゲームマップをロードするようにプログラムに指示します。完了しました。

+0

このオプションは完全に実行可能ですが、私はユニットマップまたはグリッドのないプログラムの点でもっと考えていました – Suricata

+0

マッピングはユニットマップと同じですもっと複雑です。 – ryantxr

0

グリッド上の各位置がオブジェクトによって占有される単純なグリッドを考えてみましょう。オブジェクトは木、岩、またはクリーチャーである可能性があります。 この世界では、マップ上に「成長可能」と定義された領域があります。 これらの領域では、既に何かが存在しない場合、何かが成長します。 ゲームにはターンがあります。各ターンの間に、私は のすべての成長可能な斑点を見つけるルーチンを実行し、そこに何かが成長していなければ、何かが芽吹くべきかどうかをランダムに決定する。 こうすれば、誰かが が木を切り落とすと、後でその木はゲームの中で新しい木を萌えることができます。

おそらく、ゲームはより複雑で、単純なグリッドは十分ではありません。 どのような場合でも、ゲームは何らかの方法ですべてのオブジェクトを追跡する必要があります。

+0

ありがとう、ありがとう! – Suricata

関連する問題