📄 invaders.bas
字号:
LCDWRITE 7,SHIP_XPOS,[$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00] ' Clear the ship graphic
Delayms 100 ' Leave the graphic on the screen for 100ms
LIVES = LIVES - 1 ' Decrement the lives counter
MISSILE_SOUND_ENABLE = 0 ' Disable the MISSILE sound channel
SAUCER_SOUND_ENABLE = 0 ' Disable the SAUCER sound channel
If LIVES > "0" Then ' Do we have any lives left ?
LCDWRITE 7,SHIP_XPOS,[$00,$E0,$F0,$F0,$F8,$FC,$F8,$F0,$F0,$E0,$00] ' Yes. So Re-draw the ship and carry on
Print at 0,20,LIVES ' Update the Display for the amount of lives
Else ' Otherwise, we don't have any lives left
Goto GAME_OVER ' So game over
Endif
Endif
Delayms 6 ' Main game speed setting
Wend
'--------------------------------------------------------------------
' Explode the ship when the game is over
GAME_OVER:
Print at 0,0,Dec LEVEL, " ",Dec SCORE,at 0,20,LIVES
SAUCER_SOUND_ENABLE = TRUE ' Enable SAUCER sound channel
MISSILE_SOUND_ENABLE = TRUE ' Enable MISSILE sound channel
MISSILE_FREQ = 70 ' Set MISSILE channel frequency to 70
SAUCER_FREQ = 90 ' Set SAUCER channel frequency to 90
TEMP_LOOP = 1
Repeat
MISSILE_FREQ = MISSILE_FREQ - TEMP_LOOP
SAUCER_FREQ = SAUCER_FREQ - TEMP_LOOP
Delayms 10 + TEMP_LOOP
Circle 1,SHIP_XPOS + 5,63,TEMP_LOOP
If TEMP_LOOP > 10 Then
Circle 0,SHIP_XPOS + 5,63,TEMP_LOOP - 10
Endif
TEMP_LOOP = TEMP_LOOP + 2
Until TEMP_LOOP > 24
SAUCER_SOUND_ENABLE = FALSE ' Disable SAUCER sound channel
MISSILE_SOUND_ENABLE = FALSE ' Disable MISSILE sound channel
TEMP_LOOP = 1
Repeat
Circle 0,SHIP_XPOS + 5,63,TEMP_LOOP
TEMP_LOOP = TEMP_LOOP + 2
Until TEMP_LOOP > 24
'Cls
Print at 3,6,INVERSE 1,"GAME OVER", INVERSE 0
Delayms 500
Print at 4,1,"PRESS FIRE TO START"
While FIRE_BUTTON = 1 : Wend
Delayms 50
While FIRE_BUTTON = 0 : Wend
Delayms 50
Goto MAIN_PROGRAM_LOOP
'--------------------------------------------------------------------
' Font CDATA table for space invaders game
FONT:- CData $00,$00,$00,$00,$00,$00 'Graphic Character 0
CData $FF,$FF,$FF,$FF,$FF,$FF 'Graphic Character 1
CData $E0,$F0,$F8,$FC,$FC,$FE ' Left side of base complete (Character 2)
CData $C0,$B0,$B0,$70,$EC,$F8 ' Left side of base after hit 1 (Character 3)
CData $C0,$A0,$B0,$70,$AC,$28 ' Left side of base after hit 2 (Character 4)
CData $40,$A0,$B0,$70,$A0,$20 ' Left side of base after hit 3 (Character 5)
CData $40,$80,$80,$40,$A0,$20 ' Left side of base after hit 4 (Character 6)
CData $00,$00,$00,$00,$00,$00 ' Left side of base after hit 5 (Character 7)
CData $FE,$FE,$FE,$FE,$FE,$FE ' Middle of base complete (Character 8)
CData $FE,$DE,$EC,$F0,$F8,$FE ' Middle of base after hit 1 (Character 9)
CData $F8,$DE,$E4,$F0,$D8,$9E ' Middle of base after hit 2 (Character 10)
CData $B8,$DE,$A4,$B0,$48,$B4 ' Middle of base after hit 3 (Character 11)
CData $34,$58,$A4,$B8,$48,$34 ' Middle of base after hit 4 (Character 12)
CData $00,$00,$00,$00,$00,$00 ' Middle of base after hit 5 (Character 13)
CData $FE,$FC,$FC,$F8,$F0,$E0 ' Right side of base complete (Character 14)
CData $C0,$B0,$B0,$70,$EC,$F8 ' Right side of base after hit 1 (Character 15)
CData $C0,$A0,$B0,$70,$AC,$28 ' Right side of base after hit 2 (Character 16)
CData $40,$A0,$B0,$70,$A0,$20 ' Right side of base after hit 3 (Character 17)
CData $40,$80,$80,$40,$A0,$20 ' Right side of base after hit 4 (Character 18)
CData $00,$00,$00,$00,$00,$00 ' Right side of base after hit 5 (Character 19)
CData $FF,$00,$00,$00,$00,$00 'Graphic character 20
CData $00,$00,$00,$00,$00,$FF 'Graphic character 21
CData $FF,$01,$01,$01,$01,$01 'Graphic character 22
CData $01,$01,$01,$01,$01,$FF 'Graphic character 23
CData $FF,$80,$80,$80,$80,$80 'Graphic character 24
CData $80,$80,$80,$80,$80,$FF 'Graphic character 25
CData $00,$00,$00,$00,$F0,$F0 'User defined character 26
CData $00,$00,$00,$00,$0F,$0F 'User defined character 27
CData $00,$00,$00,$00,$00,$00 'User defined character 28
CData $00,$00,$00,$00,$00,$00 'User defined character 29
CData $00,$00,$00,$00,$00,$00 'User defined character 30
CData $00,$00,$00,$00,$00,$00 'User defined character 31
CData $00,$00,$00,$00,$00,$00 '32 - - 20
CData $00,$00,$4F,$00,$00,$00 '33 - ! - 21
CData $00,$07,$00,$07,$00,$00 '34 - " - 22
CData $14,$7F,$14,$7F,$14,$00 '35 - # - 23
CData $24,$2A,$7F,$2A,$12,$00 '36 - $ - 24
CData $23,$13,$08,$64,$62,$00 '37 - % - 25
CData $36,$49,$55,$22,$50,$00 '38 - & - 26
CData $00,$05,$03,$00,$00,$00 '39 - ' - 27
CData $1C,$22,$41,$00,$00,$00 '40 - ( - 28
CData $00,$00,$41,$22,$1C,$00 '41 - ) - 29
CData $14,$08,$3E,$08,$14,$00 '42 - * - 2A
CData $08,$08,$3E,$08,$08,$00 '43 - + - 2B
CData $00,$50,$30,$00,$00,$00 '44 - , - 2C
CData $08,$08,$08,$08,$08,$00 '45 - - - 2D
CData $00,$60,$60,$00,$00,$00 '46 - . - 2E
CData $20,$10,$08,$04,$02,$00 '47 - / - 2F
CData $3E,$51,$49,$45,$3E,$00 '48 - 0 - 30
CData $00,$42,$7F,$40,$00,$00 '49 - 1 - 31
CData $42,$61,$51,$49,$46,$00 '50 - 2 - 32
CData $21,$41,$45,$4B,$31,$00 '51 - 3 - 33
CData $18,$14,$12,$7F,$10,$00 '52 - 4 - 34
CData $27,$45,$45,$45,$39,$00 '53 - 5 - 35
CData $3C,$4A,$49,$49,$30,$00 '54 - 6 - 36
CData $01,$71,$09,$05,$03,$00 '55 - 7 - 37
CData $36,$49,$49,$49,$36,$00 '56 - 8 - 38
CData $06,$49,$49,$49,$3E,$00 '57 - 9 - 39
CData $00,$36,$36,$00,$00,$00 '58 - : - 3A
CData $00,$56,$36,$00,$00,$00 '59 - ; - 3B
CData $08,$14,$22,$41,$00,$00 '60 - < - 3C
CData $14,$14,$14,$14,$14,$00 '61 - = - 3D
CData $00,$41,$22,$14,$08,$00 '62 - > - 3E
CData $02,$01,$51,$09,$06,$00 '63 - ? - 3F
CData $32,$49,$79,$41,$3E,$00 '64 - @ - 40
CData $7E,$11,$11,$11,$7E,$00 '65 - A - 41
CData $7F,$49,$49,$49,$36,$00 '66 - B - 42
CData $3E,$41,$41,$41,$22,$00 '67 - C - 43
CData $7F,$41,$41,$22,$1C,$00 '68 - D - 44
CData $7F,$49,$49,$49,$41,$00 '69 - E - 45
CData $7F,$09,$09,$09,$01,$00 '70 - F - 46
CData $3E,$41,$49,$49,$7A,$00 '71 - G - 47
CData $7F,$08,$08,$08,$7F,$00 '72 - H - 48
CData $00,$41,$7F,$41,$00,$00 '73 - I - 49
CData $20,$40,$41,$3F,$01,$00 '74 - J - 4A
CData $7F,$08,$14,$22,$41,$00 '75 - K - 4B
CData $7F,$40,$40,$40,$40,$00 '76 - L - 4C
CData $7F,$02,$0C,$02,$7F,$00 '77 - M - 4D
CData $7F,$04,$08,$10,$7F,$00 '78 - N - 4E
CData $3E,$41,$41,$41,$3E,$00 '79 - O - 4F
CData $7F,$09,$09,$09,$06,$00 '80 - P - 50
CData $3E,$41,$51,$21,$5E,$00 '81 - Q - 51
CData $7F,$09,$19,$29,$46,$00 '82 - R - 52
CData $46,$49,$49,$49,$31,$00 '83 - S - 53
CData $01,$01,$7F,$01,$01,$00 '84 - T - 54
CData $3F,$40,$40,$40,$3F,$00 '85 - U - 55
CData $1F,$20,$40,$20,$1F,$00 '86 - V - 56
CData $3F,$40,$38,$40,$3F,$00 '87 - W - 57
CData $63,$14,$08,$14,$63,$00 '88 - X - 58
CData $07,$08,$70,$08,$07,$00 '89 - Y - 59
CData $61,$51,$49,$45,$43,$00 '90 - Z - 5A
CData $7F,$41,$41,$00,$00,$00 '91 - [ - 5B
CData $02,$04,$08,$10,$20,$00 '92 - \ - 5C
CData $00,$00,$41,$41,$7F,$00 '93 - ] - 5D
CData $04,$02,$01,$02,$04,$00 '94 - ^ - 5E
CData $40,$40,$40,$40,$40,$00 '95 - _ - 5F
CData $00,$01,$02,$04,$00,$00 '96 - ` - 60
CData $20,$54,$54,$54,$78,$00 '97 - a - 61
CData $7F,$48,$44,$44,$38,$00 '98 - b - 62
CData $38,$44,$44,$44,$20,$00 '99 - c - 63
CData $38,$44,$44,$48,$7F,$00 '100 d - 64
CData $38,$54,$54,$54,$18,$00 '101 e - 65
CData $08,$7E,$09,$01,$02,$00 '102 f - 66
CData $0C,$52,$52,$52,$3E,$00 '103 g - 67
CData $7F,$08,$04,$04,$78,$00 '104 h - 68
CData $00,$44,$7D,$40,$00,$00 '105 i - 69
CData $00,$20,$40,$44,$3D,$00 '106 j - 6A
CData $7F,$10,$28,$44,$00,$00 '107 k - 6B
CData $00,$41,$7F,$40,$00,$00 '108 l - 6C
CData $7C,$04,$18,$04,$78,$00 '109 m - 6D
CData $7C,$08,$04,$04,$78,$00 '110 n - 6E
CData $38,$44,$44,$44,$38,$00 '111 o - 6F
CData $7C,$14,$14,$14,$08,$00 '112 p - 70
CData $08,$14,$14,$18,$7C,$00 '113 q - 71
CData $7C,$08,$04,$04,$08,$00 '114 r - 72
CData $48,$54,$54,$54,$20,$00 '115 s - 73
CData $04,$3F,$44,$40,$20,$00 '116 t - 74
CData $3C,$40,$40,$20,$7C,$00 '117 u - 75
CData $1C,$20,$40,$20,$1C,$00 '118 v - 76
CData $3C,$40,$30,$40,$3C,$00 '119 w - 77
CData $44,$28,$10,$28,$44,$00 '120 x - 78
CData $0C,$50,$50,$50,$3C,$00 '121 y - 79
CData $44,$64,$54,$4C,$44,$00 '122 z - 7A
CData $08,$36,$41,$00,$00,$00 '123 { - 7B
CData $00,$00,$7F,$00,$00,$00 '124 | - 7C
CData $00,$00,$41,$36,$08,$00 '125 } - 7D
CData $00,$08,$04,$08,$04,$00 '126 ~ - 7E
'--------------------------------------------------------------------
INVADER_SPLASH_SCREEN:
CDATA $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,_
$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$40,$70,$78,_
$7C,$7C,$7C,$7C,$7C,$FC,$F8,$F0,$E0,$C0,$C0,$7C,$7C,$7C,$7C,$7C,_
$7C,$7C,$7C,$7C,$7C,$7C,$F8,$F0,$E0,$C0,$00,$00,$80,$7C,$7C,$7C,_
$7C,$7C,$7C,$7C,$7C,$70,$80,$00,$00,$00,$80,$C0,$F0,$F8,$3E,$3E,_
$3E,$3E,$3E,$3E,$3E,$3E,$3E,$7C,$F8,$E0,$C0,$FE,$FE,$3E,$3E,$3E,_
$3E,$3E,$3E,$3E,$3E,$3E,$3E,$3E,$20,$A0,$00,$00,$00,$00,$00,$00,_
$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,_
$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,_
$00,$00,$00,$00,$00,$00,$00,$00,$60,$F0,$0C,$06,$06,$06,$06,$86,_
$86,$86,$06,$06,$06,$0C,$19,$F3,$C7,$3F,$FF,$02,$02,$02,$02,$02,_
$82,$82,$82,$82,$02,$06,$0C,$19,$33,$E7,$F8,$00,$FF,$02,$02,$02,_
$02,$02,$02,$02,$02,$06,$FF,$00,$00,$FE,$FF,$F3,$71,$08,$0C,$06,_
$02,$02,$82,$82,$82,$02,$02,$02,$07,$0F,$FF,$3F,$C0,$FC,$1E,$02,_
$02,$02,$03,$C3,$C3,$C3,$C3,$C3,$C3,$43,$73,$1F,$03,$00,$00,$00,_
$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,_
$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,_
$00,$00,$00,$00,$00,$00,$00,$00,$00,$03,$3C,$E0,$80,$00,$00,$03,_
$1E,$61,$5E,$58,$58,$58,$58,$99,$BF,$40,$03,$FF,$C0,$00,$00,$00,_
$01,$FF,$83,$FF,$00,$00,$00,$00,$00,$FF,$07,$FE,$0F,$00,$00,$00,_
$F8,$7F,$E0,$00,$00,$00,$0F,$FC,$00,$FF,$01,$FF,$00,$00,$00,$00,_
$00,$FE,$1F,$0C,$0F,$08,$08,$08,$F8,$7E,$07,$FC,$1F,$03,$00,$00,_
$00,$00,$0F,$0F,$0D,$E8,$38,$00,$00,$00,$00,$00,$00,$00,$00,$00,_
$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,_
$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,_
$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$01,$63,$E6,$2C,_
$28,$28,$68,$E8,$98,$F0,$00,$01,$01,$07,$FE,$83,$7F,$F0,$00,$00,_
$00,$01,$E1,$21,$60,$30,$30,$0C,$06,$01,$00,$FF,$00,$00,$00,$00,_
$8F,$8C,$8F,$00,$00,$00,$00,$3F,$F8,$3F,$FE,$07,$00,$00,$00,$80,_
$FF,$C1,$FE,$0E,$02,$02,$82,$FB,$1F,$E0,$FF,$03,$00,$00,$00,$F0,_
$BE,$83,$83,$E3,$82,$83,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,_
$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,_
$00,$00,$00,$00,$00,$C0,$40,$40,$5C,$7C,$7C,$FC,$FC,$F0,$40,$4C,_
$7C,$7C,$7C,$FC,$FC,$F8,$20,$00,$0C,$3C,$3C,$7C,$FC,$FC,$F3,$06,_
$0C,$18,$30,$71,$F1,$F1,$F1,$D0,$18,$0C,$3F,$3D,$3C,$FF,$FC,$F8,_
$18,$18,$DF,$1E,$3C,$3C,$3C,$3C,$3C,$3C,$3F,$F8,$08,$08,$08,$0E,_
$0F,$3C,$3F,$3F,$38,$38,$38,$38,$3F,$3E,$7D,$F3,$EC,$08,$F8,$F8,_
$78,$38,$38,$38,$3C,$3F,$3F,$3E,$3E,$3F,$38,$38,$38,$E8,$88,$F8,_
$78,$38,$38,$3C,$3F,$3E,$3E,$38,$30,$20,$40,$80,$C0,$F0,$F8,$FC,_
$FE,$7E,$3E,$1E,$1E,$1E,$1E,$1E,$1C,$10,$00,$40,$80,$00,$00,$00,_
$00,$06,$0E,$36,$C6,$82,$02,$06,$1C,$30,$C6,$8F,$3B,$E3,$82,$02,_
$06,$0C,$30,$6E,$FB,$C3,$03,$02,$02,$02,$1E,$73,$9F,$73,$C3,$83,_
$03,$07,$1C,$70,$C1,$07,$7F,$C3,$03,$03,$03,$03,$7F,$C0,$FF,$FF,_
$FF,$FF,$03,$03,$03,$03,$03,$03,$03,$07,$3E,$C3,$7F,$E0,$00,$00,_
$FF,$03,$03,$01,$E1,$E1,$21,$E1,$01,$01,$03,$06,$8F,$F8,$FF,$3F,_
$FC,$07,$01,$01,$01,$01,$E1,$E1,$A1,$A1,$A1,$21,$E1,$F1,$3F,$E3,_
$3C,$07,$01,$01,$01,$C1,$61,$E1,$61,$01,$01,$01,$01,$C7,$7F,$99,_
$70,$3C,$06,$02,$03,$C1,$31,$B1,$71,$31,$01,$01,$81,$C1,$76,$18,_
$00,$00,$00,$00,$00,$01,$06,$0C,$30,$40,$80,$01,$06,$0C,$31,$C6,_
$9C,$70,$C0,$00,$00,$01,$07,$00,$80,$00,$00,$00,$07,$1E,$F0,$83,_
$0E,$38,$E0,$80,$00,$07,$0C,$7F,$80,$00,$00,$00,$00,$FF,$07,$FF,_
$FF,$FF,$00,$00,$00,$00,$FF,$E0,$00,$00,$00,$07,$F8,$8F,$FC,$80
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -