DEV Community

Cover image for Pokemon Battle Simulator Napkin Challenge!
xbill for Google Developer Experts

Posted on

Pokemon Battle Simulator Napkin Challenge!

  ▄▀▀▄        Antigravity CLI 1.0.2
 ▀▀▀▀▀▀       xbill9@gmail.com (Google AI Ultra)
▀▀▀▀▀▀▀▀      Gemini 3.5 Flash (Medium)
Enter fullscreen mode Exit fullscreen mode

▄▀▀ ▀▀▄ ~/pokemon
▄▀▀ ▀▀▄
────────────────────────────────────────────────────────────

use @pokemon_api.jpg as the system architecture and build out a pokemon battle simulator

● ListDir(/home/xbill/pokemon)
● Read(/home/xbill/pokemon/pokemon_api.jpg) (ctrl+o to expand)
▸ Thought for 7s, 852 tokens
Observing the Image

● Bash(node -v && npm -v && python3 --version) (ctrl+o to expand)

▸ Thought for 6s, 2.5k tokens
Considering Language Choice

● Create(/home/xbill/.gemini/antigravity-cli/brain/42...abf-b329-894a07ec5075/implementation_plan.md) (ctrl+o to expand)

I have created the implementation plan for the Pokemon Battle Simulator matching the architecture in the diagram.

Please review the implementation_plan.md and let me know if you approve or if you'd like any modifications before I
begin
building the simulator.

────────────────────────────────────────────────────────────

yes i approve
▸ Thought for 6s, 304 tokens
Initiating Execution Phase

● Create(/home/xbill/.gemini/antigravity-cli/brain/42560c5f-0aec-4abf-b329-894a07ec5075/task.md)
● Create(/home/xbill/pokemon/package.json)
● Edit(/home/xbill/.gemini/antigravity-cli/brain/42560c5f-0aec-4abf-b329-894a07ec5075/task.md) (ctrl+o to expand)

▸ Thought for 7s, 364 tokens
Defining API Layer

● Create(/home/xbill/pokemon/src/api/pokeApi.js)
● Edit(/home/xbill/.gemini/antigravity-cli/brain/42560c5f-0aec-4abf-b329-894a07ec5075/task.md) (ctrl+o to expand)

▸ Thought for 7s, 1.4k tokens
Defining Move Database

● Create(/home/xbill/pokemon/src/api/moveDatabase.js)
● Edit(/home/xbill/.gemini/antigravity-cli/brain/42560c5f-0aec-4abf-b329-894a07ec5075/task.md) (ctrl+o to expand)

▸ Thought for 7s, 2.6k tokens
Defining Battle SDK Logic

● Create(/home/xbill/pokemon/src/sdk/battleSdk.js)
● Edit(/home/xbill/.gemini/antigravity-cli/brain/42560c5f-0aec-4abf-b329-894a07ec5075/task.md) (ctrl+o to expand)

▸ Thought for 1s, 373 tokens
Designing Color Utility

● Create(/home/xbill/pokemon/src/utils/colors.js)
● Edit(/home/xbill/.gemini/antigravity-cli/brain/42560c5f-0aec-4abf-b329-894a07ec5075/task.md) (ctrl+o to expand)

▸ Thought for 6s, 1.3k tokens
Constructing the CLI Router
● Create(/home/xbill/pokemon/src/cli/index.js)
● Edit(/home/xbill/.gemini/antigravity-cli/brain/42560c5f-0aec-4abf-b329-894a07ec5075/task.md)
● Create(/home/xbill/pokemon/index.js)
● Edit(/home/xbill/.gemini/antigravity-cli/brain/42560c5f-0aec-4abf-b329-894a07ec5075/task.md) (ctrl+o to expand)

▸ Thought for 8s, 228 tokens
Defining Test Runner Goals

● Create(/home/xbill/pokemon/src/utils/test_runner.js)
● Bash(node src/utils/test_runner.js)
● Edit(/home/xbill/.gemini/antigravity-cli/brain/42560c5f-0aec-4abf-b329-894a07ec5075/task.md) (ctrl+o to expand)

▸ Thought for 8s, 142 tokens
Drafting Walkthrough Documentation

● Create(/home/xbill/.gemini/antigravity-cli/brain/42560c5f-0aec-4abf-b329-894a07ec5075/walkthrough.md)
● Edit(/home/xbill/.gemini/antigravity-cli/brain/42560c5f-0aec-4abf-b329-894a07ec5075/task.md) (ctrl+o to expand)

▸ Thought for 5s, 517 tokens
I have built out the Pokemon Battle Simulator matching the system architecture diagram in @pokemon_api.jpg .

Here is a summary of the components created:

• API Client (pokeApi.js): Connects to PokeAPI with local filesystem caching.
Verifying Project Completion
• Move Registry (moveDatabase.js): Predefined type databases and dynamic move generator prioritizing STAB.
• Gameplay SDK (battleSdk.js): Performs combat math, turn ordering, level scaling (Lv. 50 for team, Lv. 100 with 3x
HP for Bosses), and state execution.
• Color & Formatter (colors.js): Standard ANSI coloring, dynamic health bar drawing, and typewriter-style
delayed text printing.
• CLI Shell & Entry Point (index.js & index.js): Command router supporting /pick team , /stats , /run
battle , /help , and /exit .

