ページ 11

構造体の管理

Posted: 2011年8月28日(日) 16:08
by へへへ.png
構造体についての質問があるんですけど
前にどこかの掲示板でアイテム情報は攻撃力、防御力のデータなどを構造体にまとめておく
ということを見た記憶があるんですね
私、素人なもんで疑問に思ったことがあるのですが構造体というのは常に記憶させておくと
容量がすごいことになると思うんです 
だからif文で分岐させて、例えばメニュー画面を表示したりもしくはRPGの町のお店にいったりしたときに
構造体を定義してやればいいのではと思ったのです。。。

しかし、私ですね 構造体を上書きして書き換えることはできるんですけども
構造体を消去する?メモリーから消すことができないのです
そのようなやり方であっているのかもわかりませんし、だから教えてください


そして、もう一つ   私、BCC Developerを使っているのですが
コンパイルしたときにエラー表示がされることがありますよね
エラーがでた行も教えてくれるのですがどうも正確ではないのです
なぜなのでしょうか?

Re: 構造体の管理

Posted: 2011年8月28日(日) 16:26
by softya(ソフト屋)
へへへ.png さんが書きました:私、素人なもんで疑問に思ったことがあるのですが構造体というのは常に記憶させておくと
容量がすごいことになると思うんです 
構造体なんて大した容量は食いませんよ。
まぁ、SFCやGBぐらいメモリが少ないと別ですけどね。
へへへ.png さんが書きました:だからif文で分岐させて、例えばメニュー画面を表示したりもしくはRPGの町のお店にいったりしたときに
構造体を定義してやればいいのではと思ったのです。。。
この構造体に入るデータは何処から現れるのでしょうか?
何もない空間から現れるわけはないですよね?
プログラムに含まれているとしたら、起動した段階でメモリに含まれていますのでブロック内や関数内で改めて構造体変数を定義してもメモリは減りませんよ。
へへへ.png さんが書きました: そして、もう一つ   私、BCC Developerを使っているのですが
コンパイルしたときにエラー表示がされることがありますよね
エラーがでた行も教えてくれるのですがどうも正確ではないのです
なぜなのでしょうか?
;の忘れとかだとC言語の文脈上では、次の命令がエラーになることが多いです。それはありませんか?
それなら、他のコンパイラでも同じです。

Re: 構造体の管理

Posted: 2011年8月28日(日) 20:05
by Dixq (管理人)
何か勘違いをされているのではないかと思いますが、

コード:

int a;
int b;

と

struct aa_t{
    int a;
    int b;
};
は同じ大きさですよ。
※注:
http://www.google.co.jp/search?sourceid ... 88&qscrl=1

仮に大規模RPGなどで、アイテム情報が膨大で、メモリに展開すると量が多くなってしまう場合は、都度読み込みになるでしょうが、
最初のうちは、メモリに全部持ちで良いと思いますよ。(1アイテム64バイトだとしても、1万個あっても0.6MBにしかなりませんが)
効率化は、基礎が分かってからで十分良いと思います。

構造体を動的に確保・解放したいなら、malloc、freeを使ってください。
http://www.google.co.jp/search?sourceid ... oc&qscrl=1

でも、最初は、そんなことしない方が良いと思います。
最初のうちは容量なんて気にせずにとにかくゲームの基礎設計を学んでいった方が良いと思います。

> エラーがでた行も教えてくれるのですがどうも正確ではないのです

そのエラーメッセージはどんなものですか?
恐らくそれはBCC Developerじゃなくても同じだと思いますが、コンパイラはVC++もお勧めです。
http://dixq.net/vcpp.html