[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: woz' original "brick out" - source code , paddles



> >  After a quick fix to my code, this works in my Applesoft emulator:
> >http://www.calormen.com/Applesoft/
> Cool!
> I'll post more code to play with your emulator in the next
> few days

Thanks to you both - between the sample code and emulator I learned
how to make a game for the Apple! Here is your code with a menu and
more sensitive paddle movement (and I made the ball round :-)
There is no sound or scoring yet (how do you print text in graphics
mode?) and for keyboard mode I haven't figured out how to detect if
two keys are being pressed at once.
Thanks again...

10   REM  APPLE II SIMPLE PONG V4
20   REM  PASTE INTO Joshua Bell s EMULATOR AT www.calormen.com/Applesoft/
25   REM  ++++++++++++++++++++++++++++++++++++++++
30   REM  TITLE SCREEN + PROMPT FOR CONTROLS
35   REM  ++++++++++++++++++++++++++++++++++++++++
40   TEXT : REM ENTER TEXT MODE
45   HOME : REM CLEAR TEXT SCREEN
49   PRINT "APPLE II SIMPLE PONG V4"
50   PRINT
51   PRINT "version 1 by aiiadict"
52   PRINT "tweaks by Mad Scientist Jr"
54   PRINT
55   PRINT "During game press Q to quit."
56   PRINT
58   INPUT "TYPE K FOR KEYS (A/Z, K/M) OR P FOR PADDLES OR Q TO QUIT?
";C$
60   IF C$ <> "K" AND C$ <> "P" AND C$ <> "Q" THEN GOTO 58
62   IF C$ = "Q" THEN GOTO 9000
65   REM
70   REM  ++++++++++++++++++++++++++++++++++++++++
75   REM  DRAW FIELD AND INITIALIZE GAME
80   REM  ++++++++++++++++++++++++++++++++++++++++
85   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  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: PLOT ox,oy: PLOT ox,oy + 1
410  COLOR= 5: PLOT bx,by: PLOT bx,by + 1
416  ox = bx:oy = by
830  bx = bx + dx
835  IF  SCRN( bx,by) > 0 THEN dx =  - dx
840  by = by + dy
845  IF  SCRN( bx,by) > 0 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 > 38 THEN by = 38
881  REM
882  REM  ----------------------------------------
883  REM  SAVE OLD SCREEN POSITION
884  REM  ----------------------------------------
885  o1 = p1
886  o2 = p2
889  REM
900  REM  ++++++++++++++++++++++++++++++++++++++++
901  REM  GET PLAYER INPUT
902  REM  ++++++++++++++++++++++++++++++++++++++++
903  IF PEEK ( - 16384) > 127 THEN GET K$: REM SEE IF KEY(S) PRESSED.
NEEDS FIX FOR MULTI KEY SIMULTANEOUS INPUT
904  IF C$ <> "K" THEN GOTO 921
905  REM
906  REM  ----------------------------------------
907  REM  KEYBOARD INPUT
908  REM  NOTE: NEEDS FIX TO DETECT MULTI KEYPRESSES
909  REM  ----------------------------------------
912  IF K$ = "A" THEN p1 = p1 - 1
914  IF K$ = "Z" THEN p1 = p1 + 1
916  IF K$ = "K" THEN p2 = p2 - 1
918  IF K$ = "M" THEN p2 = p2 + 1
920  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:
931 REM if pdl(0) > 200 then p1 = p1 + 1
932 REM if pdl(0) < 55 then p1 = p1 - 1
933 REM if pdl(1) > 200 then p2 = p2 + 1
934 REM if pdl(1) < 55 then p2 = p2 - 1
943 REM realtime (absolute position) paddle input:
944 GOSUB 3000: REM PLAYER 1
945 GOSUB 4000: REM PLAYER 2
947  REM
948  REM  ----------------------------------------
949  REM  SEE IF PLAYER PRESSED Q TO QUIT
950  REM  ----------------------------------------
951  IF K$ = "Q" THEN GOTO 9000
954  REM
955  REM  ++++++++++++++++++++++++++++++++++++++++
956  REM  MAKE SURE PADDLES DONT 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
1000 REM
1010 REM  ++++++++++++++++++++++++++++++++++++++++
1020 REM  CONTINUE GAME LOOP
1030 REM  ++++++++++++++++++++++++++++++++++++++++
1040  GOTO 150
3000 REM
3010 REM  ++++++++++++++++++++++++++++++++++++++++
3020 REM  GET SCREEN POSITION FROM PADDLE 1 INPUT
3030 REM  ++++++++++++++++++++++++++++++++++++++++
3040 p1 = 26 * pdl(0)
3050 p1 = p1 / 255
3060 p1 = p1 + 2
3070 RETURN
4000 REM
4010 REM  ++++++++++++++++++++++++++++++++++++++++
4020 REM  GET SCREEN POSITION FROM PADDLE 2 INPUT
4030 REM  ++++++++++++++++++++++++++++++++++++++++
4040 p2 = 26 * pdl(1)
4050 p2 = p2 / 255
4060 p2 = p2 + 2
4070 RETURN
9000 REM
9010 REM  ++++++++++++++++++++++++++++++++++++++++
9020 REM  QUIT GAME
9030 REM  ++++++++++++++++++++++++++++++++++++++++
9040  TEXT : REM HOME
9045  PRINT
9050  PRINT "FINISHED APPLE II SIMPLE PONG V4."
9060  END