New name. Minor corrections. Includes PONG.

This commit is contained in:
2017-02-03 18:59:47 +01:00
parent fa4abcbf2c
commit 88c0288931
13 changed files with 222 additions and 35 deletions

188
test.bas
View File

@@ -1,3 +1,5 @@
SETMUSIC 0 "l5cccfrf>l6c." PLAYMUSIC
START:
BORDER INK_BLACK
COLOR INK_WHITE + PAPER_BLACK
CLS
@@ -5,14 +7,12 @@
LOCATE 4 3 PRINT CHR &h85, CHR &h85, CHR &h85, CHR &h85, CHR &h85, CHR &h85, CHR &h85, CHR &h84
LOCATE 4 4 PRINT CHR &h87, CHR &h81, CHR &h8D, CHR &h85, CHR &h85, CHR &h85, CHR &h8D, CHR &h85
W = 0
SETMUSIC 0 "cdef"
PLAYMUSIC
MENU_BLINK:
LOCATE 3 8 PRINT "PRESS CTRL"
LOCATE 4 9 PRINT "TO PLAY"
UPDATESCR
INC W
IF KEYPRESSED BTN_A THEN GOTO MAIN_GAME END
IF KEYPRESSED BTN_A THEN GOTO INIT_GAME END
IF W < 25 THEN
GOTO MENU_BLINK
END
@@ -21,18 +21,73 @@ MENU_BLINK2:
LOCATE 4 9 PRINT " "
UPDATESCR
INC W
IF KEYPRESSED BTN_A THEN GOTO MAIN_GAME END
IF KEYPRESSED BTN_A THEN GOTO INIT_GAME END
IF W < 50 THEN GOTO MENU_BLINK2 END
W = 0
GOTO MENU_BLINK
MAIN_GAME:
INIT_GAME:
P1_Y = 48
P1_SCORE = 0
P2_Y = 48
P2_SCORE = 0
BALL_X = 67
BALL_Y = 48
BALL_DX = 1
BALL_DY = 1
SETSPRITE 0 &HE7 INK_WHITE
SETSPRITE 1 &h95 INK_WHITE
SETSPRITE 2 &h95 INK_WHITE
SETSPRITE 3 &h95 INK_WHITE
SETSPRITE 4 &h95 INK_WHITE
CLS
GOSUB PINTA_RED
LOCATE 6 1 PRINT "0"
LOCATE 9 1 PRINT "0"
GOSUB DRAW_NET
GOSUB DRAW_SCORE
GOSUB DRAW_P1
GOSUB DRAW_P2
MAIN_GAME:
IF (P1_SCORE = 10) OR (P2_SCORE = 10) THEN GOTO END_GAME END
GOSUB DRAW_BALL
TIME = 32
PRE_GAME:
GOSUB PROCESS_PLAYER1
DEC TIME
UPDATESCR
GOTO MAIN_GAME
PINTA_RED:
IF TIME > 0 THEN GOTO PRE_GAME END
GAME:
GOSUB PROCESS_PLAYER1
GOSUB PROCESS_PLAYER2
GOSUB MOVE_BALL
IF (BALL_X > 8) AND (BALL_X < 14) THEN GOSUB BOUNCE_P1 END
IF (BALL_X < 128) AND (BALL_X > 122) THEN GOSUB BOUNCE_P2 END
IF (BALL_X > 135) THEN
INC P1_SCORE
BALL_X = 67
BALL_Y = 48
BALL_DX = -1
GOSUB FLASH_BORDER
GOSUB DRAW_SCORE
GOSUB POINT
GOTO MAIN_GAME
END
IF (BALL_X < 2) THEN
INC P2_SCORE
BALL_X = 67
BALL_Y = 48
BALL_DX = 1
GOSUB FLASH_BORDER
GOSUB DRAW_SCORE
GOSUB POINT
GOTO MAIN_GAME
END
IF (BALL_Y > 96) OR (BALL_Y < 8) THEN BALL_DY = -BALL_DY END
UPDATESCR
GOTO GAME
FLASH_BORDER:
BORDER INK_WHITE
UPDATESCR
BORDER INK_BLACK
RETURN
DRAW_NET:
PUTCHAR 7 0 &HD1 INK_WHITE + PAPER_BLACK
PUTCHAR 7 2 &HD1 INK_WHITE + PAPER_BLACK
PUTCHAR 7 4 &HD1 INK_WHITE + PAPER_BLACK
@@ -40,4 +95,115 @@ PINTA_RED:
PUTCHAR 7 8 &HD1 INK_WHITE + PAPER_BLACK
PUTCHAR 7 10 &HD1 INK_WHITE + PAPER_BLACK
RETURN
DRAW_SCORE:
LOCATE 6 1 PRINT STR P1_SCORE
LOCATE 9 1 PRINT STR P2_SCORE
RETURN
DRAW_P1:
PUTSPRITE 1 8 P1_Y
PUTSPRITE 2 8 P1_Y+8
RETURN
DRAW_P2:
PUTSPRITE 3 128 P2_Y
PUTSPRITE 4 128 P2_Y+8
RETURN
DRAW_BALL:
PUTSPRITE 0 BALL_X BALL_Y
RETURN
PROCESS_PLAYER1:
IF KEYPRESSED BTN_UP THEN
DEC P1_Y DEC P1_Y
IF P1_Y < 8 THEN P1_Y = 8 END
GOSUB DRAW_P1
ELSE
IF KEYPRESSED BTN_DOWN THEN
INC P1_Y INC P1_Y
IF P1_Y > 88 THEN P1_Y = 88 END
GOSUB DRAW_P1
END
END
RETURN
PROCESS_PLAYER2:
IF BALL_Y < P2_Y+8 THEN DEC P2_Y END
IF BALL_Y > P2_Y+8 THEN INC P2_Y END
GOSUB DRAW_P2
RETURN
MOVE_BALL:
BALL_X = BALL_X + BALL_DX
BALL_Y = BALL_Y + BALL_DY
GOSUB DRAW_BALL
RETURN
BOUNCE_P1:
IF (P1_Y <= BALL_Y+7) AND (P1_Y > BALL_Y+1) THEN
BALL_DY = -2
BALL_DX = 1
GOTO PING
END
IF (P1_Y <= BALL_Y+1) AND (P1_Y+5 > BALL_Y) THEN
BALL_DY = -1
IF BALL_DX = -1 THEN BALL_DX = 1 ELSE BALL_DX = 2 END
GOTO PING
END
IF (P1_Y+5 <= BALL_Y) AND (P1_Y+11 > BALL_Y) THEN
BALL_DY = 0
BALL_DX = 2
GOTO PING
END
IF (P1_Y+11 <= BALL_Y) AND (P1_Y+17 > BALL_Y) THEN
BALL_DY = 1
IF BALL_DX = -1 THEN BALL_DX = 1 ELSE BALL_DX = 2 END
GOTO PING
END
IF (P1_Y+17 <= BALL_Y) AND (P1_Y+23 > BALL_Y) THEN
BALL_DY = 2
BALL_DX = 1
GOTO PING
END
RETURN
BOUNCE_P2:
IF (P2_Y <= BALL_Y+7) AND (P2_Y > BALL_Y+1) THEN
BALL_DY = -2
BALL_DX = -1
GOTO PING
END
IF (P2_Y <= BALL_Y+1) AND (P2_Y+5 > BALL_Y) THEN
BALL_DY = -1
IF BALL_DX = 1 THEN BALL_DX = -1 ELSE BALL_DX = -2 END
GOTO PING
END
IF (P2_Y+5 <= BALL_Y) AND (P2_Y+11 > BALL_Y) THEN
BALL_DY = 0
BALL_DX = -2
GOTO PING
END
IF (P2_Y+11 <= BALL_Y) AND (P2_Y+17 > BALL_Y) THEN
BALL_DY = 1
IF BALL_DX = 1 THEN BALL_DX = -1 ELSE BALL_DX = -2 END
GOTO PING
END
IF (P2_Y+17 <= BALL_Y) AND (P2_Y+23 > BALL_Y) THEN
BALL_DY = 2
BALL_DX = -1
GOTO PING
END
RETURN
PING:
SETMUSIC 0 "l1o7c" PLAYMUSIC
RETURN
POINT:
SETMUSIC 0 "l2o2bec" PLAYMUSIC
RETURN
END_GAME:
LOCATE 3 5 PRINT "GAME OVER"
LOCATE 1 7
IF P1_SCORE = 10 THEN PRINT "PLAYER 1 WINS!" END
IF P2_SCORE = 10 THEN PRINT "PLAYER 2 WINS!" END
UPDATESCR
SETMUSIC 0 "l5o5ccr<a#argrfrrr<f" PLAYMUSIC
WAIT 4
PUTSPRITE 0 0 0
PUTSPRITE 1 0 0
PUTSPRITE 2 0 0
PUTSPRITE 3 0 0
PUTSPRITE 4 0 0
GOTO START