みゆにゃんぶろぐ

ゲーム(開発)/カラオケ/サイクリング/コーヒーの話題多め。最近は不定期更新。なるべく毎週更新したい

7月21日

学校の課題が山積みで、時間なくて困る今日この頃

来週の水曜日までに、コンソールでゲームを完成させなければいけない。ゲームの概要は大体考えたけど、コンソール故にどんな風に実行させようかなぁと思う今日この頃

ほかにも、コンソールじゃなくて普通の画面でシューティング作らなきゃだし、サークルのほうでも企画や仕様を考えなきゃだし、ほか色々……ひー(笑)

 

C言語のみでゲームを作る

上にも書いたけど、今課題で「コンソールでゲームを作る」というものがある。しかも、期限は来週水曜日。間に合うか怪しいレベル(笑)

その課題の禁止事項として「C++の文法は使わない(//はOK)」「グローバル変数を使わない」がある。自分たちが教科書として使ってる本に載ってることのみでゲームを作れと言われた

普段、無意識のうちにC++の文法でコードを書いてることが多々あるけど、C言語ではできないこともある

例えば、C言語で関数の途中に変数の宣言などをすることはできない

for (int i = 0; i < 10; i++)

ついついforの条件式でこんな風に書きたくなるけど、これはC言語ではできない

正直、iはfor以外では使わないことが多いし、上の書き方のほうが個人的には好きなんだけど、C言語は関数の最初にしか変数の宣言・初期化できないので、関数の最初にiを作る必要がある

int i;

for (i = 0; i < 10; i++)

 

関数内で使う変数なら、同じ個所にまとめて宣言したりするのは全然かまわないんだけど、ifやforの中でしか使わない変数があるのなら、その中で宣言したりしたほうがいいような気がするんだけどなぁ……

と思ったら、C99ではローカル変数は任意の位置で宣言できるようになったと書いてあった。あ、あれれ?上の書き方許されるの?(笑)

 

ほかに個人的に気になったのは、C言語でbool型が使えないということ

教科書に載ってること以外は使わないようにと言われたので、bool型はあるかなぁって調べてみたらbool型載っておらず……。先生に確認してみたら「boolはC++の機能だからだめ」と言われてしまった

ゲームを作ってると、フラグを立てる変数を作りたくなることがよくある。そういう時はtrueかfalseの情報だけで十分だからboolを使いたい

ほかにもコードが読みやすくなるという利点もある

if (flag == 1)

if (flag == true)

上のifは、ぱっと見て1がなんなのかわからない。それに比べて下のifは、trueならフラグ立ってるなというのが一目でわかる

だからboolがいいんだけど、C言語にはないみたいなので、#defineでboolもどきを作って我慢することにした(笑)

 

今回の課題の自分の目標は「読みやすいコードを書く」にした

だから、自分なりに必死に読みやすくなるようにコードを書いてるけど、このままじゃとても時間が間に合いそうが気がしない。まだシーン管理くらいしかしてないし……。早くゲームのメイン部分を作らなきゃ(笑)