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

4 lines
762 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

IHDRh!<21>HRgAMA<00><> <0B>a<00>PLTEw<>~<7E>|<7C>}<7D>}<7D>{<7B>}<7D>}<7D>|<7C>}<7D>|<7C>|<7C>{<7B><19><>9<EFBFBD><39>?<3F><><1D>ք<EFBFBD><D684>k<EFBFBD><6B><EFBFBD><EFBFBD><EFBFBD>!<21><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><7F><EFBFBD><EFBFBD><EFBFBD>s<EFBFBD><73><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>[<5B><>c<EFBFBD><63><EFBFBD><EFBFBD><EFBFBD>*<2A><><11><><17><><EFBFBD><EFBFBD>ڶ<EFBFBD>֍<EFBFBD><D68D>R<EFBFBD><52>|<7C><>2<EFBFBD><32><EFBFBD><EFBFBD>Ծ<EFBFBD><D4BE>(<28><>d<EFBFBD><64><EFBFBD><EFBFBD><EFBFBD>v<EFBFBD><76><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><12><><13><>+<2B><><12><><10><><1A><><12><><13><>$<24><>C<EFBFBD><43>6<EFBFBD><36><12><><11><><1E><>/<2F><><13><><<3C><>F<EFBFBD><46><>}<7D><><EFBFBD><EFBFBD><14><>J<EFBFBD><4A><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>а<05><>tRNSO<>/<2F><1F><><EFBFBD>?<>_B<><01>IDATHǵ<48><C7B5>R<EFBFBD>@E<10><><EFBFBD><EFBFBD><EFBBA0>nX<6E>\<5C><><EFBFBD><EFBFBD><7F>I[<5B><><EFBFBD><17><><EFBFBD> <0C>c<EFBFBD><63><EFBFBD><EFBFBD><EFBFBD>-<2D>y{W<><57><02>u<EFBFBD>v.0ُ<03><1F><>(W<17><><EFBFBD>x<14><><EFBFBD>!g<><67><1C>!<21><><EFBFBD>r0<72>Q<EFBFBD><51><EFBFBD>d;=<3D><>%)-<2D><><EFBFBD>v<>x<><78>CܧAT(<28><>F<EFBFBD>TL<54>ԏS<D48F><53>+5<>i,<<3C>3,Lcj<63>VMD.Ft><14>G<EFBFBD><47>A<EFBFBD><41><EFBFBD><EFBFBD><19>|SA<<3C><>(<28><>NԒi<13>ƨ<EFBFBD>z<EFBFBD>!<21>dI癝ȴ!%[r<><72>ڒ<><07>hv/<2F><><14>5<00><<3C>C<EFBFBD><43>@<40><><EFBFBD><14>Mt<4D><15><><EFBFBD>H<EFBFBD><48><EFBFBD><EFBFBD>17?<3F>4<EFBFBD><34>d<EFBFBD>/<2F>.<2E><>V<EFBFBD><56><EFBFBD><15><>ѥ<EFBFBD>A0<41><1B>h?<3F>iE^<5E><>PO<50><4F><EFBFBD><EFBFBD><EFBFBD>ZsCf<43>P76:rq<72>|<7C><>\0<0F><>u`<1B>³41_<31>D7<44>2<EFBFBD>+<2B>u6<75><17>!o<>D<EFBFBD><1C><>>`<60>c<EFBFBD>A<14>_<EFBFBD>75<37><35><EFBFBD>/Z <20><>d<EFBFBD>o <09><><EFBFBD><EFBFBD><1A>U<EFBFBD>t<#<23><><EFBFBD>(<28><>N{<7B>]<5D>x]#:<3A>hq ڝl<DA9D><EFBFBD><E68F93><EFBFBD><7F>Z<EFBFBD><5A>
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>\/7| E<>&<26>nIEND<4E>B`<60>