3
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

【C++】じゃんけんゲーム作ってみた

Last updated at Posted at 2023-10-09

【C++】じゃんけんゲーム作ってみた!

C言語を勉強し始めて1ヵ月。C++を勉強し始めて1週間たって、
アウトプットしようと考え、簡単なじゃんけんゲームを作ってみました。
指摘箇所沢山あるかと思います、「こうしたら良いよ」など、コメントいただけるととてもうれしいです:smiley:


全体のソースコード

#include <iostream>
#include <ctime>
#include <cstdlib>

using namespace std;


class You{                  //自分のクラス
public:
    int youte(int x);

};


class Aite{                 //相手のクラス
public:
    int aitete(int y);

};


int Aite::aitete(int y){ 
    
    int te;               //変数宣言
    te = y;               //(rand() % 3 + 1)から1~3のどれかの値を代入

    cout << "相手が出した手は・・・";
    if(te == 1)
        cout << "グー" << endl;
    else if (te == 2)
        cout << "チョキ" << endl;
    else if (te == 3)
        cout << "パー" << endl;
    return te;
}



int main()
{
    do {                                //1だったら、再度じゃんけん開始
    srand((unsigned)time(NULL));        //現在の時刻で初期化

    int me;
    cout << "あなたは何を出す? 1:グー、 2:チョキ、 3:パー >> ";
    cin >> me;
    cout << "あなたが出した手は・・・";
    if(me == 1)                       //1だったらグーと表示
        cout << "グー" << endl;
    else if (me == 2)                 //2だったらチョキと表示
        cout << "チョキ" << endl;
    else if (me == 3)                 //3だったパーと表示
        cout << "パー" << endl;
    
    int te;
    Aite note;
    te = note.aitete(rand() % 3 + 1);     //1~3ランダムに出す


    if(me == te)                       //あいこの条件
        cout << "あいこ" << endl;
    else if (me == 1 && te == 2 ||     //自分の勝ちの条件
            me == 2 && te == 3 ||
            me == 3 && te == 1)
                cout << "あなたの勝ち" << endl;
    else                                          //他の条件は自分は負け
        cout << "あなたの負け" << endl;

    cout << "まだじゃんけんしますか?1:yes, 2:no >> ";
    int tugi;
    cin >> tugi;   
        if(tugi == 2){                 //もし、2だったらbreakでじゃんけん終了
            cout << "終わります";
            break;
        }

    } while (1);                 //1だったら、再度じゃんけん開始

}

作ってみました…!

※追加 違う数値を入力した場合に、プログラムが終わるようにしてみました!

※今回は練習の為、上記の私が作ったコードを修正してみました…
(上記の分ご指摘等していただいた方々、ありがとうございました!)

上記機能追加
#include <cstdlib>
#include <ctime>
#include <iostream>

using namespace std;

enum { ROCK = 1, SCISSORS = 2, PAPER = 3 };

enum { YES = 1, NO = 2 };

class Aite {  // 相手のクラス
   public:
    int aitete(int y);
};

int Aite::aitete(int y) {
    int te;  // 変数宣言
    te = y;  //(rand() % 3 + 1)から1~3のどれかの値を代入

    cout << "相手が出した手は・・・";
    if (te == ROCK)
        cout << "グー" << endl;
    else if (te == SCISSORS)
        cout << "チョキ" << endl;
    else if (te == PAPER)
        cout << "パー" << endl;
    return te;
}

int main() {
    do {  // 1だったら、再度じゃんけん開始
        srand((unsigned)time(NULL));  // 現在の時刻で初期化

        int me;
        cout << "あなたは何を出す? 1:グー、 2:チョキ、 3:パー >> ";
        cin >> me;
        cout << "あなたが出した手は・・・";

        if (me == ROCK) {  // 1だったらグーと表示
            cout << "グー" << endl;
        } else if (me == SCISSORS) {  // 2だったらチョキと表示
            cout << "チョキ" << endl;
        } else if (me == PAPER) {  // 3だったパーと表示
            cout << "パー" << endl;
        } else {
            cout << "出してる手が範囲外です。" << endl;
            cout << "1~3を入力して下さい。" << endl;
            break;
        }

        int te;
        Aite note;
        te = note.aitete(rand() % 3 + 1);  // 1~3ランダムに出す

        if (me == te)  // あいこの条件
            cout << "あいこ" << endl;
        else if (me == ROCK && te == SCISSORS ||  // 自分の勝ちの条件
                 me == SCISSORS && te == PAPER || me == PAPER && te == ROCK)
            cout << "あなたの勝ち" << endl;
        else  // 他の条件は自分は負け
            cout << "あなたの負け" << endl;
        
        cout << "まだじゃんけんしますか?1:yes, 2:no >> ";
        int tugi;
        cin >> tugi;

        if (tugi == NO) {  // もし、2だったらbreakでじゃんけん終了
            cout << "終わります";
            break;
        } else if (tugi != YES) {
            cout << "数値が間違えています。" << endl;
            cout << "1か2を入力して下さい。" << endl;
            break;
        }

    } while (YES);  // 1だったら、再度じゃんけん開始
}

終わらず、じゃんけん続けたいのですが、やり方が分からず今悩んでいるところですーー…

3
2
18

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
3
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?