Files
akbasic/examples/breakout/sprites/art/ballGrey.png

3 lines
495 B
Plaintext
Raw Normal View History

Add two Breakout examples and the tutorials that build them Two complete games in `examples/breakout/`, both 100% BASIC: `characters/` draws its wall in the text grid with two `DATA` sprites for the ball and paddle, and `sprites/` loads CC0 artwork and captures its whole screen with `SSHAPE`/`SPRSAV`. They take opposite shapes for reasons that are entirely this interpreter's, which is what the chapters are for. `docs/17-tutorial-breakout.md` and `docs/18-tutorial-breakout-artwork.md` build each one a step at a time, and end in a checklist of the rules a real program runs into: create every name before the loop starts, write a text row whole, loop with `GOTO` rather than `DO`, put the float on the left. Every trap is a runnable block with its own output rather than a claim -- the value pool dying at four thousand names, the skipped `BEGIN` block that breaks its caller's `RETURN`, `SSHAPE` ignoring a subscript, `READ`'s single cursor. Five figures, generated from the listings beside them by `docs_screenshots`, and a `breakout_art` setup so the ones that load artwork load the example's own. The character game's wall cannot be photographed -- the screenshot host omits the text layer on purpose -- so it is shown as compared output instead. `docs/07-sound.md` never said `SOUND`'s frequency is a SID register value rather than hertz, which both games depend on. It says so now, with the conversion from `src/audio_tables.c:84`. `TODO.md` gains the thirteen defects the two games turned up -- §6 items 30 to 33 and all of §9 -- each with a reduction that fits on a screen, the file and line of the cause, and what a fix would touch. Verified: `docs_examples` passes in both build configurations, `docs_screenshots --check` re-renders all thirteen figures and byte-compares them, the full 109-test suite passes in both builds, every quoted fragment was checked to appear verbatim in the listing it came from, and every relative link and anchor resolves. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-01 22:54:42 -04:00
<EFBFBD>PNG

IHDR<00>j<EFBFBD> gAMA<00><> <0B>a<00>PLTE<54><45><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><00><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EBAAAA><EFBFBD><EFBFBD><E39A9A><EFBFBD><EFBFBD><E1A1A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ò<EFBFBD><C3B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EE9999><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʿ<EFBFBD><CABF><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>򯯯<EFBFBD><F2AFAFAF><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EA95B4>tRNS<4E>_o<7F>Ϗ<>/<2F><>W<><57>Q<00>IDAT<18>]<5D><>v<EFBFBD> D<>U(=<3D>Wے<><DB92><EFBFBD><EFBFBD><EFBFBD><EFBFBD><1A>4o{<0F><><EFBFBD>a<EFBFBD> <20>a<19>m<EFBFBD>8<EFBFBD><01><02>D(g<>S<EFBFBD>) <0B><><EFBFBD>H<><48>e<EFBFBD><65>s<EFBFBD><73><16>p<><70>r^U<><55><EFBFBD>[<5B><><EFBFBD>׺j<D7BA>͙<14>3<EFBFBD><33>1<07> $ <0B><> <1E>M<EFBFBD>,C<><43>/<2F>@<40>v<76><7F><EFBFBD>ptn<07>uw =+<2B><><EFBFBD>_<><EFBFBD><E89BB2>km7<6D><37>w4h2ɰ<32>+<2B>ie<69><65>5<EFBFBD><35>#ඤ<><E0B6A4><EFBFBD><EFBFBD>!<21><><EFBFBD>!eB.l<>>BJ<42> |j<>p<EFBFBD><70>c Q \<5C><05><> q<>KK<4B><4B><EFBFBD><EFBFBD><EFBFBD>ޒ<EFBFBD>M<EFBFBD><4D>q<EFBFBD>;<3B>A <0A><>7!IEND<4E>B`<60>