Running Lambdaゲーム作ってみた! with Amazon Q CLI

# はじめに
現在「Amazon Q CLIでゲームを作ろう Tシャツキャンペーン」が開催されています．
今までAmazon Qは触ったことがなかったのですが，みた感じClaude Codeと同じようなもの(？)に見えたので，Tシャツも欲しいし参加することにしました！
無料でCLIベースのAIエージェントを使わしてもらえてかつ，Tシャツまでもらえる神イベントです！
Tシャツをもらうために，Qiitaの記事を投稿します．~~なので記事の質はちょっと低いかも．Organizationではなく個人として投稿します~~

https://aws.amazon.com/jp/blogs/news/build-games-with-amazon-q-cli-and-score-a-t-shirt/

# 開発環境の準備
[上記のURL](https://aws.amazon.com/jp/blogs/news/build-games-with-amazon-q-cli-and-score-a-t-shirt/)にある通り，AWS Builder IDに登録をして，Amazon Q CLIをインストールするだけです．
自分はmacなので[このサイト](https://docs.aws.amazon.com/amazonq/latest/qdeveloper-ug/command-line-installing.html#command-line-installing-macos)をGeminiに投げて，日本語でセットアップの手順を解説するように頼んでいます．~~これで英語を読まなくて済む．~~
![スクリーンショット 2025-06-21 23.26.58.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3820079/e2bbde67-9f99-4f7e-b9eb-e78e54539aae.png)
これでAmazon Q CLIが使用できる状態になりました．

ターミナルで`q`を実行することによって使用できます．~~ほとんどこれClaude Codeだな~~
デフォルトではモデルはClaude-4-sonnetなんですね．
`/model`でモデルの変更ができます．
![startQ.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3820079/c34eb7f2-56e2-43f2-a44c-494f2222d154.png)

# ゲームを作成させてみる
Pygameがインストールされている仮想環境を準備しました．
早速プロンプトを投げてみましょう．
```bash
> `aws-game/running-lambda.py`の中を編集し，ゲームを作成してください．
ゲームはPygameを用いて作成してください．
ゲームの仕様は以下のマークダウンに従ってください．
# ゲームの仕様
## ゲームの概要
シンプルな横スクロールのランニングアクションゲームです．
画面左上にスコアが記録されており，このスコアは走った距離です．
画面右上にはHPが表示されています．HPは❤️のアイコンです．3でスタートします．
## 操作対象
`aws-game/img/Arch_AWS-Lambda_64.png`が操作する主人公の画像です．
`space`キーを押すことによって，主人公はジャンプします．
ジャンプすることによって，障害物を避けたり，アイテムを獲得します．
## アイテム
`aws-game/img`の中にある画像達のうち，`Arch_`から始まるもので，
`Arch_AWS-Lambda_64.png`以外がプレイヤーにとって有効なアイテムで，獲得すると，HPが1増えます．
## ゲームオーバー
アイテムと同じように，`aws-game/img/onple.png`にあたるとHPが1つ減ります．
HPが0になるとゲームオーバーです．
```
出力されたゲームがこちら．
![スクリーンショット 2025-06-21 21.46.17.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3820079/a85b9458-74a7-408f-b7e6-5669c29a9d9e.png)

青色の四角形がプレイヤーで，赤が障害物，緑がHP回復アイテムですね．
Spaceキーでジャンプもできるし，ScoreとHPもちゃんと動作しています．
**悪くない**．むしろ最初のプロンプトでここまでできたのなら，めちゃくちゃ幸先いいです．
ただ，画像の読み込みがうまくいっていません．
とりあえず，ゲームのバランスを調整していきます．

```bash
> 悪いアイテムの頻度は，良いアイテムの頻度の5倍にしてください．

> アイテムの当たり判定を少し小さくしてください．

> 良いアイテムをゲットした時は，[HP UP!]．悪いアイテムをゲットした時は[Damege!]とエフェクトを発生させてください

> いい感じです！しかし，HPが見切れています！画面上部真ん中の方にHPを表示するように変更してください．

> 時間が経つにつれ，ゲームの進行スピードを上昇させるようにしてください．

> 以降，aws-game/running-lambda.pyを編集し終えたら，`python aws-game/running-lambda.py`も行うようにしてください
```
とりあえず上記のようにやりとりをしていきました．
Pythonファイルの実行も自動でやってくれるのでとても楽です．
まだまだ調整していきます．
```bash
> まだまだゲームとして簡単すぎます！悪いアイテムの頻度を今の3倍にして，スクロールのスピードは1.5倍にしてください．

> 現在は，スクロールスピードが1ずつ上昇していますが，3ずつ上昇するようにしてください

> 1000スコアごとで上昇するスピードを500ずつにしてください．
```
一旦これでゲームの調整は完了です．
次以降のプロンプトでは，画像が反映されていない問題を解決させにいきます．
```bash
> ゲームとしての完成度があがってきました！いい感じです！しかし，最初から画像がうまく読み込めていません．`img/*`にしているところを`./img/*`にしたらうまく読み込めるようになるのではないでしょうか

> まだ画像がうまく読み込めていません．`./img/*`ではなく`../img/*`ではないでしょうか

> 違います．imgディレクトリはruuning-lambda.pyと同じ階層にあります．

> 読み込まれていません．なのでずっと四角形で代用されています．
```
これでようやく反映されるようになりました．
ほとんどコードレビューをせず，適当に指示を繰り返していたせいで，かなり時間がかかってしまいました．
自分は1行もコードを書いてはいけないとはいえ，ちゃんとコードレビューをした方がいいですね．
原因の特定に時間がかかりました．
プロンプトにディレクトリ構成を渡しておけばもっと楽だったかもしれません．

まだHPの絵文字(❤️)の表示ができていないので，Geminiにドット絵のハートを作成させて，それを使いましょう．
![スクリーンショット 2025-06-22 8.30.11.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3820079/a4604a08-700e-4185-b01c-1ff0b49345ee.png)

jpegなので透過はされないのですが，まぁいいです．このまま使用していきます．
ついでに悪いアイテムの画像をフリー素材のサーバーにしていたのですが（オンプレをイメージしてた），しっくりこないのでただの赤い四角形にさせます．
```bash
> 悪いアイテムの画像をなくして，ただの赤い四角形にしてください．また，HPのアイコンは`aws-game/img/hp.jpeg`を用いてください
```
![スクリーンショット 2025-06-22 8.34.53.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3820079/d1b8d128-8c09-40d6-8f5e-e73cab4259e2.png)

![スクリーンショット 2025-06-22 8.34.04.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3820079/aba253e2-1952-41c0-84b7-fb6cd2fca49b.png)

いい感じです．最後にタイトル画面を作成して終わりにしましょう．
```bash
> 完璧です．最後に，タイトル画面を追加してください．このゲームのゲーム名と，「Please Push Enter！」と表示させてください．

> やっぱりEnterじゃなくて，Spaceにしてください．また，タイトル画面にも`aws-game/img/Arch_AWS-Lambda_64.png`を挿入してください．
```

![スクリーンショット 2025-06-22 8.37.08.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3820079/f56bded0-16e5-4ed1-9f75-acee05e2ed43.png)

完璧です．

Lambda関数を走らせる(?)ゲームを作ることができました．

# おわりに
Amazon Q CLIでゲームを作成していきました！
使用感はほどんどClaude Codeでした！~~どっちを使うかと言われたら無料でもClaude Codeかな．．．~~
セットアップや画像の用意まで生成AIにやってもらっていたので，自分は仮想環境の用意とプロンプトを考えるくらいしかしてないのに，これくらいのゲームなら1時間半あれば作れてしまうのはすごいですね．
Tシャツもらえるのがたのs