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

4 lines
1.5 KiB
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

IHDR0.Yj^gAMA<00><> <0B>a<02>PLTEi<45> i<> i<> i<> j<> j<> j<> k<> k<>!g<>!i<> f<>"i<> j<> y<>.<2E><>:~<7E>4<EFBFBD><34>a<EFBFBD><61>d<EFBFBD><64>m<EFBFBD><6D>M<EFBFBD><4D>U<EFBFBD><55>8<EFBFBD><38>J|<7C>/t<>)<29><>A<EFBFBD><41>=<3D><>3<EFBFBD><33>V<EFBFBD><56>?<3F><>F<EFBFBD><46>U<EFBFBD><55>T<EFBFBD><54>[<5B><>5<EFBFBD><35>Pq<50>%s<>(<28><>D<EFBFBD><44>H<EFBFBD><48>A<EFBFBD><41>H<EFBFBD><48>Xm<58>&~<7E>,<2C><><<3C><>by<62>.<2E><>3x<33>/<2F><>S<EFBFBD><53>9<EFBFBD><39>Q<EFBFBD><51>J<EFBFBD><4A>8<EFBFBD><38>C<EFBFBD><43>\n<>$<24><>S<EFBFBD><53>I<EFBFBD><49>b<EFBFBD><62>6<EFBFBD><36>=x<>,<2C><>M<EFBFBD><4D>Lw<4C>+<2B><>?v<>(<28><>C<EFBFBD><43>4<EFBFBD><34>Zn<5A>%<25><>2s<32>)<29><>I<EFBFBD><49>Y<EFBFBD><59>=<3D><>B<EFBFBD><42>0}<7D>1<EFBFBD><31>O<EFBFBD><4F>C<43>0<EFBFBD><30>><3E><>,<2C><>)<29><>9r<39>'<27><>H<EFBFBD><48>P<EFBFBD><50>5<EFBFBD><35>W<EFBFBD><57>-<2D><>+o<>"<22><>Z<EFBFBD><5A>r<EFBFBD><72>b<EFBFBD><62>f<EFBFBD><66>j<EFBFBD><6A>Z<EFBFBD><5A>X<EFBFBD><58>T<EFBFBD><54>m<EFBFBD><6D>O<EFBFBD><4F>Q<EFBFBD><51>Y<EFBFBD><59>[<5B><>,<2C><>K<EFBFBD><4B>^<5E><>H<EFBFBD><48>G<EFBFBD><47>d<EFBFBD><64>L<EFBFBD><4C>W<EFBFBD><57>O<EFBFBD><4F>G<EFBFBD><47>R<EFBFBD><52>J<EFBFBD><4A>L<EFBFBD><4C>\<5C><>N<EFBFBD><4E>0<EFBFBD><30>/<2F><>.<2E><>0<EFBFBD><30>/<2F><>-<2D><>.<2E><>0<EFBFBD><30>-<2D><>-<2D><>P<EFBFBD><50>G<EFBFBD><47>\o<>%n<>$<24><>[n<>#<23><>V{<7B>,<2C><>S<EFBFBD><53>G<EFBFBD><47>)<29><>:<3A><>*<2A><>(<28><>,r<>#<23><>+|<7C>&<26><>N<EFBFBD><4E>R<EFBFBD><52>S<EFBFBD><53>C<EFBFBD><43>`<60><>T<EFBFBD><54>5<EFBFBD><35>A<EFBFBD><41>+<2B><>.<2E><>*<2A><>0z<30>%<25><>(<28><>)<29><>0<EFBFBD><30>/<2F><>/<2F><>K<EFBFBD><4B>^l<>!<21><>)<29><>-w<>%<25><>D<EFBFBD><44>K<EFBFBD><4B>q<EFBFBD><71>F<EFBFBD><46>a<EFBFBD><61>M<EFBFBD><4D>p<EFBFBD><70>T<EFBFBD><54>M<EFBFBD><4D>b<EFBFBD><62>N<EFBFBD><4E>]<5D><>c<EFBFBD><63>O<EFBFBD><4F>_<EFBFBD><5F>G<EFBFBD><47>n<EFBFBD><6E>m<EFBFBD><6D>\<5C><>Z<EFBFBD><5A>e<EFBFBD><65>j<EFBFBD><6A>i<EFBFBD><69>g<EFBFBD><67>R<EFBFBD><52>T<EFBFBD><54>W<EFBFBD><57>l<EFBFBD><6C>f<EFBFBD><66>Y<EFBFBD><59>V<EFBFBD><56>I<EFBFBD><49>N<EFBFBD><4E>R<EFBFBD><52>Q<EFBFBD><51>,<2C><>L<EFBFBD><4C>J<EFBFBD><4A>N<EFBFBD><4E>O<EFBFBD><4F>S<EFBFBD><53>U<EFBFBD><55>Q<EFBFBD><51>(j<>!<21><>.<2E><>1n<31><6E><EFBFBD>tRNS?_<><5F>ϟoO/<2F><0F><>2<>m<EFBFBD><02>IDATHǍ<48>eW<65>@<14><>e=<1B><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>;5J<><4A>[Z<><5A><EFBFBD>N)<29><>r<><EFBFBD><7F><EFBFBD><EFBFBD><EFBFBD>Jx>޹<>9<EFBFBD><39>w2AA<41>&<26>M<EFBFBD><04>V-"<00><>.8<00>40U<13>Fh۬yD<79>v Z<>"<04>е}HHhh<68><68><00>J!"<22><>bnb <02>U_<55><5F>a츻
/<06>1@O0<03>/<2F><<3C> <14><04><00>c<EFBFBD>2<EFBFBD>0FN<04>M]<5D>Ï<EFBFBD><C38F><EFBFBD><EFBFBD>sfz<66>yA<05>=g<><67>J<1F><>E<EFBFBD>9<05> 9S'<27><> <20><><EFBFBD>,<2C><>)<29><>H<EFBFBD><48>Ć><3E><>S<EFBFBD><53><0E><>!al%<25><><7F><EFBFBD><EFBFBD><EFBFBD>]<5D> ;w|<7C> <0C>AW<41><57><EFBFBD><EFBFBD>|<7C><><EFBFBD>+7{<7B><79>Y <10><><1D><><EFBFBD><0F><15><><EFBFBD>;Bh<><68>-<2D>|{<7B>{R_sj<73><00>B<EFBFBD><42><EFBFBD><EFBFBD>1<EFBFBD><1E><>ǖ<EFBFBD><C796><18>kc<><01><>ξK<CEBE>]<5D><><EFBFBD>G<EFBFBD><47><EFBFBD><EFBFBD><14>7u:<3A><>٠<>CL<43><4C>u<EFBFBD><75><EFBFBD>j<EFBFBD>z՚<7A><D59A><EFBFBD><EFBFBD>j`FA"t*&$Vh<56>H;<3B>XQ<58> <09><>P<EFBFBD><50>4Hb <0A><><EFBFBD><EFBFBD>`<60>^?)<29><>$<24><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʼn<10>S<><53><EFBFBD>O<EFBFBD><4F><EFBFBD>MJG<4A>.`UL<><4C><EFBFBD><EFBFBD><EFBFBD>e<EFBFBD><65>z<EFBFBD>5|<7C>$6&<26><1F><>հ@<40><><19><>1u<31>:9<><39>')7 <02>mZ:<3A>.\<5C><>r<1E><>m <0A>[<5B>tB+<2B>B<EFBFBD><42><EFBFBD><01><>j7t<12><><EFBFBD>R<04>I<EFBFBD>4<11><>x<EFBFBD><78>ډ.<2E>DT0<54>er%<25>L<EFBFBD>j"X<>2<EFBFBD>f'+H"<22>j<18>3<EFBFBD><33>N<EFBFBD><04>L'<27>1<>g:<3A>ˇ<EFBFBD>L<EFBFBD>H<13>2<>+S<><53>C<EFBFBD>9R<39><52><12>d<>z<EFBFBD><7A>G98<39><38><EFBFBD><EFBFBD><EFBFBD> <0C><><EFBFBD><EFBFBD><41><><1D>p9W<39>_<EFBFBD>Y<EFBFBD>$}^o<>)AR%WId<49><10>4O<34> A<><07><>E<><45>9Z<39><5A>ܝ<EFBFBD> &<26><><EFBFBD>'<08>^<5E><><EFBFBD>e<EFBFBD><07>M<EFBFBD>3<1E>RIEND<4E>B`<60>