** PR ** 目がかすむ、ぼやける。目の悩み解消解消に。
非常にうまくゲームが完成しました。次のゲームをかんがえていいですか?
前回、3X3のマス目に1-8までの数字をランダムに並べ、一つだけ空白のマスに周辺の数字を移動して1-8までのマスを完成させるゲームをAIであるMicrosoftのコパイロット君に指示してプログラミングを行ってもらいました。

Copilot が送信しました:
ゲームがうまく完成して良かったです!次のゲームのアイデアを考えるのはとても楽しいですね。どんな種類のゲームを作りたいですか?例えば:
パズルゲーム: もっと複雑なパズルやロジックゲーム。
アクションゲーム: シンプルなアクションやシューティングゲーム。
テキストアドベンチャー: ストーリーを進めるテキストベースのゲーム。
カードゲーム: トランプやカードを使ったゲーム。
どんなアイデアでも大歓迎です!具体的なアイデアがあれば教えてください。それに基づいて一緒にコードを考えましょう。
<-関連記事こちらから
AIとのプログラミングを指示する会話。著者も正直驚いています。3X3の数字並び替えゲームは大変うまくいきました。このゲームは50年前から子供のおもちゃ売り場で売っていたパズルゲームでした。
正直いえば、このゲームを再現したいという目的がそもそもの始まりでしたが、AIによって再現されるとは。。
そして「ありきたり」かもしれませんが、数件のゲーム作成を提案してきています。
ここ。正直できるの?どうやって実現するの?
謎だらけなのですが。もちろんそれぞれ現実にあり、テキストベースのゲームも過去存在していることも知っています。ですが、AIがすべてを再現できるの?と考えると「正直末恐ろしい」というのが感想です。
自分 が送信しました:
簡単なシューティングゲームを作りたいです。アイデアはありますか?
ちょっとAIの知能?を探ってみようっといたずら的に「アイデアはありますか?」とゲームの内容=仕様をAIに考えさせる問い合わせをしたのです。まさか、正確に答えなんてでないでしょう。
Copilot が送信しました:
シューティングゲームは楽しいですね!簡単なシューティングゲームのアイデアをいくつか提案します:
アイデア1: テキストベースのシューティングゲーム
概要: プレイヤーは敵の位置を予測して攻撃します。敵はランダムに移動し、プレイヤーはターンごとに攻撃を行います。
特徴:
プレイヤーと敵の位置を表示
プレイヤーが攻撃する位置を入力
敵がランダムに移動
敵に命中したら勝利
アイデア2: コンソールベースのシューティングゲーム
概要: プレイヤーは画面上を移動し、敵を撃ちます。敵はランダムに出現し、プレイヤーは敵を撃ってスコアを稼ぎます。
特徴:
プレイヤーの移動(左右)
敵の出現と移動
プレイヤーの攻撃
スコアの表示
どちらのアイデアもRustで実装可能です。まずはアイデア1のテキストベースのシューティングゲームのコードを提供します:
背筋が凍ったのは、この回答です。単純なテキストベースのシューティングゲームといえば王道ですからAIの回答としてはありかもしれません。
ただ著者は、「システム開発者として現場にいた」でもあった時代があるのです。ただ凄いという言葉以上に、人間要る? という話です。
世の中にあるシステムなら、そのシステムを他社がまねしてより良いシステムを開発という話はゴマンとあります。それがAIに指示すればあたかも簡単にできてしまうという話です。
コーディングなんて恐ろしいくらいに早い。
バグもエラー内容を修正といえば、そく修正プログラムが上がってきます。
ここまでくると、テキストベースゲームで度まで行けるかを試したく成りました。
そして、AI技術は手に入れるべきスキルです。それも誰もがです。経理・事務方でもです。
Excel・Wordすら、AIに資料作成させているツワモノがいるのです。それって恐ろしくないですか?それがERPやCRMとしてAIと合体したら。メールもスケジュールもカレンダーもすべてAIにお任せ。
もちろんMicrosoftが狙っているのはオフィスシリーズのAI化とAIを使った高度な資料作成。
経営陣がなっとくする資料がAIによってもたらされた時、事務方は必要なのでしょうか。
アメリカでは株価の話題しきりですが、有名な企業でデイトレーダーのAIによる置き換えで数百人解雇の話題をごぞんじですか。
そしてお子様をお持ちの皆様。
もう人間がライバルの時代はおわったのです。これからは膨大な知識をクラウドでもつAI(あらゆる知識をもち、インテリジェンスに活躍できる)がライバルです。
そのAIに勝つというか、「使いこなせる」側の人間になるべきでしょう。
つぎは、AIが提示した「仕様」もとづき、AIが考えたプログラムソースです。
Rust
use std::io;use rand::Rng;
fn main() {let mut rng = rand::thread_rng();let mut player_position = 5;let mut enemy_position = rng.gen_range(1..=10);let mut shots = 0;
println!("テキストベースのシューティングゲームへようこそ!");
println!("敵を撃って倒してください。");
loop {
println!("プレイヤーの位置: {}", player_position);
println!("敵の位置: {}", enemy_position);
println!("攻撃する位置を入力してください (1-10):");
let mut input = String::new();
io::stdin().read_line(&mut input).expect("入力の読み取りに失敗しました");
let attack_position: u32 = match input.trim().parse() {
Ok(num) => num,
Err(_) => {
println!("有効な数字を入力してください。");
continue;
}
};
shots += 1;
if attack_position == enemy_position {
println!("敵を倒しました!おめでとうございます!");
println!("総攻撃回数: {}", shots);
break;
} else {
println!("外れました。");
enemy_position = rng.gen_range(1..=10); // 敵の位置をランダムに変更
}
}
}
AI で生成されたコード。ご確認のうえ、慎重にご使用ください。FAQ で詳細を確認。
このコードでは、プレイヤーが敵の位置を予測して攻撃します。敵は毎ターンランダムに移動し、プレイヤーが敵を倒すまでゲームが続きます。
次に、アイデア2のコンソールベースのシューティングゲームのコードを提供することもできます。どちらのアイデアが気に入りましたか?または、他のアイデアがあれば教えてください!
自分 が送信しました:
エラーが出ました Compiling guntop v0.1.0 (C:\Users\mz808\rust\guntop) error[E0432]: unresolved import `rand` –> src/main.rs:2:5 | 2 | use rand::Rng; | ^^^^ use of undeclared crate or module `rand` error[E0433]: failed to resolve: use of undeclared crate or module `rand` –> src/main.rs:5:19 | 5 | let mut rng = rand::thread_rng(); | ^^^^ use of undeclared crate or module `rand` Some errors have detailed explanations: E0432, E0433. For more information about an error, try `rustc –explain E0432`. error: could not compile `guntop` (bin “guntop”) due to 2 previous errors * ターミナル プロセス “C:\Users\mz808\.cargo\bin\cargo.exe ‘run’, ‘–package’, ‘guntop’, ‘–bin’, ‘guntop'” が終了コード 101 で終了しました。 * ターミナルはタスクで再利用されます、閉じるには任意のキーを押してください。
Copilot が送信しました:
[dependencies]
rand = “0.8” “` 2. **コードの修正**: 以下のコードを再度確認して、正しくインポートされていることを確認してください:
“`
rust use std::io; use rand::Rng;
fn main() { let mut rng = rand::thread_rng();
let mut player_position = 5; let mut enemy_position = rng.gen_range(1..=10);
let mut shots = 0; println!(“テキストベースのシューティングゲームへようこそ!”);
println!(“敵を撃って倒してください。”);
loop { println!(“プレイヤーの位置: {}”, player_position);
println!(“敵の位置: {}”, enemy_position); println!(“攻撃する位置を入力してください (1-10):”);
let mut input = String::new();
io::stdin().read_line(&mut input).expect(“入力の読み取りに失敗しました”);
let attack_position: u32 = match input.trim().parse() { Ok(num) => num, Err(_) => { println!(“有効な数字を入力してください。”); continue; } };
shots += 1; if attack_position == enemy_position { println!(“敵を倒しました!おめでとうございます!”); println!(“総攻撃回数: {}”, shots); break; } else { println!(“外れました。”); enemy_position = rng.gen_range(1..=10); // 敵の位置をランダムに変更 } } } “` 3. **依存関係のインストール**: `Cargo.toml`ファイルを保存した後、ターミナルで以下のコマンドを実行して依存関係をインストールします: “`sh cargo build “` これで問題が解決するはずです。再度以下のコマンドを実行してみてください:
“`sh cargo run “` これでエラーが解消され、ゲームが正しく動作するはずです。さらに質問や改良点があれば、どうぞお知らせください!
” style=”display: flex; flex-direction: column; padding: 0px !important; user-select: text;
word-break: break-word; min-height: var(–cib-type-body2-line-height);
font-size: var(–cib-type-body2-font-size);
line-height: var(–cib-type-body2-line-height); font-weight: var(–cib-type-body2-font-weight);
font-variation-settings: var(–cib-type-body2-font-variation-settings); position: relative;”>
エラーメッセージを確認しました。rand
クレートが正しくインポートされていないことが原因のようです。以下の手順で修正してみてください。
Cargo.toml
ファイルにrand
クレートを追加:Cargo.toml
ファイルを開き、以下の依存関係を追加してください:[dependencies] rand = "0.8"
- コードの修正: 以下のコードを再度確認して、正しくインポートされていることを確認してください:Rust
use std::io; use rand::Rng; fn main() { let mut rng = rand::thread_rng(); let mut player_position = 5; let mut enemy_position = rng.gen_range(1..=10); let mut shots = 0; println!("テキストベースのシューティングゲームへようこそ!"); println!("敵を撃って倒してください。"); loop { println!("プレイヤーの位置: {}", player_position); println!("敵の位置: {}", enemy_position); println!("攻撃する位置を入力してください (1-10):"); let mut input = String::new(); io::stdin().read_line(&mut input).expect("入力の読み取りに失敗しました"); let attack_position: u32 = match input.trim().parse() { Ok(num) => num, Err(_) => { println!("有効な数字を入力してください。"); continue; } }; shots += 1; if attack_position == enemy_position { println!("敵を倒しました!おめでとうございます!"); println!("総攻撃回数: {}", shots); break; } else { println!("外れました。"); enemy_position = rng.gen_range(1..=10); // 敵の位置をランダムに変更 } } }
AI で生成されたコード。ご確認のうえ、慎重にご使用ください。FAQ で詳細を確認。 - 依存関係のインストール:
Cargo.toml
ファイルを保存した後、ターミナルで以下のコマンドを実行して依存関係をインストールします:cargo build
これで問題が解決するはずです。再度以下のコマンドを実行してみてください:
cargo run
これでエラーが解消され、ゲームが正しく動作するはずです。さらに質問や改良点があれば、どうぞお知らせください!
自分 が送信しました:
警告が出ます。 warning: variable does not need to be mutable –> src/main.rs:6:9 | 6 | let mut player_position = 5; | —-^^^^^^^^^^^^^^^ | | | help: remove this `mut` | = note: `#[warn(unused_mut)]` on by default warning: `guntop` (bin “guntop”) generated 1 warning (run `cargo fix –bin “guntop”` to apply 1 suggestion) Finished `dev` profile [unoptimized + debuginfo] target(s) in 0.28s Running `target\debug\guntop.exe`
テキストベースのシューティングゲームへようこそ! 敵を撃って倒してください。 プレイヤーの位置: 5 敵の位置: 4 攻撃する位置を入力してください (1-10):
Copilot が送信しました:
警告は、player_position
変数が変更されていないため、mut
キーワードが不要であることを示しています。この警告を解消するために、mut
キーワードを削除しましょう。
以下の修正を行ったコードを試してみてください:
Rust
use std::io;
use rand::Rng;
fn main() {
let mut rng = rand::thread_rng();
let player_position = 5; // `mut`を削除
let mut enemy_position = rng.gen_range(1..=10);
let mut shots = 0;
println!("テキストベースのシューティングゲームへようこそ!");
println!("敵を撃って倒してください。");
loop {
println!("プレイヤーの位置: {}", player_position);
println!("敵の位置: {}", enemy_position);
println!("攻撃する位置を入力してください (1-10):");
let mut input = String::new();
io::stdin().read_line(&mut input).expect("入力の読み取りに失敗しました");
let attack_position: u32 = match input.trim().parse() {
Ok(num) => num,
Err(_) => {
println!("有効な数字を入力してください。");
continue;
}
};
shots += 1;
if attack_position == enemy_position {
println!("敵を倒しました!おめでとうございます!");
println!("総攻撃回数: {}", shots);
break;
} else {
println!("外れました。");
enemy_position = rng.gen_range(1..=10); // 敵の位置をランダムに変更
}
}
}
これで警告が解消され、ゲームが正しく動作するはずです。さらに質問や改良点があれば、どうぞお知らせください!

一応の完成です。1ー10までの位置に敵が。自分も1-10のどこかに。
敵の位置情報の数字を入力=射撃すれば倒した判定となり、勝利判定。
ちょっと単純すぎてゲームなの?と思いますが、ここから発展させて面白くなるかを検証します。
—————————————————————————————————————
//// PR ///

取扱いコース が豊富! 無料体験コースあります!
・Web制作&デザインコース
・Web制作コース
・Webデザインコース
・動画編集コース
・Pythonコース
・Javaコース
・Rubyコース
・Shopifyコース
————————————————————————————————————–
過去記事は下記を参照ください。2013年からミリタリー同人活動を行っています。
サイトマップ | ミリタリーグッズ工房「猫・工・艦」 (necokoucan.com)
【ブログ記事一覧】 | ミリタリーグッズ工房「猫・工・艦」 (necokoucan.com)

