ページ 11

構造体に関して

Posted: 2013年1月01日(火) 18:00
by Loki
今パズルゲーム(テトリスのような感じ)を作っていて、敵、自分どちらも当然同じような処理になるので、構造体で管理しているのですが、

コード:

struct PLAYER{
int m,e; //mは自分 , eは敵
}
PLAYER grid[列数+1][行数+1]={}; //列,行が直接対応
このようにすると、値を参照するときには

コード:

grid[列][行].m
としなければなりません。
これを、

コード:

grid.m[列][行]
のようにするためには、

コード:

struct PLAYER{
int m[列数+1][行数+1],e[列数+1][行数+1]
}
PLAYER grid;
こうすればいいのは分かるのですが、そうすると他のデータは、それぞれ構造体を作らないといけなくなってしまいます。
例えば、得点の構造体は、

コード:

struct PLAYER{
int m[2],e[2]; //0:総合得点,1:独立得点(?)
}
PLAYER point;
総合得点を参照するときは、

コード:

point.m[0]
というような感じです。

つまり、a,b,c,d,......それぞれの変数が m,e のプロパティを持っていて、そのプロパティのしたに値があるという風にしたいのですが、それは可能ではないのでしょうか。
C++での質問です。

Re: 構造体に関して

Posted: 2013年1月01日(火) 18:29
by softya(ソフト屋)
クラスで[]のオーバーロードをすればどうにでもなりますが、なにかその考え方自体に危険を感じます。
メソッドの引数で良いんじゃないのかとか? とか他の選択肢は検討されましたか?

Re: 構造体に関して

Posted: 2013年1月01日(火) 18:33
by バグ
考え方を逆転させたほうがすっきりしそうな気がします。

PLAYERという構造体(もしくはクラス)に必要なメンバを持たせて、メンバにはPLAYER型のmとeからアクセスするという形にした方がベターなのではないかと思います。

Re: 構造体に関して

Posted: 2013年1月01日(火) 20:20
by Loki
softya(ソフト屋)さん
他の選択肢は検討しました。
ただ、もしできるならやってみたいなと思って質問しました。

バグさん
やはりその方法がいいですよね。
そうします。

御回答ありがとうございました!