【初心者】スレを立てる前にココで質問を【Part16】at GAMEDEV
【初心者】スレを立てる前にココで質問を【Part16】 - 暇つぶし2ch811:名前は開発中のものです。
08/04/15 00:27:38 8mjR27PX
まさかずっと考えてたのか・・・
とりあえず自機は動いてるみたいだし
>>720丸写しで動きそうな気もするんだがね

まあ、>>810だろうな

812:名前は開発中のものです。
08/04/15 23:34:09 R308PVzI
敵とか主人公とかアイテムの画像はひとつの配列入れて描いたほうがいいの?
それともべつべつ?

813:名前は開発中のものです。
08/04/15 23:35:32 VPYFMazR
大体の場合画像はいっぺんで描いた方が早いよ

814:名前は開発中のものです。
08/04/15 23:52:03 805Lw7LR
>>812
んなもんどっちでやってもゲームは作れるよ。好きにすれ

ところで俺がたった今3秒でひらめいた糞ゲーは
主人公が敵になったりアイテムが仲間になったりするんだ。凄いだろ?
だから敵とか主人公とかアイテムは共通の手続きで取り扱いたいね
ひとつのリスト(配列)に入れるというのは悪くない考えだ

815:名前は開発中のものです。
08/04/16 00:05:58 4gn/04tn
オブジェクト指向でのデータ構造に関する質問です。

シューティングゲームの敵オブジェクトを数種つくるとき、

1.親クラスを同じにして種類ごとのクラスをつくる
2.一種類のEnemyクラスのオブジェクトをたくさん作って、種類を表す変数kindの値によって挙動を場合分け
3.一つのEnemyManagerクラスをつくって、必要な変数を配列として保持し、各敵をインデックスによって管理
4.その他俺が考え付かない素晴らしい方法

のどれをすべきなのでしょうか。ご指導頂ければ幸いです。

的外れなこと言ってたらごめんなさい^^;

816:名前は開発中のものです。
08/04/16 00:11:20 6tcgJhqC
>ご指導頂ければ幸いです。

先生、手を動かす前から悩む子は嫌いだな
手が使えないなら口を使ってもいいんだよ

とりあえず1~3を全部やれ。すると人は4に行き着く
でもそれが勘違いだったことに気づくのに時間はかからない

そのときHSPは救いの手を差し伸べるだろう

817:815
08/04/16 00:24:52 4gn/04tn
>>816
一通り試してみたけど違いが分からなかった、という前提でお願いします。
俺が気付かないだけで「これはやっちゃダメだろ」みたいのがあるのかな、って。

つまりHSPから出直せってことですか?

818:名前は開発中のものです。
08/04/16 00:27:15 1RgW84Mk
1&2

819:名前は開発中のものです。
08/04/16 00:51:51 HSHLz9Y4
自分が組みやすいように組めばいいよ
ゲームの規模やシステムによって最善は変わってくるだろうし

820:名前は開発中のものです。
08/04/16 01:14:15 6tcgJhqC
>>817
>一通り試してみたけど違いが分からなかった、という前提でお願いします。

なら話は簡単だな。どれでやってもゲームは作れるってこと
あとは自分の都合にあったやり方を選択すればいいだけ
作るときの人数構成は。一人で作ってるのか、2~3人で作ってるのか
ゲーム自体の規模は。敵の数は、種類は、ステージ構成は、2Dなのか3Dなのか
敵やステージのデータを誰が作るのか、誰が調整するのか、自分なのか
それとも仲間なのか、それはプログラマなのか、それとも絵描きなのか
いや絵もプログラムも作れない妹にやらせるのか、などなど

実際に1~3全部やってみたのにそれぞれの得手不得手、長所短所が
見えないなんてことは絶対にありえないからな

821:名前は開発中のものです。
08/04/16 09:12:06 Fn26u7Ao
>>815
俺ならこうする。

class Enemy {
  int x;
  int y;
  int life;
  void draw(int x, int y);
  void move();
}

class Enemy1 extends Enemy{
  void draw(int x, int y) {
  ...
  }

  void move(int x, int y) {
  ...
  }
}

1. 敵は共通して現在の座標、ライフ、描画メソッド、移動メソッドを持つ。これを基本クラスとする。
2. 個別の敵オブジェクトは基本クラスであるEnemyクラスを継承して実装する。
3. EnemyManagerは敵オブジェクト(インスタンス)を配列、連結リストなどで保持して一括管理する。


822:815
08/04/16 21:13:41 4gn/04tn
>>820
違いが分からなかった、というのはおかしいですね。すみません。
どれが最適か分からなかった、と言いたかったのです。
>>819さんの言うとおり、結局は個人の好みに行き着くのでしょうか。
>>821さんのように、1+管理クラスでやってみようと思います。皆さん回答ありがとうございました。

823:名前は開発中のものです。
08/04/16 22:39:55 8TmMLG1t
小品ならそれでもいいけど
中作以上だとクラスがあぼーんする

824:名前は開発中のものです。
08/04/17 11:28:54 zg8t/6Yz
>>823
規模や状況によって最適解は変わるってアドバイス受けてるんだから
それくらい作ってりゃ気付くでしょ

825:名前は開発中のものです。
08/04/18 19:51:15 rgTpHM1z
ブロック崩しの者です
あれから試行錯誤してみましたがイマイチ解決に向かいませんでした
ただボールが勝手に浮上していくときもあったのでこれはもしかすると・・・なのでしょうか
URLリンク(www2.uploda.org)

いろいろいじって汚くなったのでかなり削ってしまいましたが
間違いなどを指摘していただければありがたいです
ちなみにスペースキーを押したらボールが浮上することだけを考えたので
壁に当たったときの挙動などは考えていません

826:名前は開発中のものです。
08/04/18 20:28:24 rLjiap3t
DrawBox(bx,by,bx+10,by+10,GetColor(0,140,140),TRUE);
bx=jx+45;←この行
by=jy-10;←この行
if(bflag ==1){
は要らないんじゃないか?



827:名前は開発中のものです。
08/04/18 20:34:11 rgTpHM1z
>>826
それなしでやったところ、ボールが画面左上端に表示されてしまいました
bfag==1にボール座標を書いてるのですが認識されてないんでしょうか?

828:名前は開発中のものです。
08/04/18 20:38:32 d+O1TZBw
bx,byが値入れられる前に一度使われてるぜ
あと、
>DrawBox(bx,by,bx+10,by+10,GetColor(0,140,140),TRUE);
>bx=jx+45;
>by=jy-10;   ←ここで上書きされてるから上昇しない
>if(bflag ==1){ (略

上の真中2行削除して、メインループの前の宣言時に
int bx = jx + 45, by = jx - 10;
とでもしとけ

と実行してないけど言ってみるテスト
インデントは綺麗に使おうぜ

829:名前は開発中のものです。
08/04/18 20:40:46 d+O1TZBw
ってフラグ類も初期化されてなくね?

830:名前は開発中のものです。
08/04/18 20:41:19 rLjiap3t
変数に初期値を入れてないからbflagの初期値は不定じゃないかな?
bx,by,bflagを初期化してみたら?


831:名前は開発中のものです。
08/04/18 20:42:21 JOpRcNIL
bflag=1もループ前にないといけないな


最新レス表示
レスジャンプ
類似スレ一覧
スレッドの検索
話題のニュース
おまかせリスト
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch