implemented hexstrings, implemented MOVE, PUTCOLOR, GETCHAR, GETCOLOR, modified PUTCHAR, several fixes.
This commit is contained in:
265
test.bas
265
test.bas
@@ -1,24 +1,25 @@
|
||||
SETMUSIC 0 "l5cccfrf>l6c." PLAYMUSIC
|
||||
SETMUSIC 0 "L5CCCFRF>L6C." PLAYMUSIC
|
||||
START:
|
||||
BORDER INK_BLACK
|
||||
COLOR INK_WHITE + PAPER_BLACK
|
||||
BORDER INK_GRAY
|
||||
COLOR INK_RED + PAPER_BLACK
|
||||
CLS
|
||||
LOCATE 4 2 PRINT CHR &h87, CHR &h85, CHR &h87, CHR &h85, CHR &h87, CHR &h85, CHR &h87, CHR &h81
|
||||
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
|
||||
LOCATE 0 1 PRINT !8A87858A87858A8783888F8D8A858E81
|
||||
LOCATE 0 2 PRINT !8A878B8A878B8A87818A8D8F8A8F8D80
|
||||
LOCATE 0 3 PRINT !8A8D8E8A858A8A8F8F8A858F8A858B85
|
||||
COLOR INK_YELLOW + PAPER_BLACK
|
||||
LOCATE 3 4 PRINT !8E8F8D8A858A858F8F8F
|
||||
LOCATE 3 5 PRINT !8F808F8A858A85808F80
|
||||
LOCATE 3 6 PRINT !8B8F87828F8F81808F80
|
||||
COLOR INK_WHITE + PAPER_BLACK
|
||||
W = 0
|
||||
MENU_BLINK:
|
||||
LOCATE 3 8 PRINT "PRESS CTRL"
|
||||
LOCATE 4 9 PRINT "TO PLAY"
|
||||
LOCATE 0 9 PRINT "PRESS A TO START"
|
||||
UPDATESCR
|
||||
INC W
|
||||
IF KEYPRESSED BTN_A THEN GOTO INIT_GAME END
|
||||
IF W < 25 THEN
|
||||
GOTO MENU_BLINK
|
||||
END
|
||||
IF W < 25 THEN GOTO MENU_BLINK END
|
||||
MENU_BLINK2:
|
||||
LOCATE 3 8 PRINT " "
|
||||
LOCATE 4 9 PRINT " "
|
||||
LOCATE 0 9 PRINT " "
|
||||
UPDATESCR
|
||||
INC W
|
||||
IF KEYPRESSED BTN_A THEN GOTO INIT_GAME END
|
||||
@@ -26,184 +27,70 @@ MENU_BLINK2:
|
||||
W = 0
|
||||
GOTO MENU_BLINK
|
||||
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 DRAW_NET
|
||||
GOSUB DRAW_SCORE
|
||||
GOSUB DRAW_P1
|
||||
GOSUB DRAW_P2
|
||||
X = 64 ' X DE LA PALA
|
||||
BX = 64 BY = 48 ' X I Y DE LA BOLA
|
||||
DX = 1 DY = 1 ' VELOCITAT EN X I Y DE LA BOLA
|
||||
' DEFINIM ELS CARACTERS PER ALS BLOCS I LA BOLA
|
||||
SETCHAR 16 !007F7F7F7F7F7F7F
|
||||
SETCHAR 17 !00FFFFFFFFFFFFFF
|
||||
' PINTEM ELS BLOCS
|
||||
COLOR INK_RED + PAPER_BLACK LOCATE 0 1 PRINT !10111011101110111011101110111011
|
||||
COLOR INK_YELLOW + PAPER_BLACK LOCATE 0 2 PRINT !10111011101110111011101110111011
|
||||
COLOR INK_GREEN + PAPER_BLACK LOCATE 0 3 PRINT !10111011101110111011101110111011
|
||||
COLOR INK_BLUE + PAPER_BLACK LOCATE 0 4 PRINT !10111011101110111011101110111011
|
||||
' DEFINIM ELS SPRITES
|
||||
SETSPRITE 0 &h90 INK_WHITE
|
||||
SETSPRITE 1 &H83 INK_CYAN
|
||||
SETSPRITE 2 &H83 INK_CYAN
|
||||
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
|
||||
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
|
||||
PUTCHAR 7 6 &HD1 INK_WHITE + PAPER_BLACK
|
||||
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
|
||||
' MOVIMENT DE LA PALA
|
||||
IF KEYPRESSED BTN_LEFT THEN GOSUB MOVE_LEFT END
|
||||
IF KEYPRESSED BTN_RIGHT THEN GOSUB MOVE_RIGHT END
|
||||
|
||||
' MOVIMENT DE LA BOLA
|
||||
BX = BX + DX
|
||||
IF BX >= 131 THEN BX = 131 DX = -DX END
|
||||
IF BX <= 5 THEN BX = 5 DX = -DX END
|
||||
BY = BY + DY
|
||||
IF BY >= 99 THEN BY = 99 DY = -DY END
|
||||
IF BY <= 5 THEN BY = 5 DY = -DY END
|
||||
TX = (BX-5)/8
|
||||
TY = (BY-5)/8
|
||||
CHAR = GETCHAR TX TY
|
||||
IF NOT(CHAR = 32) THEN
|
||||
PUTCHAR TX TY 32
|
||||
IF TX MOD 2 = 0 THEN
|
||||
PUTCHAR TX+1 TY 32
|
||||
ELSE
|
||||
PUTCHAR TX-1 TY 32
|
||||
END
|
||||
DY = -DY
|
||||
IF (GETCOLOR TX TY) = INK_GREEN + PAPER_BLACK THEN DY = 2 DX = 2 END
|
||||
'IF GETCOLOR TX TY = INK_YELLOW + PAPER_BLACK THEN DY = 3 DX = 3 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
|
||||
|
||||
|
||||
' PINTEM SPRITES
|
||||
PUTSPRITE 0 BX BY
|
||||
PUTSPRITE 1 X 96
|
||||
PUTSPRITE 2 X+8 96
|
||||
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
|
||||
GOTO MAIN_GAME
|
||||
LOOP: GOTO LOOP
|
||||
MOVE_LEFT: IF X > 8 THEN X = X - 4 END RETURN
|
||||
MOVE_RIGHT: IF X < 120 THEN X = X + 4 END RETURN
|
||||
|
||||
|
||||
|
||||
JUMP_LINE: MOVE -2 1 RETURN
|
||||
DRAW_0: PRINT !8785 GOSUB JUMP_LINE PRINT !8585 GOSUB JUMP_LINE PRINT !8381 RETURN
|
||||
DRAW_1: PRINT !8085 GOSUB JUMP_LINE PRINT !8085 GOSUB JUMP_LINE PRINT !8081 RETURN
|
||||
DRAW_2: PRINT !8385 GOSUB JUMP_LINE PRINT !8781 GOSUB JUMP_LINE PRINT !8381 RETURN
|
||||
DRAW_3: PRINT !8385 GOSUB JUMP_LINE PRINT !8385 GOSUB JUMP_LINE PRINT !8381 RETURN
|
||||
DRAW_4: PRINT !8585 GOSUB JUMP_LINE PRINT !8385 GOSUB JUMP_LINE PRINT !8081 RETURN
|
||||
DRAW_5: PRINT !8781 GOSUB JUMP_LINE PRINT !8385 GOSUB JUMP_LINE PRINT !8381 RETURN
|
||||
DRAW_6: PRINT !8781 GOSUB JUMP_LINE PRINT !8785 GOSUB JUMP_LINE PRINT !8381 RETURN
|
||||
DRAW_7: PRINT !8385 GOSUB JUMP_LINE PRINT !8085 GOSUB JUMP_LINE PRINT !8081 RETURN
|
||||
DRAW_8: PRINT !8785 GOSUB JUMP_LINE PRINT !8785 GOSUB JUMP_LINE PRINT !8381 RETURN
|
||||
DRAW_9: PRINT !8785 GOSUB JUMP_LINE PRINT !8385 GOSUB JUMP_LINE PRINT !8081 RETURN
|
||||
|
||||
Reference in New Issue
Block a user