プログラミングの館を見せていただいたのですがセーブの仕方を見ていたときに疑問に思いました
セーブをするときに予め構造体で変数を定義していればお手軽と書いてあったのですが
例えば
こんな感じで主人公構造体が定義されていた場合、
このように定義することは不可能になりますよね?・・・多分
二重定義になっちゃうんじゃないかなぁ~と思うのですがどうすればいいのでしょうか?
構造体 二重定義
Re: 構造体 二重定義
セーブ情報構造体のメンバーとして、主人公構造体型の変数を定義すればいいのではないでしょうか。KKK さんが書きました: 要するに主人公構造体で宣言してある変数をどうやって
セーブ情報構造体でまとめるか知りたいのです
なお、異なる構造体に同じ属性を持つメンバーを定義すること自体は、全く問題なくできます。
つまり、最初に投稿された2つの構造体を定義することは可能です。
バグのないプログラムはない。
プログラムは思ったとおりには動かない。書いたとおりに動く。
プログラムは思ったとおりには動かない。書いたとおりに動く。
Re: 構造体 二重定義
se-buKKK さんが書きました: でも使う時にse-bu.xとsyujinnkou.xってなりますよね
と
syujinnkou
という、全く別々の変数が、たまたま同じ
x
というメンバーを持っているだけのことです。
てな具合に、年齢と身長をメンバーとする太郎さんと花子さんという変数を定義したとき、
2人の年齢を参照するには
taro.age
hanako.age
って書きますよね。
taroとhanakoという全く別々の変数が同じメンバーageを持っているのですから、
こういう書き方はごくごく当たり前です。
バグのないプログラムはない。
プログラムは思ったとおりには動かない。書いたとおりに動く。
プログラムは思ったとおりには動かない。書いたとおりに動く。
Re: 構造体 二重定義
回答ありがとうございます
セーブ情報構造体のメンバーに主人公構造体型の変数と仰りましたが
セーブ情報構造体{
syujinnkou.x
syujinnkou.y
}se-bu
このようにすればいいという事でしょうか?
物分りが悪くすいません
セーブ情報構造体のメンバーに主人公構造体型の変数と仰りましたが
セーブ情報構造体{
syujinnkou.x
syujinnkou.y
}se-bu
このようにすればいいという事でしょうか?
物分りが悪くすいません
Re: 構造体 二重定義
何度もすみません; これを最後の質問にしますので回答してください
セーブ情報構造体にstruct player_t playerと書いてありますが
これより前に構造体の実体が宣言?されているのでstruct playerと書いちゃいけないんですか?
savedata[3]と配列があるのは分かりますが後に出てくるindexというのは
どんな意味というかどんな仕事(役割)をしているのですか?
セーブ情報構造体にstruct player_t playerと書いてありますが
これより前に構造体の実体が宣言?されているのでstruct playerと書いちゃいけないんですか?
savedata[3]と配列があるのは分かりますが後に出てくるindexというのは
どんな意味というかどんな仕事(役割)をしているのですか?
Re: 構造体 二重定義
プレイヤー情報の変数名とセーブ情報構造体のメンバー名が同じであるため、
KKKさんはやや混乱をきたしておられるようです。
両者を明確に区別したコード例を書いてみましょうか(原典:ISLeさん)。
struct player_t
の後ろに変数名やメンバー名を書かねばなりません。
struct player
という書き方はできません。
何番目の要素にデータを放り込むか、という意味です。
KKKさんはやや混乱をきたしておられるようです。
両者を明確に区別したコード例を書いてみましょうか(原典:ISLeさん)。
//プレイヤー情報
struct player_t {
int x, y;
int hp;
} aaaaaa;
//セーブ情報
struct savedata_t {
struct player_t bbbbbb;
} savedata[3];
// セーブ処理関数
void write_savedata(int index) {
savedata[index].bbbbbb = aaaaaa; // 指定されたスロットのsavedataのメンバにコピー
// 書き出し
}
今回の場合、プレイヤー情報構造体型の変数(あるいは構造体のメンバー名)を定義するときは、KKK さんが書きました: これより前に構造体の実体が宣言?されているのでstruct playerと書いちゃいけないんですか?
struct player_t
の後ろに変数名やメンバー名を書かねばなりません。
struct player
という書き方はできません。
savedata[3]と定義した配列(これはあくまで例です。KKKさんがどういうプログラムを作ろうとしているかとは別の話)のKKK さんが書きました: indexというのは
どんな意味というかどんな仕事(役割)をしているのですか?
何番目の要素にデータを放り込むか、という意味です。
バグのないプログラムはない。
プログラムは思ったとおりには動かない。書いたとおりに動く。
プログラムは思ったとおりには動かない。書いたとおりに動く。
Re: 構造体 二重定義
な、なるほど・・・
構造体の中で構造体の実体をつくっていたのですね・・・
(用語はあまり知らないので分がおかしいと思いますが)
両先輩方、ありがとうございました
構造体の中で構造体の実体をつくっていたのですね・・・
(用語はあまり知らないので分がおかしいと思いますが)
両先輩方、ありがとうございました