第二十五話 命名規則など
「じゃあスコアを増やすには」俺は言った。「まずスコアを入れる変数を用意して、と」
カタカタとコードに追加する。
int main(void)
{
int seikai = 5;
int kazu;
int score = 10; /* 初期値は10点 */
char buf[100];
「1つ外すたびにwhileループ内で引いていくと」
while(1)
{
(略)
score--;
}
「そして、最後に表示して……と」
printf("正解は、 %d です!\n" , seikai);
printf("スコアは、 %d です。\n" , score);
return 0;
}
「これでok……ですよね?」
結構、悩まずに作れた。
「うんうん。これは今のイツキくんには簡単すぎたかな?」
「イツキくんも、もう立派なプログラマですねー」
西原さんも喜んでいる。
「それじゃ、この機会に少し変数や関数の名前についてもっと詳しく言おうかしら」
立花先輩の言葉に、俺と西原さんはハモってしまう。
「詳しく?」
「うん。C言語の仕様だけど、今まで詳しく説明してなかったでしょ? そろそろイツキくんも知っておくべき時期ね」
そう言われてみれば、俺はまだ変数の名前の付け方についてはよく知らないな。見よう見まねで先輩の真似をしていただけだ。
「まず、C言語では、変数や関数名の大文字と小文字は区別されるの。だから、変数Aと変数aは、別物に扱われるわけ」
「ふむふむ。そういえば、今まで大文字の変数って無かったな」
「実はCでは、大文字だけの名前は、慣習的に定数やマクロで使うんだけど」
「ん? なんです、それ?」
「うーん。これは、#defineやプリプロセッサの説明が必要だから、また今度、詳しく話すわ。結構長い話になるわよ?」
次々と新しい言葉が出てきて、俺は少し混乱している。
うむむむ……。俺はもうCはマスターしたと思っていたが、それは甘かったようだ。まだまだCには俺の知らない深淵がある。
「で、変数の説明に戻るけど、数字も変数に使えるの。だけど、最初の文字には駄目よ。例えば、変数a312とかはいいけど、312abとかはエラー」
「はい」
「あと記号では、アンダーバー『_』も使えるし、これは最初に使ってもok。ただ、出来れば最初は止めた方がいいわね」
「え? なんで?」
「その名前はコンパイラがこっそり予約して使っていたりするのよ。それが、偶然たまたま同じ変数や関数名を使ってたりしたら、書き換えてしまっておかしくなっちゃうでしょ? それで、大半のプログラマは避けることにしているの」
「うーむ。ややこしい問題があるんですね」
「最初から使わなければいいだけだから、簡単なことよ」
「大文字ってどういう時に使うんですか?」
西原さんが尋ねた。
「そうね、仕様では個々のプログラマの自由なんだけど、一般的に名詞の区別で使うかなー。getValueとか。Cじゃ変数、関数名の中でスペースを使えないから、名詞の間の区別は、大文字にしたり、間にアンダーバーを入れたりして、分かり易くするの」
「自由なんだ」
「ま、こんなところね」
「わかりました。よし、コンパイルしよう」
俺はキーボードに向き直るとプログラムをコンパイルして、実行させた。
確かにスコアが表示されるようになっている。
俺は立花先輩に向くと言った。
「先輩、これで俺はゲームを作れましたね」
先輩はえ? という表情になった。
「う、うん。そうね」
「なら、先輩。約束どおり」俺は口元に笑みを浮かべる。「俺の願いを一つ──」
だが即座に先輩は答えた。
「えーっ、これくらいじゃ全然駄目駄目。ゲームプログラミングの道はそんなに甘くないのよ」
先輩は何言ってんのとばかりに首を振る。
「な、なぬっ」
この女、言いおる!
「あと二日あるからさぁ、イツキくん、もっとこのゲームを改良していこうよ、ね?」
ね、じゃねーよ!
「そうですねぇ。私ももっと見てみたいですねー」
だが西原さんの言葉には俺は逆らえない。
「わかりましたよ。二人がそういうなら、もっと凄いの作ります」
「じゃあ、イツキくん、次にどう改良してみる?」
「そうですね……」 俺はしばらく考え込んでから答えた。「じゃあハイスコアも出してみましょう」
「それだけ?」
「う……」
甘いか。
「じゃ、じゃあ、ハイスコアをセーブ出来ようにもします」
「うん。いいねー。じゃあ、そうしようー」
先輩は壁時計を見ると、頷いた。
「でももう遅いから、今日の部活はここまで。明日は学校休みだから、月曜に続きを作ろうよ」
「はい」
俺はそう先輩と西原さんに約束したが、だが、困ったことに俺にはセーブについて何もわからないのだ。
──どうすれば、セーブデータをWindowsに保存できるんだ?