From bf4358cc4b3723b7e7ec69effe13016bfabcc1c7 Mon Sep 17 00:00:00 2001 From: Raimon Zamora Date: Thu, 9 Feb 2017 19:54:25 +0100 Subject: [PATCH] Working on Breakout --- test.bas | 72 ++++++++++++++++++++++++++++++++++++++++++++++---------- 1 file changed, 59 insertions(+), 13 deletions(-) diff --git a/test.bas b/test.bas index ab40f1a..8655a7e 100644 --- a/test.bas +++ b/test.bas @@ -1,6 +1,6 @@ - SETMUSIC 0 "L5CCCFRF>L6C." PLAYMUSIC + 'SETMUSIC 0 "L5CCCFRF>L6C." PLAYMUSIC START: - BORDER INK_GRAY + BORDER INK_BLACK COLOR INK_RED + PAPER_BLACK CLS LOCATE 0 1 PRINT !8A87858A87858A8783888F8D8A858E81 @@ -28,6 +28,9 @@ MENU_BLINK2: 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 @@ -43,6 +46,11 @@ INIT_GAME: 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 8 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 @@ -50,15 +58,17 @@ MAIN_GAME: ' 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 + 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 >= 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 + 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 @@ -66,11 +76,19 @@ MAIN_GAME: 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 + IF (GETCOLOR TX TY) = INK_YELLOW + PAPER_BLACK THEN DY = 2 END + END + IF BY >= 99 THEN GOSUB LIVE_LOST 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 @@ -78,9 +96,37 @@ MAIN_GAME: UPDATESCR 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 - +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 +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