| Character | Size (WxH) | Frames | Actions | |-----------|------------|--------|---------| | Naruto | 24x32 | 8 | Idle, Walk, Punch, Kick, Jump, Special (Rasengan) | | Clone Ninja | 20x30 | 4 | Idle, Attack, Hurt, Die | | Sasuke (Boss) | 28x32 | 6 | Idle, Fireball, Sword, Chidori | | Gaara (Boss) | 28x32 | 5 | Sand Shield, Sand Coffin | | Shadow Clone | 24x32 | 4 | Same as Naruto (semi-transparent) |

After each boss, play brief story text (scrolling ticker at bottom). src/ β”œβ”€β”€ NarutoCanvas.java (extends GameCanvas, implements Runnable) β”œβ”€β”€ GameMIDlet.java (extends MIDlet) β”œβ”€β”€ Player.java (position, health, state, animations) β”œβ”€β”€ Enemy.java (type, AI, stats) β”œβ”€β”€ Attack.java (kunai, rasengan hitboxes) β”œβ”€β”€ SpriteSheet.java (loads PNG, caches frames) β”œβ”€β”€ SoundFX.java (simple tones for punch/hurt/jump) β”œβ”€β”€ LevelManager.java (wave spawning, boss triggers) └── Utils.java (collision, clamp, random) Example collision detection (rectangle-based): public boolean checkCollision(Player p, Enemy e) return (Math.abs(p.x - e.x) < 20) && (Math.abs(p.y - e.y) < 30);