【C言語】制御文でじゃんけんゲームを作ってみる

前回、if文とwhile文をまとめたので、それを用いた簡単なじゃんけんゲームをプログラミングで作ってみたいと思います。

復讐ですがif分は

もし、◯◯であれば××の処理を実行する

while文は

◯◯が終わるまで□□を繰り返す

という意味でした。

簡単なじゃんけんゲームを作ってみる

高度なランダム機能を使ったじゃんけんゲームではなく、ここでは前回の勉強の応用として、if文とwhile文を使ったプログラミングを作ります。

そのうちプログラミングが慣れてくればもうちょっとすごい、じゃんけんゲームが作れればっておもうんですがね。。。

if文、while文でそれぞれのじゃんけんゲームを作っていますが、ルールは以下のようになります。

  • プレイヤー1と2でそれぞれじゃんけんを入力
  • 入力値以外の値は受け付けないようにする
  • 同じ入力値であれば「あいこ」と入力
  • あとはじゃんけんゲームと同じようにそれぞれ、if文、while文でプログラミング作成

if文を使ったじゃんけんゲーム

if文では「==」や「&&」などの演算子を用いてじゃんけんゲームを作りました。

#include <stdio.h>

int main(void)
{
    int player1 = 0;    /* プレイヤー1 */
    int player2 = 0;    /* プレイヤー2 */
    
    
    /* 無限ループ */
    while(1){
        /* 「グー、チョキ、パー」の手を入れる */
        printf("PLAYER(1:グー、2:チョキ、3:パー):");
        scanf("%d",&player1);
        printf("PLAYER(1:グー、2:チョキ、3:パー);");
        scanf("%d",&player2);
        
        /* 1,2,3以外の数字は受け付けないようにする */
        if(player1 < 1 || player1 > 3 || player2 < 1 || player2 > 3){
            break;  /* whileの外へ出る */
        }
        
        /* じゃんけん判定 */
        if(player1 == player2){
            printf("あいこです\n");
        }else if(   (player1 == 1 && player2 == 2)
                 || (player1 == 2 && player2 == 3)
                 || (player1 == 3 && player1 == 1)){
            printf("PLAYER1のかちです\n");
        }else if(   (player1 == 1 && player2 == 3)
                 || (player1 == 3 && player2 == 2)
                 || (player1 == 2 && player1 == 1)){
            printf("PLAYER2のかちです\n");
        }
        return 0;
    }
}
PLAYER(1:グー、2:チョキ、3:パー):1
PLAYER(1:グー、2:チョキ、3:パー);2
PLAYER1のかちです

while文であいこと時は再度入力を求める(無限ループ)

while文はちょいと工夫を凝らして「%」を応用したプログラミングを作りました。

#include <stdio.h>

int main(void)
{
    int player1 = 0;    /* プレイヤー1 */
    int player2 = 0;    /* プレイヤー2 */
    
    
    /* 無限ループ */
    while(1){
        /* 「グー、チョキ、パー」の手を入れる */
        printf("PLAYER(1:グー、2:チョキ、3:パー):");
        scanf("%d",&player1);
        printf("PLAYER(1:グー、2:チョキ、3:パー);");
        scanf("%d",&player2);
        
        /* 1,2,3以外の数字は受け付けないようにする */
        if(player1 < 1 || player1 > 3 || player2 < 1 || player2 > 3){
            break;  /* whileの外へ出る */
        }
        
        if(player1 == player2){
            printf("あいこです\n");
        }else if((player1 % 3) == (player2 - 1)){
            printf("PLAYER1のかちです\n");
            break;  /* whileの外へ出る */
        }else if((player1 - 1) == (player2 % 3)){
            printf("PLAYER2のかちです\n");
            break;  /* whileの外へ出る */
        }
    }
    return 0;
}
PLAYER(1:グー、2:チョキ、3:パー):3
PLAYER(1:グー、2:チョキ、3:パー);3
あいこです
PLAYER(1:グー、2:チョキ、3:パー):2
PLAYER(1:グー、2:チョキ、3:パー);2
あいこです
PLAYER(1:グー、2:チョキ、3:パー):1
PLAYER(1:グー、2:チョキ、3:パー);1
あいこです
PLAYER(1:グー、2:チョキ、3:パー):1
PLAYER(1:グー、2:チョキ、3:パー);2
PLAYER1のかちです

「%」って結構頭がこんがらがっちゃいますね。
まだまだ、勉強不足ですわ。




エンジニアのオンライン学習

ITエンジニアにおすすめの教材、オンラインスクールです。
無料からエンジニアの学習ができる教材などまとめているので参考にしてください。

おすすめオンライン教材
自宅で学習ができるオンラインスクール

ITエンジニアの開発・検証・学習としてインターネット上で専用のサーバ(VPS)を利用しましょう!
実務経験はVPSで学べます。



コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)

ABOUT US
げんき☆ひろき
インターネット関連のSEをやっています。 ネットワーク、サーバー、ストレージ、仮想基盤まで幅広く手を出しており、MVNOの構築経験もあります。 現在は、Pythonを使ったプログラミングの開発をしネットワークの自動化ツールを作成しています! Pythonの入門書も作成しているので、ぜひ参考にしてください!