diff --git a/test.bas b/test.bas index 8655a7e..982735d 100644 --- a/test.bas +++ b/test.bas @@ -1,142 +1,129 @@ - 'SETMUSIC 0 "L5CCCFRF>L6C." 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 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 - IF KEYPRESSED BTN_RIGHT THEN GOSUB MOVE_RIGHT END + 'SETMUSIC 0 "O6L2BAGFEDC" PLAYMUSIC ' PLAYER SHOOT + 'SETMUSIC 0 "O4L2BAGFEDC" PLAYMUSIC ' INVADER SHOOT + 'SETMUSIC 0 "O4L3CCC" 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 - ' 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 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 + 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 < 12) THEN SETSPRITE I 2 INK_LIME END + IF (I >= 12) 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 SPRITES - PUTSPRITE 0 BX BY - PUTSPRITE 1 X 96 - PUTSPRITE 2 X+8 96 + + ' 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 + + ' 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 + + '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 + 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 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 -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 + \ No newline at end of file