### Playing the Simulator

To launch the game:

node index.js
Enter fullscreen mode Exit fullscreen mode

For full details on the codebase and how features were tested, please refer to the walkthrough.md.

────────────────────────────────────────────────────────────

node index.js

▸ Thought for 5s, 420 tokens
Considering Interactive CLI Commands

● Bash(node index.js)
● ManageTask(Task: 42560c5f-0aec-4abf-b329-894a07ec5075/task-56) (ctrl+o to expand)

The simulator has successfully started and is running in the background:

╔════════════════════════════╗
║  POKEMON BATTLE SIMULATOR  ║
╚════════════════════════════╝
Welcome, Trainer! Prepare for epic battles.
Type /help to see available commands.

poke-sim>
Enter fullscreen mode Exit fullscreen mode

You can interact with it by typing commands directly. If you want me to input a command for you, just tell me what to
type (e.g. /help , /pick team pikachu charizard , or /run battle )!

The simulator is ready and waiting at the poke-sim> prompt. Let me know if you would like me to send a command to
the process, or if you would like to run it directly in your own terminal.

────────────────────────────────────────────────────────────

/pick team squirtle mew lucario

● ManageTask(Input sent to task "42560c5f-0aec-4abf-b329-894a07ec5075/task-56".)
● ManageTask(Task: 42560c5f-0aec-4abf-b329-894a07ec5075/task-56) (ctrl+o to expand)
The team has been successfully selected:
• Squirtle
• Mew
• Lucario

The simulator is ready for your next command (e.g. /stats or /run battle ).

The team is loaded! What would you like to do next? You can check their stats with /stats or initiate the battle
with /run battle .

────────────────────────────────────────────────────────────

/run battle

● ManageTask(Input sent to task "42560c5f-0aec-4abf-b329-894a07ec5075/task-56".)
● ManageTask(Task: 42560c5f-0aec-4abf-b329-894a07ec5075/task-56) (ctrl+o to expand)

The simulator is asking you to choose a Boss Pokemon to face:

Choose a Boss Pokemon (Default: Mewtwo):
Enter fullscreen mode Exit fullscreen mode

Which Pokemon would you like to battle? (Or press Enter to face Mewtwo).

────────────────────────────────────────────────────────────

mewtwo

● ManageTask(Input sent to task "42560c5f-0aec-4abf-b329-894a07ec5075/task-56".)
● ManageTask(Task: 42560c5f-0aec-4abf-b329-894a07ec5075/task-56)
● ManageTask(Input sent to task "42560c5f-0aec-4abf-b329-894a07ec5075/task-56".)
● ManageTask(Task: 42560c5f-0aec-4abf-b329-894a07ec5075/task-56) (ctrl+o to expand)

The battle has begun! Here is the current field state:

════════════════════════════════════════════════════════════
⚡ BOSS MEWTWO [Lv. 100]
Type:  PSYCHIC
HP:   [█████████████████████████] 1011/1011
────────────────────────────────────────────────────────────
🟢 YOUR SQUIRTLE [Lv. 50]
Type:  WATER
HP:   [█████████████████████████]   111/111
════════════════════════════════════════════════════════════

What will Squirtle do?
  1) Hydro Pump [ WATER ] Power: 110 (Spec)
  2) Surf [ WATER ] Power: 90 (Spec)
  3) Waterfall [ WATER ] Power: 80 (Phys)
  4) Tera Blast [ FIRE ] Power: 110 (Spec)
  5) Switch Pokemon
  6) Run Away
Enter fullscreen mode Exit fullscreen mode

Select an action (1-6):

Please choose a move (1-4), switch Pokemon (5), or run (6).

────────────────────────────────────────────────────────────

1

● ManageTask(Input sent to task "42560c5f-0aec-4abf-b329-894a07ec5075/task-56".)
● ManageTask(Task: 42560c5f-0aec-4abf-b329-894a07ec5075/task-56) (ctrl+o to expand)

Oh no! Mewtwo was too fast:

• Mewtwo used Psychic! Dealt 465 damage.
• Squirtle fainted!

You are forced to send out your next Pokemon. Here are your remaining members:
You must send out another Pokemon!
Choose a Pokemon:
1) Squirtle [Lv. 50] - FAINTED (Active)
2) Mew [Lv. 50] - HP: 167/167
3) Lucario [Lv. 50] - HP: 137/137

Please choose either 2 (Mew) or 3 (Lucario):

Please choose 2 for Mew or 3 for Lucario.

────────────────────────────────────────────────────────────

2

