Option 9: ASCII. The bot becomes pure text in three styles: a shaded character ramp, hand-drawn line art, and a roguelike dungeon crawler that plays itself. **Shaded ramp:** - Each character cell asks one question: how much ink do I need here? The ramp ``` ␠.:-=+*#%@ ``` runs from no ink to full ink. - The bot turns left and right in 3D. The eyes slide across the sphere and squash at the edge. The ``` Blocks ``` button switches to ``` ░▒▓█ ``` , the shading style of old DOS (Disk Operating System) screens. **Line art:** Only the outline is drawn. The code picks ``` / \ | _ ``` by the direction of the curve at each cell. The bot's slanted eyes are literally backslashes. They become ``` - ``` when it blinks. The speech bubble uses the format of ``` cowsay ``` , a 1999 Unix joke program. Tildes ``` ~ ``` puff out on landing. **Roguelike:** - The dungeon is generated fresh each level: up to 7 rooms, joined by L-shaped corridors. - The bot explores by itself. It fights anything visible first, then grabs loot, then heads for the nearest unexplored edge, then takes the stairs down. - Rats and goblins chase it when they see it. **Characters aren't square.** A monospace cell is about 0.6 as wide as it is tall. The code measures your font and stretches the sphere sideways so it looks round. Skip that and every ASCII circle becomes an egg. The bot is ``` ☻ ``` , not ``` @ ``` . Classic roguelikes use ``` @ ``` for the player. The smiley comes from the IBM PC's original character set, and Dwarf Fortress still uses those smileys for its dwarves. **Field of view is 180 rays.** Walls stop each ray. Places you've seen stay dim, like pencil on a map; only what's in view is lit. This "fog of war" dates to 1980's Rogue . **One AI (artificial intelligence) behaviour covers everything.** A single breadth-first search (BFS) runs with different goals: fight, loot, explore, descend. **The terminal runs at 15 fps (frames per second).** That's deliberate: smooth 60 fps text looks wrong. **Luminance ramp** ``` brightness: 1.0 ────────────────────────▶ 0.0 ink needed: 0.0 ────────────────────────▶ 1.0 character: ' ' '.' ':' '-' '=' '+' '*' '#' '%' '@' ``` **Outline rules (normal direction → character)** ``` _ _ _ top/bottom → _ / \ top-left → / | \ \ | left/right → | \ / bottom-left → \ ‾ ‾ ‾ eyes → \ (matches their slant) ``` **Roguelike turn loop** ``` bot turn: BFS goal = monster ▶ loot ▶ frontier ▶ stairs │ ├─ step into monster → bonk (hp−1) └─ step onto item → pick up fov(): 180 rays × 8 cells → vis[], seen[] monsters: if visible → step toward bot, or nibble (30%) ``` **Critical thinking:** roguelikes stayed in ASCII long after graphics were cheap, and players often prefer it. What does a ``` r ``` give the player's imagination that a detailed rat sprite takes away? **Lateral thinking:** Morse code, Braille, knitting patterns and seat maps all encode pictures in a grid of symbols. Could the ramp idea shade your bot in Braille, stitches, or even seats in a stadium? **First principles:** why does ``` @ ``` read as darker than ``` . ``` ? Could you rank every keyboard character by ink coverage from scratch, and would a bold font change the order? - How does the famous spinning ASCII donut work? - Can this run in a real terminal as a script?
B. Early gaming (1972–1995)