構造体に関して

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
Loki
記事: 22
登録日時: 7年前

構造体に関して

#1

投稿記事 by Loki » 7年前

今パズルゲーム(テトリスのような感じ)を作っていて、敵、自分どちらも当然同じような処理になるので、構造体で管理しているのですが、

コード:

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++での質問です。

アバター
softya(ソフト屋)
副管理人
記事: 11677
登録日時: 9年前
住所: 東海地方
連絡を取る:

Re: 構造体に関して

#2

投稿記事 by softya(ソフト屋) » 7年前

クラスで[]のオーバーロードをすればどうにでもなりますが、なにかその考え方自体に危険を感じます。
メソッドの引数で良いんじゃないのかとか? とか他の選択肢は検討されましたか?
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

アバター
バグ
記事: 130
登録日時: 9年前
住所: 愛媛県
連絡を取る:

Re: 構造体に関して

#3

投稿記事 by バグ » 7年前

考え方を逆転させたほうがすっきりしそうな気がします。

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

Loki
記事: 22
登録日時: 7年前

Re: 構造体に関して

#4

投稿記事 by Loki » 7年前

softya(ソフト屋)さん
他の選択肢は検討しました。
ただ、もしできるならやってみたいなと思って質問しました。

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

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

閉鎖

“C言語何でも質問掲示板” へ戻る