● ManageTask(Input sent to task "42560c5f-0aec-4abf-b329-894a07ec5075/task-56".)
● ManageTask(Task: 42560c5f-0aec-4abf-b329-894a07ec5075/task-56)
● ManageTask(Input sent to task "42560c5f-0aec-4abf-b329-894a07ec5075/task-56".)
● ManageTask(Task: 42560c5f-0aec-4abf-b329-894a07ec5075/task-56) (ctrl+o to expand)

Mew is now on the field:

════════════════════════════════════════════════════════════
⚡ BOSS MEWTWO [Lv. 100]
Type:  PSYCHIC
HP:   [█████████████████████████] 1011/1011
────────────────────────────────────────────────────────────
🟢 YOUR MEW [Lv. 50]
Type:  PSYCHIC
HP:   [█████████████████████████]   167/167
════════════════════════════════════════════════════════════

What will Mew do?
  1) Psychic [ PSYCHIC ] Power: 90 (Spec)
  2) Zen Headbutt [ PSYCHIC ] Power: 80 (Phys)
  3) Psybeam [ PSYCHIC ] Power: 65 (Spec)
  4) Thunder Punch [ FIRE ] Power: 110 (Phys)
  5) Switch Pokemon
  6) Run Away
Enter fullscreen mode Exit fullscreen mode

Select option (1-6):
Please select an action from 1 to 6.
────────────────────────────────────────────────────────────

3

● ManageTask(Input sent to task "42560c5f-0aec-4abf-b329-894a07ec5075/task-56".)
● ManageTask(Task: 42560c5f-0aec-4abf-b329-894a07ec5075/task-56) (ctrl+o to expand)

Mewtwo is incredibly powerful and fast!

• Mewtwo went first and used Thunder Punch! Dealt 195 damage.
• Mew fainted!

You only have Lucario left:
Choose a Pokemon:
1) Squirtle [Lv. 50] - FAINTED
2) Mew [Lv. 50] - FAINTED (Active)
3) Lucario [Lv. 50] - HP: 137/137

Please select 3 (Lucario) to send it out:

Please select 3 to send out Lucario.

────────────────────────────────────────────────────────────

3

● ManageTask(Input sent to task "42560c5f-0aec-4abf-b329-894a07ec5075/task-56".)
● ManageTask(Task: 42560c5f-0aec-4abf-b329-894a07ec5075/task-56)
● ManageTask(Input sent to task "42560c5f-0aec-4abf-b329-894a07ec5075/task-56".)
● ManageTask(Task: 42560c5f-0aec-4abf-b329-894a07ec5075/task-56) (ctrl+o to expand)
Lucario is now on the field!

════════════════════════════════════════════════════════════
⚡ BOSS MEWTWO [Lv. 100]
Type:  PSYCHIC
HP:   [█████████████████████████] 1011/1011
────────────────────────────────────────────────────────────
🟢 YOUR LUCARIO [Lv. 50]
Type:  FIGHT   STEEL
HP:   [█████████████████████████]   137/137
════════════════════════════════════════════════════════════

What will Lucario do?
  1) Close Combat [ FIGHT ] Power: 120 (Phys)
  2) Aura Sphere [ FIGHT ] Power: 80 (Spec)
  3) Flash Cannon [ STEEL ] Power: 80 (Spec)
  4) Thunder Punch [ FIRE ] Power: 110 (Phys)
  5) Switch Pokemon
  6) Run Away
Enter fullscreen mode Exit fullscreen mode

Select option (1-6):

Please select an option from 1 to 6.

────────────────────────────────────────────────────────────

4

● ManageTask(Input sent to task "42560c5f-0aec-4abf-b329-894a07ec5075/task-56".)
● ManageTask(Task: 42560c5f-0aec-4abf-b329-894a07ec5075/task-56)
● ManageTask(Input sent to task "42560c5f-0aec-4abf-b329-894a07ec5075/task-56".)
● ManageTask(Task: 42560c5f-0aec-4abf-b329-894a07ec5075/task-56)
● ManageTask(Input sent to task "42560c5f-0aec-4abf-b329-894a07ec5075/task-56".)
● ManageTask(Task: 42560c5f-0aec-4abf-b329-894a07ec5075/task-56) (ctrl+o to expand)

Mewtwo was a bit too powerful for our team!

• Mewtwo went first and used Thunder Punch (Fire-type move)! Dealt 520 damage.
• Lucario fainted!

Since all your Pokemon fainted, you were defeated:

╔══════════╗
║  DEFEAT  ║
╚══════════╝

💀 All your Pokemon fainted. Boss Mewtwo wins.
Enter fullscreen mode Exit fullscreen mode

The game has successfully returned to the main lobby shell:

poke-sim>
Enter fullscreen mode Exit fullscreen mode

You can now:

  1. Search and pick a larger or different team (e.g. up to 6 Pokemon with /pick team ) to try to take on Mewtwo again.
  2. Select a weaker boss (e.g. /run battle and choose pikachu or bulbasaur as the boss) to test out your team!
  3. Exit the simulator with /exit .

What would you like to do next? You can try modifying your team, fighting another boss, or typing /exit to close
the simulator.

Top comments (0)