【キャンペーン】Amazon Q CLI でゲームを作ってTシャツを貰う！

# はじめに

「[Amazon Q CLI でゲームを作ろう](https://community.aws/content/2xIoduO0xhkhUApQpVUIqBFGmAc/build-games-with-amazon-q-cli-and-score-a-t-shirt)」キャンペーンは、Amazon Q CLI でゲームを作ってTシャツがもらえるイベントです。

日本を含むアジア太平洋の地域の人が参加でき、6月20日まで実施されてます。（日本時間だと19日まで？）
残り期間は少ないので早速作っていく！

# ゲームの作り方

作る前に！！！
Amazon Q CLI はデフォルでClaude 3.7 sonnetですが、無料でClaude 4 sonnet が使えるので、絶対に切り替えましょう。（精度が段違いでいいです！）
```text:デフォルトのモデル変更
q chat --model claude-4-sonnet
```

q chat コマンドでCLIを起動した後に、「🤖 You are chatting with claude-4-sonnet」と出ていればモデルの切り替えができてます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3403411/e66f404a-5fff-4fe5-bff8-632601bd51a8.png)


Amazon Q CLI の導入方法や起動方法とかは、他の記事とかで大量に書かれているので
すみませんが割愛します！

## 作成工程

今回作るゲームは「だるまさんが転んだ」です。
(クリエイティブのかけらも無くてすみません）

では早速1回目のプロンプトをAmazon Q CLI に食べさせてみます。

```text:プロンプト（1回目）
Python / PyGame を用いて、日本の「だるまさんがころんだ」を
ローカル PC 上で動く 2-D ゲームとして実装してください。

# Context
- 使用ライブラリ: pygame
- ルール参考: 鬼（オニ）が「だるまさんがころんだ」と唱えて振り向いた瞬間に
  プレイヤーが動いていたらアウト。動かず少しずつ接近し、鬼にタッチすれば勝ち。:contentReference[oaicite:1]{index=1}

# Functional Requirements
1. 画面サイズ 800×600、タイトル「Daruma‐san ga Koronda」。  
2. **鬼 (oni)**
   - 画面右側に待機。ランダム 2–5 秒置きに背面⇄前面を切り替える  
   - 背面時はプレイヤーが自由に移動可能。前面時にプレイヤー座標が動けばゲームオーバー  
   - 振り向きイベントは pygame.time.Clock とタイマーで実装:contentReference[oaicite:2]{index=2}  
3. **プレイヤー (child)**
   - キーボード矢印キーで上下左右移動。移動速度は 4 px/フレーム  
   - 鬼に接触すれば勝利、テキスト “YOU WIN!” 表示後にリスタート  
4. **ゲームステート**
   - “READY → PLAYING → WIN/LOSE” の状態遷移を finite state machine で管理  
   - イベント駆動: pygame.event.get() によるループ処理:contentReference[oaicite:3]{index=3}  
5. **効果音**  
   - 鬼が振り向く直前に「だるまさんがころんだ」を再生 (ogg/mp3 読込可)  

# Non-Functional Requirements
- オブジェクト指向設計 (Player, Oni, Game) をクラスで分離  
- スプライトは pygame.sprite.Sprite を使用し、update() / draw() を実装:contentReference[oaicite:5]{index=5}  
- コードは 1 ファイル main.py と assets/（画像・音声）ディレクトリのみ  
- 実行手順と依存パッケージを README.md に自動生成して提示  

# Output Format
返答は以下 2 セクションに分けること:
1. **/main.py** ― 完全な Python ソースコード  
2. **/README.md** ― インストール方法と起動コマンド  
```
ピロピロ〜っとAmazon Q がコードを生成していきます。
最後の方に、「Completed in」っと出たら無事作成完了です。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3403411/81d48436-8498-41c5-a60a-430adf023ef6.png)


１回目でできた、ゲームはこんな感じ。
だるまさんが転んだの動作は仕様通り作ってくれてます。
![game_sample1.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3403411/1a564fd4-6730-4cea-8022-581e87055877.gif)

課題としては、以下の2点を良くしたい。
* 絵のビジュアルがシンプルすぎて味気ない
* 鬼が振り向くタイミング長すぎて、簡単すぎる

```text:プロンプト（2回目）
以下の改修を行なってください。
- ゲームの見た目がシンプルすぎるので、鬼 (oni)と、プレイヤー (child)のキャラクターが分かるように具体化する
  そして、背景はだるまさんが転んだをイメージして、適切な背景にする
- 鬼が、背面⇄前面を切り替える タイミングは、ランダム 1.5–3 秒置きする
```

ちなみに、最初のプロンプト実行時に「Allow this action?」という操作許可に’t’と答えたら
2回目以降のプロンプトも'trusted'で進めてくれました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3403411/26c37b02-cd20-4e48-a3c0-ab087f9e35da.png)


Amazon Q CLI の画面を見てると、キッチリ指示通り修正してくれてそう！

①鬼の見た目の改修
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3403411/1206d90e-926d-4f90-87ba-a78d1fa39177.png)

②背景の改修
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3403411/39a08d90-ea0e-4fcb-b663-6f68fa52bbdd.png)

③鬼が振り向くタイミングの修正
![233：.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3403411/cf682241-dd4f-42d1-b4ea-1e9b58c47638.png)

# 完成したゲーム

登場物のビジュアルや、背景が付いて少しはゲームしくなりました。
![game_sample2.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3403411/23eb18e4-21a0-4be6-8f0f-c810ec59b350.gif)

# 最後に

Amazon Q CLI を使えば10~15分程度あれば簡単なゲームが作れます。
今回作ったゲームに関しては、キャラが空中に浮いてたり、クリアタイムを表示させたり
もう少し改修を加えて遊んでみようと思います。

繰り返しになりますが、Amazon Q CLI は絶対にClaude 4 sonnet に切り替えて使うことをオススメします！

## Github

作ったゲームはこちらに置いてます。

https://github.com/y-omr/amazon-q-games