👕

Amazon Q CLIを使ってローグライクゲームを実装してみた

に公開

普段はClaude Codeを使っている私ですが、以下の記事を同僚に教えていただきました。
https://aws.amazon.com/jp/blogs/news/build-games-with-amazon-q-cli-and-score-a-t-shirt/

テ、Tシャツ・・・!絶対欲しい!ということで、今回はAmazonQ CLIを使ってローグライクゲームを作っていきます。

ローグライクゲームとは?

https://ja.wikipedia.org/wiki/ローグライクゲーム
特徴的なのはアスキー文字でゲームが構成されることです。今のゲームはグラフィックを売りにしていますが、こちらは脳内補完でゲームをするイメージです。

キャラクターが描画されていない分、自分で想像できるので戦いの妄想が捗りますね!

あとは複雑な設定が少なくできそうなので、今回はローグライクゲームにしました。

まずは計画から

計画自体はClaudeさんにお願いしました。

instruction.md
# Pygameローグライクゲーム開発計画

## プロジェクト概要
初代ローグ風のASCIIローグライクゲームをpygameで作成

## フェーズ1: 基礎システム
### 目標
- 基本的な画面表示とプレイヤー移動を実装

### 実装内容
- [ ] pygame初期化とウィンドウ作成
- [ ] ASCII文字での画面描画システム
- [ ] プレイヤーキャラクター(@)の表示
- [ ] キーボード入力処理(方向キー)
- [ ] プレイヤーの移動システム
- [ ] 画面のクリア・更新処理

### 完成条件
黒い画面に@マークが表示され、方向キーで移動できる

---

## フェーズ2: ダンジョン生成
### 目標
- 基本的なダンジョンマップの生成と表示

