ゲーム「数字当て」の作成をRust言語で行う方法について、以下に完全かつ包括的な記事を提供します。このゲームは、コンピュータがランダムに選んだ数字をプレイヤーが当てるというシンプルなものです。Rustを使って、ゲームのロジック、ユーザーインターフェース、エラーハンドリングなどを含んだ完全なコードを紹介します。
Rustで数字当てゲームを作成する方法
1. プロジェクトの作成
まず、Rustのプロジェクトを作成します。ターミナルを開いて、次のコマンドを入力してください。

bashcargo new number_guessing_game
cd number_guessing_game
このコマンドにより、「number_guessing_game」という名前のRustプロジェクトが作成されます。
2. 依存関係の設定
ゲームに必要な外部クレート(ライブラリ)として、rand
クレートを使用してランダムな数字を生成します。Cargo.toml
ファイルを開き、以下を追加します。
toml[dependencies]
rand = "0.8"
rand
クレートを使うことで、ランダムな整数を生成することができます。次に、このクレートを使ってコードを書く準備が整いました。
3. ゲームのロジック
src/main.rs
ファイルに、実際のゲームロジックを記述します。以下がそのコードです。
rustuse rand::Rng;
use std::io;
fn main() {
// ゲームのタイトル
println!("数字当てゲームへようこそ!");
// 1から100までのランダムな数字を生成
let secret_number = rand::thread_rng().gen_range(1..=100);
// プレイヤーの試行回数をカウント
let mut attempts = 0;
loop {
// プレイヤーに入力を求める
println!("1から100までの数字を予想してください:");
// ユーザーの入力を取得
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;
}
};
// 試行回数を増加
attempts += 1;
// ゲームの判定
if guess < secret_number {
println!("もっと大きな数字です!");
} else if guess > secret_number {
println!("もっと小さな数字です!");
} else {
println!("おめでとうございます!正解は {} でした。試行回数は {} 回でした。", secret_number, attempts);
break;
}
}
}
4. コードの説明
rand::thread_rng().gen_range(1..=100)
: 1から100までの範囲でランダムな整数を生成します。io::stdin().read_line(&mut guess)
: ユーザーからの入力を取得します。guess.trim().parse()
: 入力された文字列を整数に変換します。無効な入力(数字以外)があった場合はエラーメッセージを表示します。if-else
文: 入力された数字が秘密の数字より大きい、または小さいかどうかを判定し、ユーザーにフィードバックを提供します。break
: 正解が入力された場合、ゲームを終了します。
5. ゲームの流れ
- ゲームが開始されると、コンピュータはランダムに1から100の間で秘密の数字を生成します。
- プレイヤーはその数字を予想して入力します。
- 入力された数字が正解であれば、ゲームが終了し、試行回数が表示されます。
- プレイヤーが誤った数字を入力した場合、「もっと大きな数字」または「もっと小さな数字」というヒントが表示され、再度入力を求められます。
6. ゲームの実行
プロジェクトディレクトリ内で以下のコマンドを実行すると、ゲームが開始されます。
bashcargo run
これで、ターミナル上でゲームをプレイすることができます。例えば、以下のようなやり取りになります。
makefile数字当てゲームへようこそ!
1から100までの数字を予想してください:
50
もっと小さな数字です!
1から100までの数字を予想してください:
30
もっと大きな数字です!
1から100までの数字を予想してください:
40
おめでとうございます!正解は 40 でした。試行回数は 3 回でした。
7. ゲームの改善
- プレイヤーの名前を入力させる: プレイヤーがゲームを開始する前に名前を入力させ、挨拶を表示するように変更できます。
- 難易度の設定: プレイヤーに簡単・中級・難しいモードを選ばせ、数字の範囲を変更することもできます。
- スコアの保存: プレイした回数や最速タイムなどのスコアを保存し、後で確認できるようにすることもできます。
8. まとめ
この数字当てゲームはRustを使ってシンプルかつ効率的に作成できます。rand
クレートを活用し、ユーザー入力の処理やエラーハンドリング、ゲームの進行管理を行っています。Rustの特性であるメモリ管理の強さを活かし、パフォーマンスも良好なゲームを実装することができました。
Rustでゲームを作成することは、プログラミングの学習にも役立ちますし、より複雑なゲームへと発展させるための良いステップです。