1 REM Newsgroups: comp.sys.apple2 2 REM From: mad.scientist.jr@gmail.com 3 REM Message-ID: <1193160910.224728.270640@z24g2000prh.googlegroups.com> 4 REM Subject: Re: woz' original "brick out" - source code , paddles 5 REM Date: Tue, 23 Oct 2007 17:35:10 -0000 10 REM APPLE II SIMPLE PONG V4 20 REM PASTE INTO Joshua Bell's EMULATOR AT inexorabletash.github.io/jsbasic/ 25 REM ++++++++++++++++++++++++++++++++++++++++ 30 REM TITLE SCREEN + PROMPT FOR CONTROLS 35 REM ++++++++++++++++++++++++++++++++++++++++ 40 TEXT : PR#0 : HOME : REM ENTER TEXT MODE, CLEAR SCREEN 45 DEF FN pd(k) = (26 * pdl(k)) / 255 + 2 : REM DEFINE PADDLE-READING FUNCTION 46 REM DEF FN pr(k) = SGN(INT((pdl(k) - 55) / 146)) : REM (non-absolute) paddle function 49 PRINT "APPLE II SIMPLE PONG V4.1" 50 PRINT 51 PRINT "version 1 by aiiadict" 52 PRINT "tweaks by Mad Scientist Jr" 53 PRINT "and Alan Ratliff (2020)" 54 PRINT 55 PRINT "During game press Q to quit." 56 PRINT : HTAB 18 : PRINT "^ # ^" SPC(5) "^ # ^" 58 PRINT "TYPE K FOR KEYS" SPC(2) "A/S/D" SPC(5) "J/K/L" : HTAB 19 : PRINT "Z/X" SPC(7) "M/," 59 PRINT " (# = STOP)" TAB(19) "v v" SPC(7) "v v" : PRINT : PRINT "OR P FOR PADDLES OR Q TO QUIT? "; 60 GET C$ : IF C$ <> "K" AND C$ <> "P" AND C$ <> "Q" GOTO 60 62 IF C$ = "Q" THEN VTAB 22 : GOTO 9000 65 REM 70 REM ++++++++++++++++++++++++++++++++++++++++ 75 REM DRAW FIELD AND INITIALIZE GAME 80 REM ++++++++++++++++++++++++++++++++++++++++ 85 HOME : GR: REM ENTER GRAPHIC MODE 90 COLOR= 7: VLIN 0,39 AT 0: VLIN 0,39 AT 39 95 HLIN 0,39 AT 0: HLIN 0,39 AT 39 100 bx = 10:by = 10:ox = 10:oy = 10: REM BALL START POSITION 102 dx = 1: dy = - 1: REM BALL DIRECTION 104 p1 = 10: o1 = 10: REM PLAYER 1 START POSITION 106 p2 = 10: o2 = 10: REM PLAYER 2 START POSITION 120 v1 = 0 : v2 = 0 : s1 = 0 : s2 = 0 : u1 = 0 : u2 = 0 : 125 PL = 8: REM PADDLE LENGTH 130 REM 145 REM ++++++++++++++++++++++++++++++++++++++++ 150 REM BEGIN MAIN GAME LOOP 155 REM ++++++++++++++++++++++++++++++++++++++++ 196 REM ++++++++++++++++++++++++++++++++++++++++ 197 REM DRAW PADDLE1 198 REM ++++++++++++++++++++++++++++++++++++++++ 200 IF o1 <> p1 THEN COLOR= 0: VLIN o1,o1 + PL AT 3 210 COLOR= 7: VLIN p1,p1 + PL AT 3 296 REM ++++++++++++++++++++++++++++++++++++++++ 297 REM DRAW PADDLE2 298 REM ++++++++++++++++++++++++++++++++++++++++ 300 IF o2 <> p2 THEN COLOR= 0: VLIN o2,o2 + PL AT 36 310 COLOR= 7: VLIN p2,p2 + PL AT 36 399 REM ++++++++++++++++++++++++++++++++++++++++ 400 REM DRAW AND MOVE BALL 401 REM ++++++++++++++++++++++++++++++++++++++++ 402 IF ox <> bx OR oy <> by THEN COLOR= 0: VLIN oy,oy + 1 AT ox 410 COLOR= 11: VLIN by,by + 1 AT bx 420 ox = bx : oy = by : bb = 1 470 bx = bx + dx 490 IF SCRN( bx,by) OR SCRN( bx, by + 1) THEN dx = -dx : k = (bx=3)*p1+(bx=36)*p2 : IF bx*2=39-dx*33 AND ((k>0)*by-PL/2-k+1)*dy > 0 THEN bb = 0 500 IF bx = 7 THEN u1 = 1 510 IF bx = 33 THEN u2 = 1 520 IF bx = 1 AND u1 THEN s2 = s2 + 1 : u1 = 0 : VTAB 22 : HTAB 41 - LEN(STR$(s2)) : PRINT s2; 530 IF bx = 38 AND u2 THEN s1 = s1 + 1 : u2 = 0 : VTAB 22 : HTAB 1 : PRINT s1 540 by = by + dy 840 IF (SCRN( bx,by) OR SCRN( bx, by + 1)) AND bb THEN dy = -dy 850 IF bx < 1 THEN bx = 1 860 IF bx > 38 THEN bx = 38 870 IF by < 1 THEN by = 1 880 IF by > 37 THEN by = 37 890 o1 = p1 : o2 = p2 900 REM ++++++++++++++++++++++++++++++++++++++++ 901 REM GET PLAYER INPUT 902 REM ++++++++++++++++++++++++++++++++++++++++ 903 IF PEEK ( - 16384) > 127 THEN GET K$: IF K$ = "Q" GOTO 9000 : REM SEE IF KEY PRESSED/Q FOR QUIT 904 IF C$ <> "K" THEN GOTO 921 905 REM 906 REM ---------------------------------------- 907 REM KEYBOARD INPUT 909 REM ---------------------------------------- 912 IF K$ = "A" OR K$ = "D" THEN v1 = -1 913 IF K$ = "S" THEN v1 = 0 914 IF K$ = "Z" OR K$ = "X" THEN v1 = 1 916 IF K$ = "J" OR K$ = "L" THEN v2 = -1 917 IF K$ = "K" THEN v2 = 0 918 IF K$ = "M" OR K$ = "," THEN v2 = 1 920 K$ = "" : p1 = p1 + v1 : p2 = p2 + v2 : GOTO 955 921 IF C$ <> "P" THEN GOTO 947 922 REM 923 REM ---------------------------------------- 925 REM PADDLE INPUT 927 REM ---------------------------------------- 930 REM simple (non-absolute) paddle input: 932 REM p1 = FN pr(0) + p1 934 REM p2 = FN pr(1) + p2 940 REM realtime (absolute position) paddle input: 944 p1 = FN pd(0) 945 p2 = FN pd(1) 947 REM 955 REM ++++++++++++++++++++++++++++++++++++++++ 956 REM MAKE SURE PADDLES DON'T GO OFF SCREEN 958 REM ++++++++++++++++++++++++++++++++++++++++ 960 IF p1 < 2 THEN p1 = 2 970 IF p1 > 28 THEN p1 = 28 980 IF p2 < 2 THEN p2 = 2 990 IF p2 > 28 THEN p2 = 28 999 GOTO 150 9000 REM 9010 REM ++++++++++++++++++++++++++++++++++++++++ 9020 REM QUIT GAME 9030 REM ++++++++++++++++++++++++++++++++++++++++ 9040 TEXT : REM HOME 9045 PRINT 9050 PRINT "FINISHED APPLE II SIMPLE PONG V4.1"