### 実装内容
- [ ] ダンジョンマップのデータ構造
- [ ] 部屋(rectangle)の生成アルゴリズム
- [ ] 通路生成アルゴリズム
- [ ] 壁(#)、床(.)、ドア(+)の表示
- [ ] プレイヤーの壁との衝突判定
- [ ] 階段(<>)の配置

### 完成条件
ランダム生成されたダンジョンでプレイヤーが移動できる

---

## フェーズ3: 敵システム
### 目標
- 敵の配置、移動、基本AI

### 実装内容
- [ ] 敵クラスの設計
- [ ] 敵の種類定義(r=ラット、k=コボルド等)
- [ ] 敵のランダム配置
- [ ] 敵の基本AI(プレイヤーに近づく)
- [ ] ターン制システムの実装
- [ ] 敵の移動表示更新

### 敵の種類(案)
- `r` - ラット(HP:5, ATK:2)
- `k` - コボルド(HP:8, ATK:3)
- `o` - オーク(HP:15, ATK:5)
- `T` - トロル(HP:25, ATK:8)

### 完成条件
ダンジョンに敵が配置され、ターン制で移動する

---

## フェーズ4: 戦闘システム
### 目標
- プレイヤーと敵の戦闘システム

### 実装内容
- [ ] プレイヤーのステータス(HP、攻撃力、防御力)
- [ ] 戦闘計算ロジック
- [ ] ダメージ表示システム
- [ ] HP管理とゲームオーバー判定
- [ ] 経験値とレベルアップシステム
- [ ] メッセージログシステム

### ステータス設計
- プレイヤー初期値:HP:20, ATK:5, DEF:2
- レベルアップ:HP+5, ATK+1, DEF+1

### 完成条件
敵を攻撃して倒せる、プレイヤーがダメージを受ける

---

## フェーズ5: アイテムシステム
### 目標
- アイテムの配置、取得、使用

### 実装内容
- [ ] アイテムクラスの設計
- [ ] アイテムの種類と効果定義
- [ ] アイテムのダンジョン配置
- [ ] インベントリシステム
- [ ] アイテム取得(gキー)
- [ ] アイテム使用・装備(w, qキー)

### アイテム種類(案)
#### 武器
- `)` - 短剣(ATK+2)
- `)` - 剣(ATK+4)
- `)` - メイス(ATK+6)

#### 防具
- `]` - 革鎧(DEF+1)
- `]` - 鎖帷子(DEF+3)
- `]` - プレートメイル(DEF+5)

#### ポーション
- `!` - 回復ポーション(HP+10)
- `!` - 筋力ポーション(ATK+2, 一時的)

#### 巻物
- `?` - テレポート巻物
- `?` - 識別巻物

### 完成条件
アイテムを取得、使用、装備できる

---

## フェーズ6: ゲームループ完成
### 目標
- 完全なゲームサイクルの実装

### 実装内容
- [ ] 複数階層システム
- [ ] アミュレット(勝利条件)の実装
- [ ] 食料システムと空腹状態
- [ ] セーブ・ロード機能
- [ ] ゲームオーバー・勝利画面
- [ ] スコアシステム

### 完成条件
1階から26階まで進んで、アミュレットを取って戻ってこれる

---

## フェーズ7: 追加機能・調整
### 目標
- ゲームバランス調整と追加機能

### 実装内容
- [ ] 敵・アイテムのバランス調整
- [ ] 新しい敵・アイテムの追加
- [ ] 特殊な部屋(宝物庫、罠部屋)
- [ ] 音効果(optional)
- [ ] 設定ファイル対応
- [ ] バグ修正とリファクタリング

---

## 技術仕様

### 開発環境
- Python 3.x
- pygame

### 画面設計
- 解像度:800x600
- フォント:等幅フォント
- ダンジョンマップ:80x24文字
- UI配置:右側にステータス、下部にメッセージ

### ファイル構成(案)

roguelike/
├── main.py           # メインループ
├── game.py           # ゲーム全体管理
├── player.py         # プレイヤークラス
├── enemy.py          # 敵クラス
├── item.py           # アイテムクラス
├── dungeon.py        # ダンジョン生成
├── combat.py         # 戦闘システム
├── ui.py             # UI描画
└── utils.py          # ユーティリティ


---

## 各フェーズの推定作業時間
- フェーズ1: 2-3時間
- フェーズ2: 4-6時間
- フェーズ3: 3-4時間
- フェーズ4: 4-5時間
- フェーズ5: 5-7時間
- フェーズ6: 6-8時間
- フェーズ7: 調整により変動

**総開発時間**: 約24-33時間

作りたいものをタスクに分解できました!ではここからが本題のAmazonQ CLIの出番ですね!

AmazonQ CLIで作っていく

では実際に作り込んでいきましょう。

ターミナルでqと打つと以下の画面が出ます。

どうやらclaude-4-sonnetを使わせてもらえるようです。無料で使えていいんですかこれ!!Claude Proに課金してるのに・・・

まずはディレクトリに配置した指示書を読み取ってもらいましょう。

作ってくれとお願いし、フェーズに沿って作業をさせます。


途中ツールを使っていいか聞いてくるのも似ていますね。


面白いのが、特にテストしろと言ってないのですが勝手にテストしているところ。適当に作って終わらず、フェーズごとにものが出来上がっているか律儀に確認しているのポイント高いですね。

そうこうしているうちに、とりあえずの実装ができたとのこと。遊んでみましょう。


すぐに死んでしまいましたが遊べているようです。あれ、UIどこにあるんだろう?

HPとかが見えないので、追加するように依頼して次の開発に移らせました。


途中テストでエラーが発生しましたが、独自で改修していました。私は一切コードを見ていないので何もわからないのですが、とにかく治ったようで一安心です。(エンジニアとして大丈夫か?)


ぼーっと眺めていますと、どうやら実装が終わったようです!ここまで約1.5時間!

ゲームそんなに早くできる!?

自分が作ると1週間くらいやっていそうなので、AmazonQ CLI様様です・・・。

実際に遊んでみる

https://x.com/i/status/1938601125986603510

階層移動するところまでしたかったのですが、すぐに死んでしまった。(ポーション使えばよかった)
でも遊べるものができているところまで確認できましたね!

まとめ

今回はAmazonQ CLIを使ってゲームを作ってみました!設計書を渡しておけばあとは眺めているだけで出来上がるのでお出かけ前にちょっとお願いしておくと良いですね。

Discussion