Added some example games
This commit is contained in:
159
BREAKOUT.BAS
Normal file
159
BREAKOUT.BAS
Normal file
@@ -0,0 +1,159 @@
|
||||
SETMUSIC 0 "L6FRR>CRR<FRERR>CRR<ERDRRB-RRDRCRRAR<AB->CDRRB-RRDRERR>CRR<ERF"
|
||||
SETMUSIC 1 "L6O3FA>CRR<FRFEA>CRR<EREE-A>CRR<E-RE-C"
|
||||
PLAYMUSIC
|
||||
START:
|
||||
BORDER INK_BLACK
|
||||
COLOR INK_RED + PAPER_BLACK
|
||||
CLS
|
||||
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 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
|
||||
MENU_BLINK2:
|
||||
LOCATE 0 9 PRINT " "
|
||||
UPDATESCR
|
||||
INC W
|
||||
IF KEYPRESSED BTN_A THEN GOTO INIT_GAME END
|
||||
IF W < 50 THEN GOTO MENU_BLINK2 END
|
||||
W = 0
|
||||
GOTO MENU_BLINK
|
||||
INIT_GAME:
|
||||
CLS
|
||||
LIVES = 5
|
||||
LEVEL = 1
|
||||
SCORE = 0
|
||||
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
|
||||
'PINTEM EL MARCADOR
|
||||
COLOR INK_YELLOW + PAPER_BLACK
|
||||
LOCATE 11 0 FOR I = 0 TO LIVES PRINT CHR &HE0 END
|
||||
LOCATE 7 0 PRINT STR LEVEL
|
||||
LOCATE 1 0 PRINT STR SCORE, "00"
|
||||
MAIN_GAME:
|
||||
' 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 GOSUB PING2 BX = 131 DX = -DX END
|
||||
IF BX <= 5 THEN GOSUB PING2 BX = 5 DX = -DX END
|
||||
BY = BY + DY
|
||||
IF BY <= 5 THEN BY = 5 DY = -DY END
|
||||
TX = (BX-5)/8
|
||||
TY = (BY-5)/8
|
||||
CHAR = GETCHAR TX TY
|
||||
IF (BY >= 16) AND NOT(CHAR = 32) THEN
|
||||
GOSUB PING3
|
||||
INC SCORE
|
||||
LOCATE 1 0 PRINT STR SCORE, "00"
|
||||
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_YELLOW + PAPER_BLACK THEN DY = 2 END
|
||||
END
|
||||
IF BY >= 99 THEN
|
||||
GOSUB LIVE_LOST
|
||||
IF LIVES = 4 THEN GOTO GAME_OVER END
|
||||
END
|
||||
IF (BY >= 91) AND (DY < 100) THEN
|
||||
IF (BX+3 >= X) AND (BX+3 < X+16) THEN
|
||||
GOSUB PING1
|
||||
DY = -DY
|
||||
IF (BX+3 >= X) AND (BX+3 < X+4) THEN DX = -2 END
|
||||
IF (BX+3 >= X+4) AND (BX+3 < X+8) THEN DX = -1 END
|
||||
IF (BX+3 >= X+8) AND (BX+3 < X+12) THEN DX = 1 END
|
||||
IF (BX+3 >= X+12) AND (BX+3 < X+16) THEN DX = 2 END
|
||||
END
|
||||
END
|
||||
' PINTEM SPRITES
|
||||
PUTSPRITE 0 BX BY
|
||||
PUTSPRITE 1 X 96
|
||||
PUTSPRITE 2 X+8 96
|
||||
UPDATESCR
|
||||
GOTO MAIN_GAME
|
||||
LOOP: GOTO LOOP
|
||||
MOVE_LEFT: IF X > 8 THEN X = X - 3 END RETURN
|
||||
MOVE_RIGHT: IF X < 120 THEN X = X + 3 END RETURN
|
||||
LIVE_LOST:
|
||||
GOSUB POINT
|
||||
DEC LIVES
|
||||
COLOR INK_YELLOW + PAPER_BLACK
|
||||
LOCATE 11 0 FOR I = 0 TO LIVES PRINT CHR &HE1 END
|
||||
COLOR INK_RED + PAPER_BLACK PRINT CHR &HEE
|
||||
UPDATESCR
|
||||
DELAY = 0
|
||||
WAIT1: INC DELAY UPDATESCR IF DELAY < 20 THEN GOTO WAIT1 END
|
||||
COLOR INK_YELLOW + PAPER_BLACK
|
||||
LOCATE 11 0 FOR I = 0 TO LIVES PRINT CHR &HE1 END PRINT " "
|
||||
UPDATESCR
|
||||
WAIT2: INC DELAY UPDATESCR IF DELAY < 100 THEN GOTO WAIT2 END
|
||||
COLOR INK_YELLOW + PAPER_BLACK
|
||||
LOCATE 11 0 FOR I = 0 TO LIVES PRINT CHR &HE0 END
|
||||
DX = 1 DY = 1 BX = 64 BY = 48 X = 64
|
||||
RETURN
|
||||
GAME_OVER:
|
||||
CLS
|
||||
PUTSPRITE 0 0 0
|
||||
PUTSPRITE 1 0 0
|
||||
PUTSPRITE 2 0 0
|
||||
LOCATE 7 4 PRINT CHR &HE1
|
||||
COLOR INK_WHITE + PAPER_BLACK
|
||||
LOCATE 3 7 PRINT "GAME OVER"
|
||||
UPDATESCR
|
||||
DELAY = 0
|
||||
WAIT3: INC DELAY UPDATESCR IF DELAY < 210 THEN GOTO WAIT3 END
|
||||
GOTO START
|
||||
PING1:
|
||||
SETMUSIC 0 "L1O7C" PLAYMUSIC
|
||||
RETURN
|
||||
PING2:
|
||||
SETMUSIC 0 "L1O6C" PLAYMUSIC
|
||||
RETURN
|
||||
PING3:
|
||||
SETMUSIC 0 "L1O5C" PLAYMUSIC
|
||||
RETURN
|
||||
POINT:
|
||||
SETMUSIC 0 "L2O2BEC" PLAYMUSIC
|
||||
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
|
||||
150
INVADERS.BAS
Normal file
150
INVADERS.BAS
Normal file
@@ -0,0 +1,150 @@
|
||||
'SETMUSIC 0 "O6L2BAGFEDC" PLAYMUSIC ' PLAYER SHOOT
|
||||
'SETMUSIC 0 "O4L2BAGFEDC" PLAYMUSIC ' INVADER SHOOT
|
||||
'SETMUSIC 0 "O4L3C<BAGFEDCDEFGAB>C<BAGFEDCDEFGAB>C" PLAYMUSIC ' BIG UFO
|
||||
'SETMUSIC 3 "O5L2BAGFEDCV4BAGFEDV2CBAGFEDC" PLAYMUSIC ' EXPLOSION
|
||||
SETCHAR 0 !00000101033F7F7F
|
||||
SETCHAR 1 !0000000080F8FCFC
|
||||
SETCHAR 2 !00423C5ABDA51800
|
||||
SETCHAR 3 !0024BD5A3C244200
|
||||
SETCHAR 4 !00817E99FF3C4200
|
||||
SETCHAR 5 !00247E99FF3C1800
|
||||
SETCHAR 6 !00183C5ADB7E2400
|
||||
SETCHAR 7 !00183C5ADB7EDB00
|
||||
SETCHAR 8 !00031F7F45FF3100
|
||||
SETCHAR 9 !00C0F8FE92FF8C00
|
||||
SETCHAR 10 !0925975F3FCF1200
|
||||
SETCHAR 11 !2048D2F4F8E69000
|
||||
SETCHAR 12 !1F3F7FFFFFFFFEFC
|
||||
SETCHAR 13 !F8FCFEFFFFFF7F3F
|
||||
SETCHAR 14 !013373FFFFFFFEFC
|
||||
SETCHAR 15 !B89CD8FFFFFF7F3F
|
||||
SETCHAR 16 !000042C2C7EFFEFC
|
||||
SETCHAR 17 !0080C0D9DFFF7F3F
|
||||
SETCHAR 18 !00000000008ADEFC
|
||||
SETCHAR 19 !00000080C0D27733
|
||||
SETCHAR 20 !FF00000000000000
|
||||
SETCHAR 21 !00000000000000FF
|
||||
SETCHAR 22 !0000001010000000
|
||||
|
||||
BORDER INK_BLACK
|
||||
COLOR INK_WHITE + PAPER_BLACK
|
||||
CLS
|
||||
|
||||
' PINTEM EL MARCADOR
|
||||
LOCATE 1 0 PRINT "0000"
|
||||
COLOR INK_GRAY + PAPER_BLACK
|
||||
LOCATE 0 1 PRINT !14141414141414141414141414141414
|
||||
LOCATE 0 11 PRINT !15151515151515151515151515151515
|
||||
COLOR INK_YELLOW + PAPER_BLACK
|
||||
LOCATE 13 0 PRINT !E0E0E0
|
||||
|
||||
LET ITER = 0
|
||||
LET HEIGHT = 0
|
||||
LET ALIEN = 0
|
||||
LET AX = 8
|
||||
LET AY = 18
|
||||
DIM A(3)
|
||||
A(0) = &HFF
|
||||
A(1) = &HFF
|
||||
A(2) = &HFF
|
||||
LET POS = 0
|
||||
LET MASK = 1
|
||||
|
||||
'PINTEM ELS MARSIANITOS
|
||||
FOR I = 0 TO 24
|
||||
IF I < 6 THEN SETSPRITE I 4 INK_MAGENTA END
|
||||
IF (I >= 6) AND (I < 18) THEN SETSPRITE I 2 INK_LIME END
|
||||
IF I >= 18 THEN SETSPRITE I 6 INK_CYAN END
|
||||
PUTSPRITE I AX AY
|
||||
AX = AX + 16
|
||||
IF AX = 104 THEN
|
||||
AX = 8
|
||||
AY = AY + 10
|
||||
END
|
||||
END
|
||||
|
||||
' PINTEM AL JUGADOR
|
||||
LET X = 32
|
||||
SETSPRITE 24 0 INK_CYAN
|
||||
SETSPRITE 25 1 INK_CYAN
|
||||
PUTSPRITE 24 X 95
|
||||
PUTSPRITE 25 X+8 95
|
||||
|
||||
' LA BALA
|
||||
LET BALA_Y = 0
|
||||
LET BALA_X = 0
|
||||
SETSPRITE 26 22 INK_WHITE
|
||||
|
||||
' PINTEM LES BARRERES
|
||||
COLOR INK_RED + PAPER_BLACK
|
||||
LOCATE 1 10 PRINT !0C0D20200C0D20200C0D20200C0D20
|
||||
UPDATESCR
|
||||
|
||||
MAIN_GAME:
|
||||
' MOVEM AL JUGADOR
|
||||
IF KEYPRESSED BTN_RIGHT THEN
|
||||
INC X
|
||||
IF X > 122 THEN X = 122 END
|
||||
GOSUB DRAW_PLAYER
|
||||
END
|
||||
IF KEYPRESSED BTN_LEFT THEN
|
||||
DEC X
|
||||
IF X < 7 THEN X = 7 END
|
||||
GOSUB DRAW_PLAYER
|
||||
END
|
||||
IF (BALA_X = 0) AND (KEYPRESSED BTN_A) THEN
|
||||
BALA_X = X+4
|
||||
BALA_Y = 95
|
||||
GOSUB PLAYER_SHOOT
|
||||
END
|
||||
|
||||
'MOVEM LA BALA
|
||||
IF BALA_X > 0 THEN
|
||||
BALA_Y = BALA_Y - 4
|
||||
IF BALA_Y < 16 THEN BALA_X = 0 END
|
||||
PUTSPRITE 26 BALA_X BALA_Y
|
||||
END
|
||||
|
||||
'MOVEM ALS MARSIANITOS
|
||||
LET AX = 8 + ITER
|
||||
LET AY = 18 + HEIGHT * 4
|
||||
LET POS = 0
|
||||
LET MASK = 1
|
||||
FOR I = 0 TO 24
|
||||
IF I = ALIEN THEN
|
||||
INC ALIEN
|
||||
IF ALIEN = 24 THEN
|
||||
ALIEN = 0
|
||||
IF (HEIGHT MOD 2) = 0 THEN INC ITER ELSE DEC ITER END
|
||||
IF (ITER = 40) OR (ITER = 0) THEN INC HEIGHT END
|
||||
END
|
||||
IF (A(POS) AND MASK) = MASK THEN
|
||||
IF I < 6 THEN SETSPRITE I (4+(ITER MOD 2)) INK_MAGENTA END
|
||||
IF (I >= 6) AND (I < 18) THEN SETSPRITE I (2+(ITER MOD 2)) INK_LIME END
|
||||
IF I >= 18 THEN SETSPRITE I (6+(ITER MOD 2)) INK_CYAN END
|
||||
PUTSPRITE I AX AY
|
||||
GOTO ALIEN_FOUND
|
||||
END
|
||||
END
|
||||
MASK = MASK * 2
|
||||
IF MASK = 0 THEN
|
||||
MASK = 1
|
||||
INC POS
|
||||
IF POS = 3 THEN POS = 0 END
|
||||
END
|
||||
AX = AX + 16
|
||||
IF AX = 104 + ITER THEN
|
||||
AX = 8 + ITER
|
||||
AY = AY + 10
|
||||
END
|
||||
END
|
||||
ALIEN_FOUND:
|
||||
UPDATESCR
|
||||
GOTO MAIN_GAME
|
||||
DRAW_PLAYER:
|
||||
PUTSPRITE 24 X 95
|
||||
PUTSPRITE 25 X+8 95
|
||||
RETURN
|
||||
PLAYER_SHOOT: SETMUSIC 0 "O6L2BAGFEDC" PLAYMUSIC RETURN
|
||||
|
||||
|
||||
207
PONG.BAS
Normal file
207
PONG.BAS
Normal file
@@ -0,0 +1,207 @@
|
||||
SETMUSIC 0 "L5CCCFRF>L6C." PLAYMUSIC
|
||||
START:
|
||||
BORDER INK_BLACK
|
||||
COLOR INK_WHITE + PAPER_BLACK
|
||||
CLS
|
||||
LOCATE 4 2 PRINT !8785878587858781
|
||||
LOCATE 4 3 PRINT !8585858585858584
|
||||
LOCATE 4 4 PRINT !87818D8585858D85
|
||||
W = 0
|
||||
MENU_BLINK:
|
||||
LOCATE 3 8 PRINT "PRESS CTRL"
|
||||
LOCATE 4 9 PRINT "TO PLAY"
|
||||
UPDATESCR
|
||||
INC W
|
||||
IF KEYPRESSED BTN_A THEN GOTO INIT_GAME END
|
||||
IF W < 25 THEN GOTO MENU_BLINK END
|
||||
MENU_BLINK2:
|
||||
LOCATE 3 8 PRINT " "
|
||||
LOCATE 4 9 PRINT " "
|
||||
UPDATESCR
|
||||
INC W
|
||||
IF KEYPRESSED BTN_A THEN GOTO INIT_GAME END
|
||||
IF W < 50 THEN GOTO MENU_BLINK2 END
|
||||
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
|
||||
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
|
||||
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
|
||||
Reference in New Issue
Block a user