LoginSignup
7
5

More than 5 years have passed since last update.

C言語でインベーダーゲームを作った話

Posted at

あけましておめでとうございます

1/1に書く記事ではないきがしますが去年(2018)の夏前にC言語でゲームを作った話を書こうと思います。

環境

OS:Ubuntu 18.04
Editor:VSCode
Compiler:clang

自分はMac,Linux,Windowsも全部使う人間でどんな環境でも動くソースコードを書きたかったので特に決まった環境はなかったのですがメインはUbuntuで書いていました。

完成形

Peek 2019-01-01 02-42.gif

しょぼい

ソースコード

操作やルールなど

  • 操作はすべてマウスで左クリックで砲台からレーザーを発射します。
  • マウスを左右へ動かすことにより砲台も動きます。
  • インベーダー側からも3発(変更可能)レーザーをランダムに発射してきます。
  • インベーダーは左右へ動いて壁に当たると徐々に下がってきて水色のラインを超えると強制的にゲームオーバーとなります。

作成過程

ライブラリの基本的な使い方を調べる

外部のライブラリを使って何かをするということを全くしたことがなかったのでネットで色々検索してました。
今回使ったGLUTというライブラリはとても古いライブラリで情報は多かったので助かりました。

実装していく

インベーダーゲームにした理由はとくにないんですが目標がそこまで高くなくて個人で制作するには良かったと思っています。
GLUTはとっても便利なライブラリで使い勝手は良かったです。

苦労した点

  • ゲーム制作の基本がなさすぎて当たり判定の実装などが全くわからなかったので効率の悪いアルゴリズムを実装してしまっているはず...(いまだにわかってない)
  • インベーダーをGIMPで1ドットずつ描いたのですが、とてもつらかった
  • モチベーションの維持

反省点

  • ヘッダファイルとソースファイルの分割が綺麗ではない(重要)
    • func.hという神ファイルにすべてを書き込むのは良くなかったと反省...
  • ソースツリー皆無(CMakeするときは楽でいいです...)
  • 綺麗なソースコードとは言えない

良かった点、成長した点

  • 変数名や関数名はなかなかわかりやすいのではないかと思う(わかりにくいのもあるが)
  • グローバル変数を使わなければならない時があるということを知れた
  • クロスプラットフォームに制作する目標を達成できた

総合評価

学生個人で制作するレベルにしては頑張ったのではないかと思っています。

次はC++,GLFW,GLEWなんかを使ってこのゲームを書き直ししようかなと思っています

7
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
7
5