Rustサンプルゲームを作ってみました。Microsoftのコパイロットが生成したコードを利用 R-002


** PR ** 目がかすむ、ぼやける。目の悩み解消解消に。

                         

今日はRust言語でゲームプログラムに挑戦です。

ただし、ゲームはこんなゲームつくってください。とコパイロットに指示して作ってもらいました。コパイロット君。流石です。


プロジェクトの作成
: まず、Rustのプロジェクトを作成します。ターミナルで以下のコマンドを実行してください:cargo new my_game cd my_game

Cargo.tomlファイルの編集: プロジェクトディレクトリに移動すると、Cargo.tomlというファイルがあります。このファイルをテキストエディタで開いてください。(サンプルではビジュアルコードエディタから開いています)

依存関係の追加Cargo.tomlファイルの内容は以下のようになっています:

[dependencies]

” style=”position: relative; display: block; border: 1px solid var(–cib-color-stroke-neutral-primary); border-radius: var(–cib-border-radius-large); clear: both; margin-block: 24px 12px;”>

[package]
name = "my_game"
version = "0.1.0"
edition = "2021"

[dependencies]

この[dependencies]セクションに、randクレートを追加します。以下のように編集してください:

rand = “0.8” ” style=”position: relative; display: block; border: 1px solid var(–cib-color-stroke-neutral-primary); border-radius: var(–cib-border-radius-large); clear: both; margin-block: 24px 12px;”>

[package]
name = "my_game"
version = "0.1.0"
edition = "2021"

[dependencies]
rand = "0.8"

このコードでは、ユーザーが1から100までの数字を予想し、正解するまで繰り返し入力を求めます。randクレートを使用してランダムな数字を生成していますので、事前にCargo.tomlに以下の依存関係を追加してください:

依存関係のインストール: 依存関係を追加した後、ターミナルで以下のコマンドを実行して依存関係をインストールします:

cargo build

これで、randクレートがプロジェクトに追加され、使用できるようになります。先ほどのゲームのコードをsrc/main.rsに追加して実行してみてください。

この「main.rs」をビジュアルコードエディタで開きます。

開くと、ビジュアルコードエディタで作成されたサンプルコードが表示されています。

これを下記に記す「ユーザーに1から100までの数字を当ててもらうシンプルなゲーム」のソースコードをそのままコピペします。

use std::io::{self, Write};
use rand::Rng;

fn main() {
    // 標準出力をUTF-8に設定
    let stdout = io::stdout();
    let mut handle = stdout.lock();
    handle.write_all(b"\x1b[?25l").unwrap(); // カーソルを非表示にする(オプション)

    println!("1から100までの数字を当ててください!");

    let secret_number = rand::thread_rng().gen_range(1..=100);

    loop {
        println!("予想する数字を入力してください:");

        let mut guess = String::new();
        io::stdin().read_line(&mut guess).expect("入力の読み取りに失敗しました");

        let guess: u32 = match guess.trim().parse() {
            Ok(num) => num,
            Err(_) => {
                println!("有効な数字を入力してください。");
                continue;
            }
        };

        if guess < secret_number {
            println!("もっと大きい数字です!");
        } else if guess > secret_number {
            println!("もっと小さい数字です!");
        } else {
            println!("正解です!おめでとうございます!");
            break;
        }
    }
}

use std::io;
use rand::Rng;

fn main() {
    println!("1から100までの数字を当ててください!");

    let secret_number = rand::thread_rng().gen_range(1..=100);

    loop {
        println!("予想する数字を入力してください:");

        let mut guess = String::new();
        io::stdin().read_line(&mut guess).expect("入力の読み取りに失敗しました");

        let guess: u32 = match guess.trim().parse() {
            Ok(num) => num,
            Err(_) => {
                println!("有効な数字を入力してください。");
                continue;
            }
        };

        if guess < secret_number {
            println!("もっと大きい数字です!");
        } else if guess > secret_number {
            println!("もっと小さい数字です!");
        } else {
            println!("正解です!おめでとうございます!");
            break;
        }
    }
}

ところがどうもうまく動作しません。

原因は、どうもビジュアルスタジオの「ワークスペース」に先ほどのソースコードとプロジェクトが認識されていないようです。

ワークスペースにフォルダを追加で、先のソースコードを含む「my_game」プロジェクトのフォルダを選択して追加しました。

そしてデバッグ対象をmy_gameに変更します。(プルダウンメニューの部分でmy_gameを選択しています)

そして、my_gameのmain.rsをビジュアルスタジオで開き、「実行j」ー>デバックでコンパイルします。

すると、ターミナルの表示がこのようになり、何も実行していない状態になります。(ビジュアルスタジオ自体はmy_gameを実行している)

ですが、ビジュアルスタジオのエディタ部分をよく見ると・・・・

ソースコードの3行目と4行目の間に(赤い四角の中に)「RUN|Debug」という(じつはボタン)が表示されています。

このRUNを押して実行します。

または、ターミナルから、

dir (フォルダの中身を表示:my_gameがカレントディレクトリ=今いる位置のこと)

cd target (targetフォルダに移動)

dir (targetフォルダ内を表示ー>debygフォルダを確認)

cd debug (debugフォルダに移動)

dir (debugフォルダ内を表示)

my_game.exe と入力しエンターキーで実行(プログラム本体)

遊び方は、ターミナルをクリックして任意の100以下の数字を入力

50を入力するとプログラム通りに「もっと小さい数字です!」が表示されたので

30を入力するともっと大きいと。この繰り返しで正解を当てるゲームが完成です。

ちなみに、実はこれ、Microsoftのコパイロット(AI)にお願いしてつくってもらったソースコードです。本当にそのまま無事に動いたのは感動モノです。もちろんエラーが出たらそのままコピペでコパイロットに貼ったら、正解を作ってくれます。正直びっくり驚きです。

—————————————————————————————————————

//// PR ///

未経験からプロを目指せるオンラインプログラミングスクール【忍者CODE】

取扱いコース が豊富! 無料体験コースあります!

・Web制作&デザインコース

・Web制作コース

・Webデザインコース

・動画編集コース

・Pythonコース

・Javaコース

・Rubyコース

・Shopifyコース

————————————————————————————————————–

過去記事は下記を参照ください。2013年からミリタリー同人活動を行っています。

サイトマップ | ミリタリーグッズ工房「猫・工・艦」 (necokoucan.com)

【ブログ記事一覧】 | ミリタリーグッズ工房「猫・工・艦」 (necokoucan.com)

ミリタリーランキング
ブログランキング・にほんブログ村へにほんブログ村

広告

BASEオリジナルグッズ

PR VTuberサプーが教える! Python 初心者のコード/プロのコード

コメントする

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