ゲームプログラミングの館 3.3について

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
hibi

ゲームプログラミングの館 3.3について

#1

投稿記事 by hibi » 12年前

タイトル画面に選択をつけようと思い、
「ゲームプログラミングの館 3.3章」を読みました。

コード:

// メニュー項目の表示に必要な構造体を用意する
typedef struct{
        int x, y;       // 座標格納用変数
        char name[128]; // 項目名格納用変数
} MenuElement_t ;
この128とはなんですか。また、構造体の定義の時は、structが先ではないんですか。そのあとに型だったと思うのですが。
「DXライブラリのみ」みたいのでしょうか。最後にMenuElement_t とあるのはなんですか。

コード:

// メニュー項目要素を5つ作る
        MenuElement_t MenuElement[5]={
                {  80, 100, "ゲームスタート" }, // タグの中身の順番で格納される。xに80が、yに100が、nameに"ゲームスタート"が
                { 100, 150, "おまけ" },
                { 100, 200, "ヘルプ" },
                { 100, 250, "コンフィグ" },
                { 100, 300, "ゲーム終了" },
        };
配列の定義からすると「MenuElement_t 」は型なんですが、型を構造体の終わりで作るんですか。

構造体があまりわからないんです。どうか、この構造体の悩みを解決してください。お願いします。

アバター
みけCAT
記事: 6734
登録日時: 15年前
住所: 千葉県
連絡を取る:

Re: ゲームプログラミングの館 3.3について

#2

投稿記事 by みけCAT » 12年前

128はchar型配列nameの要素数です。名前を表す文字列を格納する変数のようなので、十分な長さが必要です。
アラインメントの関係で、4の倍数にしておくのがいいのだろうと思います。

コード:

typedef 元の型 新しい型名;
の構文で、元の型の部分に

コード:

struct{
        int x, y;       // 座標格納用変数
        char name[128]; // 項目名格納用変数
}
が、新しい型名にMenuElement_tが入っています。
元の型(構造体)では、きちんとstructが先に来ていますね。
繰り返しになりますが、最後にMenuElement_tとあるのはこの構造体型をMenuElement_tと名付ける、ということです。

詳しくはここの一番下をどうぞ。
http://9cguide.appspot.com/16-01.html
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)

hibi

Re: ゲームプログラミングの館 3.3について

#3

投稿記事 by hibi » 12年前

「typedef」がよくわかりません。

typedef 新しい型の形 新しい型名

このように使うようですが、(省略できるのはわかりました)
型の形、型名ってなんですか。 新しいもなにも元がないと思うのですが。

解説お願いします

アバター
みけCAT
記事: 6734
登録日時: 15年前
住所: 千葉県
連絡を取る:

Re: ゲームプログラミングの館 3.3について

#4

投稿記事 by みけCAT » 12年前

もう一度言いますが、typedefは

コード:

typedef 元の型 新しい型名;
という構文です。
(警告が出るかもしれませんが)構造体変数hogeを

コード:

struct {
    int foo;
    int bar;
} hoge;
のようにも宣言できます。
よって、struct { ~ }はintなどと同じような立派な「型」なのです。これが「元」です。
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)

閉鎖

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