}* SUPERBT.TXT -- SUPREME FAST LEARNING OF F3 }* }* BY SUPREMELY SIMPLE FUN 2D GAME-MAKING. }* }* THIS PROGRAM IS YOGA4D.ORG/cfdl.txt }* }* REDISTRIBUTABLE (FROM B.A.BOOKLET BY A.T. 2010) }* }* =====> BIG AND IMPORTANT NOTES: <=============== }* }* FROM THE COMPLETION OF THE BIG ART BOOKLET, TO }* }* THESE FINAL PAGES WITH THE COMPLETED GAME, TOOK }* }* A BIT OF SOME QUANTUM JUMPS! PLS FORGIVE! ;-) }* }* IT GOT REALLY LONGER, BUT NOW IT IS A REAL GAME! }* }* THE R E A L L Y G O O D N E W S IS THAT }* }* THERE'S HARDLY ANY BIT OF WHAT FOLLOWS WHICH IS }* }* COMPLICATED COMPARED TO WHAT YOU'VE ALREADY BEEN }* }* LOOKING AT IN PREVIOUS CHAPTERS. ANYTHING NEW }* }* HERE IS MENTIONED IN COMMENTS, SEE F3DOCS.TXT }* }* WHERE IT HAS EASY-TO-UNDERSTAND COMMENTS ALSO. }* }* THERE ARE SEVERAL CHANGES HERE -- INSIDE MARKED }* }* AREAS, WITH LINES LIKE : ****NEW PART FOLLOWS! }* }* AS OFTEN HAPPENS, WHILE WORKING THE MOTORICS OUT,}* }* SOME IDEAS CHANGED -- AND EVOLVED. GAMER'S SYMBOL}* }* NOW MOVES O N L Y WHEN KEYBOARD IS USED, AND }* }* THE SYMBOLS ARE SPACED OUT, LESS TIGHT. AND: }* }* PLEASE LOOK AT E V E R Y ROW-.. AND COLUMN-.. }* }* IN THIS PROGRAM -- CAREFULLY! -- AS I CONFUSED }* }* THE MEANING OF THE TWO IN ALL EARLIER VERSIONS }* }* OF THIS PROGRAM IN YOUR BOOKLET. THIS TYPE OF }* }* THING EASILY HAPPENS DURING PROGRAMMING, AND }* }* INSTEAD OF CONCEALING IT, I HAVE ALLOWED IT TO }* }* BE PART OF THE JOURNEY OF MAKING THIS PROGRAM. }* }* ROW, OF COURSE, IS Y, WHILE COLUMN IS X. }* }* THERE IS A LOT OF CONDENSED LEARNING INSIDE THIS,}* }* SPEND WEEKS WITH IT -- AND MANUAL -- TO LEARN ALL!}* }* THOUGH A LONGER PROGRAM THAN THE INITIAL ONES IN }* }* BOOK, IT USES NO NEW FUNDAMENTAL TECHNIQUE, IT IS }* }* JUST MORE OF THE SAME THAT YOU'VE ALREADY LEARNED!}* }* BE PATIENT ON CORRECTING ANY EVEN SLIGHT TYPING }* }* ISSUES. WATCH E.G. FOR TYPING ONE BILLION RATHER }* }* THAN TEN BILLION, AND TO HAVE SPACE BEFORE AND }* }* AFTER SEMICOLONS, TO GET SEQUENCE RIGHT WITH N1 }* }* .. N11, TO AVOID HAVING SPACE AFTER COLON, TO }* }* AVOID HAVING SPACE AFTER ( BEFORE MATCHED, ETC. }* }* PLAYFULLY CORRECT YOUR PROGRAM TO BE LIKE THIS. }* }* PLAY IT, AND HAVE FUN!!! GOOD LUCK. --ARISTO }* ((DATA TICKET )) (LET WIPE-CLEAR-GAME-MESSAGE-AREA BE (( )) (( (( 1 ; 500 ; 1024 ; 760 ; 0 => RECTFILL )) )) OK) (LET WIPE-CLEAR-GAME-BOARD-AREA BE (( >N1 )) (( (( 101 ; 101 ; 399 ; 399 ; N1 => RECTFILL )) )) OK) (LET TELL-SOMETHING-GOOD BE (( ; )) (( (( ; 120 ; 550 => B9-POP )) )) OK) (LET TELL-SOMETHING-GOOD-SECOND-LINE BE (( ; )) (( (( ; 120 ; 600 => B9-POP )) )) OK) (LET TELL-SOMETHING-GOOD-THIRD-LINE BE (( ; )) (( (( ; 120 ; 650 => B9-POP )) )) OK) (LET GET-A-GOOD-TICKET-TO-RIDE BE (( )) (( (( 100000 TICKET < RICH (COUNT (( KEYTOUCH (MATCHED (( N1 TICKET <>> (COUNT (( N1 => >N1 )) COUNTUP) )) )) OK) (LET BEAUTIFUL-CONTENT-OF-FRAME BE (( )) (( (( :@@@@@@@@SUPERBT!!! ; 120 ; 150 => B9-POP )) (( :@@@FIGHT_WELL! ; 120 ; 200 => B9-POP )) (( :@@@SCORE_MUCH! ; 120 ; 250 => B9-POP )) )) OK) (LET GET-A-WONDERFUL-SENSE-OF-TIMING BE (( )) (( (( }Dear master of this game!} => TELL-SOMETHING-GOOD )) (( }Please press lineshift, wait a little,} => TELL-SOMETHING-GOOD-SECOND-LINE )) (( }and press it again, to indicate game speed.} => TELL-SOMETHING-GOOD-THIRD-LINE )) (( A-KEY )) (( WIPE-CLEAR-GAME-MESSAGE-AREA )) (( GET-A-GOOD-TICKET-TO-RIDE )) (( WIPE-CLEAR-GAME-MESSAGE-AREA )) (( }Thanks! Lineshift to begin} => TELL-SOMETHING-GOOD )) (( }Have courage! Be brave! Win win win!} TELL-SOMETHING-GOOD-SECOND-LINE )) )) OK) (LET SHOW-FUN-AT-FOUR-TIMES-THE-SPEED BE (( )) (( (( TICKET >>> ; )) (( ; TICKET >>> ; 4 => DIV TICKET < WIPE-CLEAR-GAME-BOARD-AREA )) (( }*YOU ARE ELECTRIC!*} ; 110 ; 350 => B9-POP )) (( USE-THE-TICKET-TO-TRAVEL-FAR )) (( 191 => WIPE-CLEAR-GAME-BOARD-AREA )) (( }*EEEELLLECTRIC!!!*} ; 175 ; 250 => B9-POP )) (( USE-THE-TICKET-TO-TRAVEL-FAR )) (( 191 => WIPE-CLEAR-GAME-BOARD-AREA )) (( }*ELECTRICITY!*} ; 220 ; 110 => B9-POP )) (( USE-THE-TICKET-TO-TRAVEL-FAR )) (( 128 => WIPE-CLEAR-GAME-BOARD-AREA )) COUNTUP) ; )) (( ; TICKET < B9-POP )) (( } Y F } ; 750 ; 125 => B9-POP )) (( } G H} ; 750 ; 150 => B9-POP )) (( } B} ; 750 ; 175 => B9-POP )) )) OK) (LET SHOW-THE-GAMER-HER-PRESENT-SCORE BE (( )) (( (( }S C O R E >>> } ; 450 ; 300 => B9-POP )) (( }S C O R E >>> } ; THE-SCORE >>> => CONCAT ; 450 ; 300 => B9-POP )) )) OK) (LET BIG-PIXEL-HERE BE (( >N11 >N1 )) (( }* ****NEW PART OF PROGRAM FOLLOWS HERE:***** }* (( N1 ; 13 => MUL ; 88 => ADD => >N1 )) (( N11 ; 13 => MUL ; 88 => ADD => >N11 )) }* ***NEW PART OF PROGRAM ABOVE HERE**** }* (( N1 ; N11 ; BRIDGE 4 ADD ; BRIDGE 4 ADD ; 191 => RECTFILL )) )) OK) (LET GAMER-SYMBOL BE (( )) (( }* ****NEW PART OF PROGRAM FOLLOWS HERE:***** }* (( PLAYERS-COLUMN-NUMBER >>> => >N1 )) (( PLAYERS-ROW-NUMBER >>> => >N3 )) }* ***NEW PART OF PROGRAM ABOVE HERE**** }* (( N1 => INC ; N3 => BIG-PIXEL-HERE )) (( N1 ; N3 => INC => BIG-PIXEL-HERE )) (( N1 ; 3 => ADD ; N3 => INC => BIG-PIXEL-HERE )) (( N1 => INC ; N3 ; 3 => ADD => BIG-PIXEL-HERE )) )) OK) (LET TREASURE-SYMBOL BE (( )) (( }* ****NEW PART OF PROGRAM FOLLOWS HERE:***** }* (( TREASURE-COLUMN-NUMBER >>> => >N1 )) (( TREASURE-ROW-NUMBER >>> => >N3 )) }* ***NEW PART OF PROGRAM ABOVE HERE**** }* (( N1 ; 3 => ADD ; N3 => BIG-PIXEL-HERE )) (( N1 => INC => INC ; N3 => INC => BIG-PIXEL-HERE )) (( N1 => INC ; N3 => INC => INC => BIG-PIXEL-HERE )) )) OK) }* ****NEW PART OF PROGRAM FOLLOWS HERE:***** }* }* LOTS OF COMMENT LINES LIKE THIS, HERE, -- DON'T HAVE TO TYPE'EM! }* }* JUST TYPE IN THE PROGRAM E X A C T L Y AND CHECK IT, LINE FOR }* }* LINE, AND YOU HAVE A WORKING GAME!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! }* }* BUT OMIT ALL THESE LINES WITH A CURLY BRACKET FOLLOWED BY STAR. }* ((DATA GAME-CONTINUES GAME-CONTINUES => SETDANCE )) ((DATA QUANTITY-OF-TREASURES QUANTITY-OF-TREASURES => SETDANCE )) }* THIS CONTAINS NUMBER OF TREASURES, AND WE }* }* BEGIN WITH 1, AND INCREASE A LITTLE AS }* }* THE DURATION OF THE GAME INCREASES. }* ((DATA GAME-BOARD 20 ; 20 => RAM-PM GAME-BOARD <>> => & )) (( 20 (COUNT (( 20 (COUNT (( PLAYERS-COLUMN-NUMBER >>> => >N8 )) (( PLAYERS-ROW-NUMBER >>> => >N9 )) (( N1 ; (( N8 2 SUB )) ; (( N8 4 ADD )) => WITH ; N3 ; (( N9 2 SUB )) ; (( N9 4 ADD )) => WITH => AND (MATCHED (( N1 ; N3 ; # => GM => ISPRO (MATCHED (( 100 ; QUANTITY-OF-TREASURES >>> => MUL ; THE-SCORE => ADDVAR )) (( 0 ; N1 ; N3 ; # => PM )) (( -1 ; QUANTITY-OF-TREASURES => ADDVAR )) MATCHED) )) MATCHED) )) COUNTUP) )) COUNTUP) )) (( && )) )) OK) }* NEXT FUNCTION IS FIXED-ON COPY OF THE ABOVE, }* }* BUT WITHOUT SCORE ADDED IN THE MIDDLE. }* }* IT IS CALLED WHEN F IS NOT CLICKED. }* (LET FINISH-IF-NEAR-TREASURE-WITHOUT-F BE (( )) (( (( GAME-BOARD >>> => & )) (( 20 (COUNT (( 20 (COUNT (( PLAYERS-COLUMN-NUMBER >>> => >N8 )) (( PLAYERS-ROW-NUMBER >>> => >N9 )) (( N1 ; (( N8 DEC )) ; (( N8 3 ADD )) => WITH ; N3 ; (( N9 DEC )) ; (( N9 3 ADD )) => WITH => AND (MATCHED (( N1 ; N3 ; # => GM => ISPRO (MATCHED (( GAME-CONTINUES => SETBASIS )) MATCHED) )) MATCHED) )) COUNTUP) )) COUNTUP) )) (( && )) )) OK) (LET SYMBOL-ADD-XY BE (( >N2 >N1 )) (( (( PLAYERS-COLUMN-NUMBER >>> => >N8 )) (( PLAYERS-ROW-NUMBER >>> => >N9 )) (( N1 ; N8 => ADD ; 1 ; 20 => SET-RANGE => >N8 )) (( N2 ; N9 => ADD ; 1 ; 20 => SET-RANGE => >N9 )) (( N8 PLAYERS-COLUMN-NUMBER < ONE ; '8' => EQ }* THE WORD 'ONE' MEANS MAKE ONE COPY OF WHAT'S ON TOP OF STACK. }* }* USE EQ FOR TEXTS AND FOR KEY, EQN FOR NUMBERS AND KEYNUM. }* }* THE PECULIAR PHRASE '8' MEANS CONVERT THIS NUMBER INTO CHARACTER.}* (MATCHED }* WHEN MATCH, WE REMOVE (RM) THE COPY OF WHAT KEY THE USER PRESSED: }* (( ; RM )) (( GAME-CONTINUES => SETBASIS )) }* SETBASIS, THEN, SETS TO BASIS (ZERO), WHILE SETDANCE TO DANCE (ONE). }* }* THE FUNCTION 'EXIT', NEXT, EXITS ONLY FROM PRESENT FUNCTION. }* (( EXIT )) )(OTHER }* IN NEXT LINES, WE USE THE = .. == .. === STYLE, WHICH IS }* }* SHORT-HAND FOR (MATCHED .. )(OTHER .. MATCHED), SEE NEXT FUNCTION ALSO.}* }* ALL THE SEMICOLONS, THE ; SIGNS, MEAN NOTHING TO THE PC. THEY ARE }* }* BUT A REMINDER THAT SOMETHING IS ON THE STACK, NAMELY THE KEY PRESSED. }* }* THE FUNCTION UPCM MEANS PUT TO UPPERCASE, ON THE MAIN STACK. }* (( ; => UPCM => ONE ; :F => EQ = CAPTURE-TREASURE-WHEN-NEAR ; == }* THE NEXT FUNCTION IS CALLED WHEN ANYTHING BUT F CLICKED }* ; FINISH-IF-NEAR-TREASURE-WITHOUT-F ; => ONE ; :H => EQ = 4 ; 0 => SYMBOL-ADD-XY ; == ; => ONE ; :G => EQ = -4 ; 0 => SYMBOL-ADD-XY ; == ; => ONE ; :Y => EQ = 0 ; -4 => SYMBOL-ADD-XY ; == ; => ONE ; :B => EQ = 0 ; 4 => SYMBOL-ADD-XY ; === === === === === MATCHED) ; )) (( ; RM )) )(OTHER (( FINISH-IF-NEAR-TREASURE-WITHOUT-F )) MATCHED) )) (( MANUAL-CLEAR-KEYBUF )) )) OK) (( LOOKSTK )) }* THE MANUAL-CLEAR-KEYBUF CLEARS ALL CHARACTERS FROM }* }* BEING STORED UP IF RAPID CLICKING ON KEYBOARD HAS TAKEN }* }* PLACE. THIS IS IMPORTANT SINCE ONLY ONE CLICK IS }* }* IS PROCESSED PR EACH 'TICK' TO KEEP INTERACTIVENESS. }* }* THE NEXT FUNCTION USES ^4 FR GETV TO GET A FREE FUNNY }* }* NUMBER SUITABLE FOR GAMING AND VARIABLE RESPONSES WHICH }* }* IN THIS CASE VARIES FROM 1 TO 4. THIS IS CONVERTED TO }* }* CLOCK NUMBER DIRECTIONS 12, 15, 18, 21. YOU NOTICE THE }* }* COMPLETING LINE HAS N3 => => WHERE THE ARROWS }* }* ARE DOUBLE AS OUR CONVENTION TO SAY: SOMETHING IS }* }* LEFT ON THE STACK AFTER THIS FUNCTION HAS BEEN }* }* PERFORMED, AND THIS OUGHT TO BE PICKED UP BY THE PLACE }* }* WHERE THIS FUNCTION IS BEING CALLED (WHICH IS NEXT FUNC.)}* (LET GET-A-FUNNY-FREE-DIRECTION BE (( )) (( (( ^4 FR GETV => >N1 )) (( N1 ; 1 => EQN = 15 => >N3 == N1 ; 2 => EQN = 18 => >N3 == N1 ; 3 => EQN = 21 => >N3 == 12 => >N3 === === === )) (( N3 => => )) )) OK) }* THE NEXT IS MODIFIED FROM A COPY OF SOME OF THE COUNT STUFF ABOVE. }* }* WHEREAS .. => DIV IS A WHOLE NUMBER DIVISION, ONE CAN }* }* USE THE DECIMAL NUMBER STACK, MENTIONED IN NEXT BOOKLET, }* }* TO CALCULATE E.G. $8000 $5000 => \R => RICHTOSTK => POP }* }* GIVES 1.6, APPROXIMATELY THE GOLDEN MEAN. DIVISION IS \ AND }* }* THE R AFTER IT MEANS USE THE RICH NUMBER STACK, WITH DECIMALS. }* }* A DOLLAR SIGN BEFORE NUMBERS ALSO MEANS USE RICH NUMBER STACK. }* }* IF YOU LIKE, LOOK UP FUNCTION RICHTOSTK IN THE MANUAL. }* }* BUT WE DON'T NEED ANYTHING OF THIS HERE. WHAT WE NEED IS TO }* }* GRADUALLY, BUT NOT TOO QUICKLY, UP THE NUMBER OF TREASURES. }* }* BY DECREASING THE NUMBER FED TO DIV IT GOES MORE QUICKLY UP.}* (LET UPDATE-QUANTITY-OF-TREASURES BE (( >N9 )) (( (( N9 ; 8 => DIV => INC => >N9 )) (( QUANTITY-OF-TREASURES >>> ; N9 => INTGREATER (MATCHED (( EXIT )) MATCHED) )) }* IN THE MIDDLE OF THE COUNT LOOP, THE N9 ABOVE }* }* MYSTERIOUSLY BECOMES N11, SOME HINTS ABOUT WHY ARE GIVEN }* }* IN COMMENTS ABOUT COUNT LOOPS FURTHER AHEAD IN THIS PROGRAM! ;-) }* }* NOTICE ALSO THE VERY CLEVER FUNCTION NOT WHICH IS AT A }* }* LINE BY ITSELF AFTER THE ..WITH..WITH..AND STUFF, HERE. }* }* YES => NOT GIVES NO WHILE NO => NOT GIVES YES. }* }* WHAT WE'RE DRIVING AT HERE IS TO INSERT TREASURES AT GOOD }* }* DISTANCE FROM THE GAMER SYMBOL. WE TRY A CERTAIN NUMBER OF }* }* TIMES, THEN AFTER THAT NUMBER OF TIMES, WE DON'T PUSH IT. }* (( GAME-BOARD >>> => & )) (( 20 ; N9 => MUL (COUNT (( PLAYERS-COLUMN-NUMBER >>> => >N8 )) (( PLAYERS-ROW-NUMBER >>> => >N9 )) }* NOTE THAT INSIDE A COUNT LOOP WE'VE GOTTA WATCH OUT TO }* }* STORE TEMPORARY STUFF NOT IN THE N1 AND N2 USED BY THE COUNT, }* }* MORE COMMENTS ABOUT THIS ELSEWHERE IN PROGRAM, MORE IN F3DOCS. }* (( 20 => FUNNYRFFG => >N4 )) (( ^20 FR GETV => >N6 )) (( N4 ; (( N8 3 SUB )) ; (( N8 5 ADD )) => WITH ; N6 ; (( N9 3 SUB )) ; (( N9 5 ADD )) => WITH => AND => NOT (MATCHED (( N4 ; N6 ; # => GM => ISBASIS (MATCHED }* ISBASIS MEANS IT'S NOTHING THERE. INCVAR MEANS: ADD ONE TO THE VARIABLE. }* (( QUANTITY-OF-TREASURES => INCVAR )) (( QUANTITY-OF-TREASURES >>> ; N11 => INTGREATER (MATCHED }* THE NEXT LINE IS A GENTLE WAY TO EXIT THIS LOOP, WHEN ENOUGH. }* }* THE DEEPER REASON IS THAT N2, INSIDE A COUNT, HAS THE TOP-COUNT. }* (( N2 => >N1 )) MATCHED) )) MATCHED) )) }* THIS WAS NOT MUCH PLANNED, BUT SEEMS RIGHT: IF THERE IS ALREADY A }* }* TREASURE THERE, IT M I G H T GET A NEW DIRECTION. WHY NOT?! }* (( GET-A-FUNNY-FREE-DIRECTION ; N4 ; N6 ; # => PM )) MATCHED) )) COUNTUP) )) (( && )) )) OK) (LET DO-THE-MOTIONS BE (( )) (( (( GAME-BOARD >>> => & )) }* USING ONLY THE SAME VOCABULARY OF FUNCTIONS AS WE HAVE ALREADY }* }* USED, WE GO THROUGH THE GAME-BOARD, EVERY PLACE IN IT (20X20) }* }* AND MOVE EACH TREASURE SYMBOL TO THE PLACE IT OUGHT TO GO. }* }* WE ADD A NUMBER -- 10,000 -- EACH TIME WE HAVE MOVED ONE, }* }* SO THAT, IF WE RUN INTO IT ONCE MORE DURING THE LOOP-INSIDE- }* }* THE-LOOP-OF-20-COLUMNS-AND-20-ROWS, WE DON'T MOVE IT TWICE. }* }* BUT THEN WE GOTTA LOOP THROUGH IT AGAIN, GETTING THE NUMBERS }* }* FIXED BACK TO THE ORIGINAL. HOWEVER 20X20=400 IS A SMALL LOOP }* }* FOR THE COMPUTER DOES A LOT MORE THAN THAT IN A SPLIT SECOND. }* (( 20 (COUNT (( 20 (COUNT }* NOTE THAT A (COUNT INSIDE A (COUNT MEANS THAT N3 BECOMES THE }* }* COUNTER FOR THE OUTER LOOP, WHILE N1 THE INNER LOOP, AND ANY }* }* PREVIOUS USE OF N1, N2, ETC, GETS CHANGED UP TO N4, N5, ETC. }* }* THE VALUES OF N1..N11 ARE LOCAL TO EACH FUNCTION, BUT }* }* EACH COUNT-LOOP PUSHES TWO NEW NUMBERS TO THIS 'SIMPLESTACK'.}* }* THE FUNCTION INTGREATER COMPARES TWO NUMBERS FOR SIZE, }* }* SO THAT 100 ; 10 => INTGREATER GIVES A YES, }* }* WHILE THE FUNCTION ISPRO GIVES YES FOR VALUES ABOVE 0. }* }* THEN, THE FUNCTION AND GIVES YES WHEN BOTH OF ITS INPUTS }* }* ARE YES. SO THE NEXT CHECK IS WHETHER THE NUMBER IS NONZERO }* }* BUT NOT TOO BIG: }* (( N1 ; N3 ; # => GM => >N10 )) (( 10000 ; N10 => INTGREATER ; N10 => ISPRO => AND (MATCHED (( N1 => >N8 )) (( N3 => >N9 )) }* IN THE NEXT LINES, A SHORTER FORM OF (MATCHED..)(OTHER..MATCHED) }* }* IS USED, NAMELY = .. == .. ===. WE MOVE TREASURES AROUND GIVEN }* }* A CHECK ON WHICH OF THE FOUR DIRECTIONS THEY ARE MOVING. WE ALSO }* }* HAVE TO DEAL WITH THOSE GOING OFF LIMIT, OTHERWISE PROGRAM CRASHES. }* (( N10 ; 15 => EQN = INCN8 == N10 ; 18 => EQN = INCN9 == N10 ; 21 => EQN = DECN8 == DECN9 }* THE RULE IS: ONE === FOR EACH =, NOT COUNTING THE ==. HERE, 3: }* === === === }* THE NEXT FUNCTION WITH GIVES A YES WHEN WITHIN GIVEN RANGE. }* (( N8 ; 1 ; 20 => WITH ; N9 ; 1 ; 20 => WITH => AND (MATCHED (( N10 ; 10000 => ADD ; N8 ; N9 ; # => PM )) MATCHED) )) (( 0 ; N1 ; N3 ; # => PM )) MATCHED) )) COUNTUP) )) COUNTUP) )) (( 128 => WIPE-CLEAR-GAME-BOARD-AREA )) (( 191 USE-THIS-GREEN-TONE < GM ; 10000 => INTGREATER (MATCHED (( N1 ; N3 ; # => GM ; 10000 => SUB ; N1 ; N3 ; # => PM )) (( N1 TREASURE-COLUMN-NUMBER <>> => & )) (( EXPLAIN-TO-THE-GAMER-SOME-GAME-CONTROLS )) (( THE-SCORE => SETBASIS )) (( SHOW-THE-GAMER-HER-PRESENT-SCORE )) }* THE NEXT ROW.. AND COLUMN.. ARE SWAPPED AROUND, COMPARED TO BEFORE: }* (( 15 PLAYERS-COLUMN-NUMBER < CLEAR-MATRIX )) (( 5 TREASURE-COLUMN-NUMBER < PM )) }* THIS MEANS: DIRECTION 15 FOR A TREASURE AT X 5 AND Y 15. }* (( 191 USE-THIS-GREEN-TONE < VISDANCE (MATCHED (( N1 => UPDATE-QUANTITY-OF-TREASURES )) (( DO-THE-MOTIONS )) (( SHOW-THE-GAMER-HER-PRESENT-SCORE )) (( USE-THE-TICKET-TO-TRAVEL-FAR )) )(OTHER (( }***GAME DONE! USED } ; N1 => CONCAT ; } TICKS TO SCORE } => CONCAT ; THE-SCORE >>> => PRETTIFY-NUMBER => CONCAT ; } POINTS.} => CONCAT ; 50 ; 50 => B9-POP )) (( N2 => >N1 )) }* THIS SAYS: PUT COUNTER TO FINISH-VALUE. EXIT LOOP. }* MATCHED) )) COUNTUP) )) (( SHOW-FUN-AT-FOUR-TIMES-THE-SPEED )) (( TICKET >>> ; 10 => MUL TICKET < B9-POP )) (( }that you don't get absolutely addicted} ; 10 ; 50 => B9-POP )) (( }to me. -- The program. ENTER if you dare!} ; 10 ; 90 => B9-POP )) (( A-KEY )) (( CLS )) (( 100 ; 100 ; 400 ; 400 ; 1 => RECT )) (( BEAUTIFUL-CONTENT-OF-FRAME )) (( GET-A-WONDERFUL-SENSE-OF-TIMING )) (( SHOW-FUN-AT-FOUR-TIMES-THE-SPEED )) (( USE-THE-TICKET-TO-TRAVEL-FAR )) (( WIPE-CLEAR-GAME-MESSAGE-AREA )) (( GET-ON-WITH-THE-GAME )) (( GJ-DONE )) )) OK) (LET AUTOSTART BE SUPERBT OK) }* IF YOU DON'T GET IT TO WORK AFTER TYPING IT IN, IT }* }* IS LIKELY TO BE SOMETHING WHICH IS THERE, BUT HARD TO SEE }* }* WITHOUT LOOKING AT E V E R Y LINE AFTER A WALK, -- }* }* TRY THEN, IF THERE IS A MYSTERIOUS SUDDEN PROGRAM EXIT }* }* WHILE YOU RUN THE PROGRAM, TO REMOVE THE CALL TO ONE FUNCTION, }* }* BY PUTTING COMMENT SYMBOLS AROUND IT. THEN PUT IT BACK IF NO }* }* CHANGE, AND PUT COMMENT SYMBOLS AROUND ANOTHER. }* }* OR, PUT FOUR STARS **** ON LINE BEFORE A LOOP, AND LEFT-CURL }* }* ON THE LINE AFTER, TO CHECK IF IT IS THAT LOOP CAUSING IT. }* }* A TOO MUCH >N5 CAN REMOVE TOO MUCH ON STACK, OR A LACKING }* }* && CAN FILL IT TOO MUCH; A CHANGE OF SEQUENCE OF NUMBERS }* }* CAN MAKE A MATRIX SCREWED UP -- THERE ARE VERY MANY WAYS ONE }* }* CAN MESS IT UP, AND IT IS A KIND OF GAME IN ITSELF TO GET IT }* }* ENTIRELY RIGHT. }* }* HEAD UP, TIGER, AND CORRECT ALL PROGRAM ISSUES, AND HAVE FUN! }* }* IN NEXT BIG ART BOOKLET, WE GO INTO BOTH 3D A N D WARPS! }* }* SEE YA! }*