見出し画像

【C++】1/8192 をお手軽実装してみよう【プログラミング】

こんにちは、しがないプログラマBです。

みなさんは 1/8192 というゲームを知っていますでしょうか。一時期数多の配信者が配信していたことから、認知している人も多いかと思います。

そんなブームを作り上げた 1/8192 ですが、ゲームシステムはこの世に存在するゲームの中でも、最も簡単な部類に入ります。

それではさっそくコードを作ってみましょう。

#include <iostream>
#include <cstdlib>
#include <ctime>
using namespace std;

int main() {
    int user_input, random_number;
    int stage = 1;
    srand(time(0));

    cout << "press ctrl + C to exit" << endl;
    while (stage <= 13) {
        cout << "\nStage " << stage << ": 0 or 1?: ";
        cin >> user_input;

        random_number = rand() % 2;
        if (user_input == random_number) {
            stage++;
        } else {
            stage = 1;
        }
    }
    
    cout << "\nGAME CLEAR" << endl;
    return 0;
}

いや、少な!
僅か30行足らずで骨組みが完成してしまいました。

ここから、ユーザーが楽しく思えるような要素を追加してみましょう。

少し改良したコードを用意してみました。

#include <iostream>
#include <cstdlib>
#include <ctime>
using namespace std;

// ANSIエスケープシーケンスを使用してテキストの色を赤くする関数
void setTextRed() {
    cout << "\033[31m";
}

// 色をリセットする関数
void resetTextColor() {
    cout << "\033[0m";
}

int main() {
    int user_input, random_number;
    int stage = 1;
    srand(time(0));

    cout << "press ctrl + C to exit" << endl;
    while (stage <= 13) {
        if (stage == 13) {
            setTextRed();
        }

        cout << "\nStage " << stage << ": 0 or 1?: ";
        cin >> user_input;

        random_number = rand() % 2;
        if (user_input == random_number) {
            stage++;
        } else {
            stage = 1;
            resetTextColor();
        }
    }
    
    resetTextColor();
    cout << "\nGAME CLEAR" << endl;
    return 0;
}

追加要素を簡単に説明すると、最終ステージで文字を全て赤色にする要素を加えました。ゲームの基礎がシンプルだと拡張性にも優れていてコードを書いていて楽しいですね。

是非コードを動かしたり自由に変更したりして自分の 1/8192 を作ってみてください。

それでは

いいなと思ったら応援しよう!