# C言語で指スマゲームをつくる ## 目的 本レポートは[こちらの記事](https://hacknote.jp/archives/54586/)での参考として作成したレポートです。 正式なレポートの場合、レポートに適した言葉を使って書く必要があります。 ## 課題 指スマゲームを作成するために、作成したプログラムの解説を主にしていきます。 ## 理論 今回作成した指スマゲームのプログラムで必要な知識は以下の通りです。 1. printf関数 2. scanf関数 3. 四則演算 4. 変数 5. if文,if~else文 6. while文 7. rand関数 またここでの指スマゲームとは **自分と相手(CPU)が両親指を用いて、宣言した数と全体の指の数が同じであれば、手を一つ下げることができ、先に両方の手がなくなったほうが勝ち**というゲームです。 このプログラムのアルゴリズムは以下のような流れになっていきます 1. 自分と相手で両親指を出す 2. 先行は自分とする 3. 「**指スマ…**」の掛け声の後に全体の指が何本上がるかを予想して、宣言する 4. 3での宣言と同時に、自分が指を何本上げるかを決める 5. 自分が宣言した数と、全体の数を確認する 1. もし同じであれば、自分の手を1つ下げる 2. 違うなら、なにもせず相手のターンへ移行 以上が基本的な流れになります。 ## ソースコード [こちら](https://hacknote.jp/archives/54434/)の`yubisuma.c`プログラムの解説を行います。 24行目で自分と相手のどちらかが勝つまで繰り返します。 ```c=24 while(1){ //どちらかが勝つまで繰り返す ``` 相手の指は`teki_yubi`として、rand関数を使ってランダムな値にします。 rand関数を使うには`#include <stdlib.h>`を宣言します。 0~2の間でランダムに変化します。 ```c=42 //相手の指を考える teki_yubi = rand() % teki_point; //相手の指の数で、相手の指を変える printf("相手の手 : %d\n",teki_yubi); ``` ## 動作環境 * MacOS Mojave バージョン10.14.6 * テキストエディタ: Atom * コンパイラ:gcc ## 実行結果 結果のスクリーンショットを載せる<br> <div style="text-align: center;"> ![結果のスクリーンショット1](https://i.imgur.com/ZXRD9R9.png) 〜一部省略〜 ![結果のスクリーンショット2](https://i.imgur.com/QsAOfDD.png) </div> ## 感想 きれいに書くことができました!