最近C言語の学習を始めました。
というわけで、練習がてらC言語で簡単なプログラムを30個作れたらいいなと思います。
作っていくのは数当てゲームやFizzBuzzゲームなどです。
ちなみになぜ30かというと、C言語を一通り学習したらC++に移行したいと思っているのと、単純にハードルを下げたいからです。100って多すぎですよねww
10とか20でもいいと思ったけど、、、まあその辺はテキトーなノリです。
ちなみに30日チャレンジではなく30個としているのも、連続30日ってハードル高くね!?と思ったからですw
とはいえ、とりあえずですがゆるーく3月末までを完遂目標とします。
記念すべき1回目は数当てゲームです!
「ゲーム開発で学ぶC言語入門」という本でC言語を学習しています。
その中でゲームとして2番目に作成するのが数当てゲームです(この本の中で一番初めに作ったのはクイズゲームでした)。
今回は書籍にあったコードを参考にして、知り合いや友人など周りの方に遊んでもらえるように自分なりに書いてみたものです。
↓のリンクをクリックするとそのままソースファイルと実行ファイル(exe)をダウンロードできます。よかったら遊んでください。
※追記:ちなみに今回はよく考えず拡張子をVisualStudioのデフォルトの.cppにしてしまいましたが、調べてみるとCとC++ではコンパイル方法が違うため拡張子はちゃんと.cにすべきということがわかりました。そのうち修正するかも?(今しないのかよ)
工夫したポイント
・かんたんモード(正解と近い数字が入力された際にヒントを出す)、ふつうモード(通常のよく知られている数当てゲーム)を用意し、プレイヤーが難易度を選べるようにした。さらに、提示されているモードを選ばなかった際に隠しモードが作動するようにした。
・プレイヤーは基本的に整数の入力しか求められないが、文字やスペースや改行コードが入力された際も適切に動作するようにした。
今後やりたい機能追加
・途中でゲームをやめたくなった際に中断できるコマンドを用意したい。
・最後に「もう一度プレイしますか?」とプレイヤーに質問して、画面を閉じないまま繰り返しプレイできるようにしたい。
・整数を入力すべきタイミングで文字を入力した際に、バグのような演出をしたい。scanf("%d", &num);に文字を入力したときの無限ループを10秒間ぐらいただただ流し続けたい。そしてそれが止まったあとに文字を赤くしたりして「おい、こっちが提示した文章ちゃんと読んでんのかコラ」という警告を出したい。
・文字を一文字ずつ表示したい。文章がまるごとパッと表示されるより読みやすくなるし対話してる感が出ることを期待。
・プレイヤーの入力チェックで同じようなコードが繰り返し使われているので、うまいこと関数化したい。
・わざと不正な入力を試すタイプのプレイヤー向けに、不正な値が入力された回数をカウントして、最後それを表示したい。数当てゲームとは直接カンケー無い隠し要素ww
・あと、わざと不正な入力を試すタイプのプレイヤー向けに、怖いアニメーションとか用意して「お前繰り返しそんなことして俺と気が合いそうだな?コラ」みたいなメッセージも出したい。そうです、私がわざと不正な入力を試すタイプのプレイヤーですw
ソースコード