Working on Space Invaders
This commit is contained in:
259
test.bas
259
test.bas
@@ -1,142 +1,129 @@
|
|||||||
'SETMUSIC 0 "L5CCCFRF>L6C." PLAYMUSIC
|
'SETMUSIC 0 "O6L2BAGFEDC" PLAYMUSIC ' PLAYER SHOOT
|
||||||
START:
|
'SETMUSIC 0 "O4L2BAGFEDC" PLAYMUSIC ' INVADER SHOOT
|
||||||
BORDER INK_BLACK
|
'SETMUSIC 0 "O4L3C<BAGFEDCDEFGAB>C<BAGFEDCDEFGAB>C" PLAYMUSIC ' BIG UFO
|
||||||
COLOR INK_RED + PAPER_BLACK
|
'SETMUSIC 3 "O5L2BAGFEDCV4BAGFEDV2CBAGFEDC" PLAYMUSIC ' EXPLOSION
|
||||||
CLS
|
SETCHAR 0 !00000101033F7F7F
|
||||||
LOCATE 0 1 PRINT !8A87858A87858A8783888F8D8A858E81
|
SETCHAR 1 !0000000080F8FCFC
|
||||||
LOCATE 0 2 PRINT !8A878B8A878B8A87818A8D8F8A8F8D80
|
SETCHAR 2 !00423C5ABDA51800
|
||||||
LOCATE 0 3 PRINT !8A8D8E8A858A8A8F8F8A858F8A858B85
|
SETCHAR 3 !0024BD5A3C244200
|
||||||
COLOR INK_YELLOW + PAPER_BLACK
|
SETCHAR 4 !00817E99FF3C4200
|
||||||
LOCATE 3 4 PRINT !8E8F8D8A858A858F8F8F
|
SETCHAR 5 !00247E99FF3C1800
|
||||||
LOCATE 3 5 PRINT !8F808F8A858A85808F80
|
SETCHAR 6 !00183C5ADB7E2400
|
||||||
LOCATE 3 6 PRINT !8B8F87828F8F81808F80
|
SETCHAR 7 !00183C5ADB7EDB00
|
||||||
COLOR INK_WHITE + PAPER_BLACK
|
SETCHAR 8 !00031F7F45FF3100
|
||||||
W = 0
|
SETCHAR 9 !00C0F8FE92FF8C00
|
||||||
MENU_BLINK:
|
SETCHAR 10 !0925975F3FCF1200
|
||||||
LOCATE 0 9 PRINT "PRESS A TO START"
|
SETCHAR 11 !2048D2F4F8E69000
|
||||||
UPDATESCR
|
SETCHAR 12 !1F3F7FFFFFFFFEFC
|
||||||
INC W
|
SETCHAR 13 !F8FCFEFFFFFF7F3F
|
||||||
IF KEYPRESSED BTN_A THEN GOTO INIT_GAME END
|
SETCHAR 14 !013373FFFFFFFEFC
|
||||||
IF W < 25 THEN GOTO MENU_BLINK END
|
SETCHAR 15 !B89CD8FFFFFF7F3F
|
||||||
MENU_BLINK2:
|
SETCHAR 16 !000042C2C7EFFEFC
|
||||||
LOCATE 0 9 PRINT " "
|
SETCHAR 17 !0080C0D9DFFF7F3F
|
||||||
UPDATESCR
|
SETCHAR 18 !00000000008ADEFC
|
||||||
INC W
|
SETCHAR 19 !00000080C0D27733
|
||||||
IF KEYPRESSED BTN_A THEN GOTO INIT_GAME END
|
SETCHAR 20 !FF00000000000000
|
||||||
IF W < 50 THEN GOTO MENU_BLINK2 END
|
SETCHAR 21 !00000000000000FF
|
||||||
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
|
|
||||||
|
|
||||||
' MOVIMENT DE LA BOLA
|
BORDER INK_BLACK
|
||||||
BX = BX + DX
|
COLOR INK_WHITE + PAPER_BLACK
|
||||||
IF BX >= 131 THEN GOSUB PING2 BX = 131 DX = -DX END
|
CLS
|
||||||
IF BX <= 5 THEN GOSUB PING2 BX = 5 DX = -DX END
|
|
||||||
BY = BY + DY
|
' PINTEM EL MARCADOR
|
||||||
IF BY <= 5 THEN BY = 5 DY = -DY END
|
LOCATE 1 0 PRINT "0000"
|
||||||
TX = (BX-5)/8
|
COLOR INK_GRAY + PAPER_BLACK
|
||||||
TY = (BY-5)/8
|
LOCATE 0 1 PRINT !14141414141414141414141414141414
|
||||||
CHAR = GETCHAR TX TY
|
LOCATE 0 11 PRINT !15151515151515151515151515151515
|
||||||
IF (BY >= 16) AND NOT(CHAR = 32) THEN
|
COLOR INK_YELLOW + PAPER_BLACK
|
||||||
GOSUB PING3
|
LOCATE 13 0 PRINT !E0E0E0
|
||||||
INC SCORE
|
|
||||||
LOCATE 1 0 PRINT STR SCORE, "00"
|
LET ITER = 0
|
||||||
PUTCHAR TX TY 32
|
LET HEIGHT = 0
|
||||||
IF TX MOD 2 = 0 THEN
|
LET ALIEN = 0
|
||||||
PUTCHAR TX+1 TY 32
|
LET AX = 8
|
||||||
ELSE
|
LET AY = 18
|
||||||
PUTCHAR TX-1 TY 32
|
DIM A(3)
|
||||||
END
|
A(0) = &HFF
|
||||||
DY = -DY
|
A(1) = &HFF
|
||||||
IF (GETCOLOR TX TY) = INK_YELLOW + PAPER_BLACK THEN DY = 2 END
|
A(2) = &HFF
|
||||||
END
|
LET POS = 0
|
||||||
IF BY >= 99 THEN GOSUB LIVE_LOST END
|
LET MASK = 1
|
||||||
IF (BY >= 91) AND (DY < 100) THEN
|
|
||||||
IF (BX+3 >= X) AND (BX+3 < X+16) THEN
|
'PINTEM ELS MARSIANITOS
|
||||||
GOSUB PING1
|
FOR I = 0 TO 24
|
||||||
DY = -DY
|
IF I < 6 THEN SETSPRITE I 4 INK_MAGENTA END
|
||||||
IF (BX+3 >= X) AND (BX+3 < X+4) THEN DX = -2 END
|
IF (I >= 6) AND (I < 12) THEN SETSPRITE I 2 INK_LIME END
|
||||||
IF (BX+3 >= X+4) AND (BX+3 < X+8) THEN DX = -1 END
|
IF (I >= 12) AND (I < 18) THEN SETSPRITE I 2 INK_LIME END
|
||||||
IF (BX+3 >= X+8) AND (BX+3 < X+12) THEN DX = 1 END
|
IF I >= 18 THEN SETSPRITE I 6 INK_CYAN END
|
||||||
IF (BX+3 >= X+12) AND (BX+3 < X+16) THEN DX = 2 END
|
PUTSPRITE I AX AY
|
||||||
|
AX = AX + 16
|
||||||
|
IF AX = 104 THEN
|
||||||
|
AX = 8
|
||||||
|
AY = AY + 10
|
||||||
END
|
END
|
||||||
END
|
END
|
||||||
' PINTEM SPRITES
|
|
||||||
PUTSPRITE 0 BX BY
|
' PINTEM AL JUGADOR
|
||||||
PUTSPRITE 1 X 96
|
LET X = 32
|
||||||
PUTSPRITE 2 X+8 96
|
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
|
UPDATESCR
|
||||||
GOTO MAIN_GAME
|
GOTO MAIN_GAME
|
||||||
|
DRAW_PLAYER:
|
||||||
|
PUTSPRITE 24 X 95
|
||||||
|
PUTSPRITE 25 X+8 95
|
||||||
|
RETURN
|
||||||
LOOP: GOTO LOOP
|
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
|
|
||||||
Reference in New Issue
Block a user