プログラムリスト
SYS/EX7ALIEN
トップメニュー「SmileBASICでプログラムを作る」から、LOAD"SYS/EX7ALIEN"↵
でプログラムが読み込まれます。キーボードの「EDIT」キーを押すと、このプログラムが自由に編集できます。
'
' EXAMPLE7
' しんりやくしゃもどき
'
XSCREEN 0
VISIBLE 1,1,1,1
CLS
COLOR 15
DIM EX[20],EY[20],ED[20]
'---
EMAX=20
FOR I=0 TO EMAX-1
EX[I]=FLOOR(I MOD 10)*2+10
EY[I]=FLOOR(I/10)*2+3
ED[I]=0
LOCATE EX[I],EY[I]
PRINT ""
NEXT
EDW=FALSE
'---
PX=25:PY=21
LOCATE PX,PY:PRINT "";
LIFE=3
SC=0
MX=PX:MY=PY:MST=FALSE
LOCATE 0,22
PRINT ""*50;
LOCATE 0,23
PRINT ""*LIFE;
LOCATE 0,25
PRINT "SCORE: ";SC
SV=0
'---
@LOOP
GOSUB @MYSHIP
GOSUB @MYSHOT
GOSUB @ALIEN
GOSUB @SCORE
VSYNC 1
GOTO @LOOP
'---
@SCORE
IF SV==0 THEN RETURN
SC=SC+10
SV=SV-10
LOCATE 7,25:PRINT SC
RETURN
'---
@MYSHIP
BT=BUTTON()
VX=0
IF BT AND 4 THEN VX=-1
IF BT AND 8 THEN VX=1
IF VX==0 THEN @NOTMOVE
LOCATE PX,PY:PRINT " "
PX=PX+VX
IF PX<0 THEN PX=0
IF PX>49 THEN PX=49
LOCATE PX,PY:PRINT "";
'---
@NOTMOVE
RETURN
'---
@MYSHOT
IF MST==TRUE THEN @MSMOVE
IF (BT AND 16+32)==0 THEN @MSSKIP
MST=TRUE
MX=PX:MY=PY
GOTO @MSMOVE2
'---
@MSMOVE
LOCATE MX,MY:PRINT " "
'---
@MSMOVE2
MY=MY-1
IF MY<0 THEN MST=FALSE:GOTO @MSSKIP
LOCATE MX,MY:PRINT ""
'---
@MSSKIP
RETURN
'---
@ALIEN
MD=FALSE
IF EDW THEN MD=EDW:EDW=FALSE
'---
FOR I=0 TO EMAX-1
IF ED[I]==-1 THEN @PASS
'---
LOCATE EX[I],EY[I]:PRINT" "
IF MD==FALSE THEN @EMV
'---
ED[I]=(ED[I]+1) AND 3
'---
@EMV
GOSUB @EMOVE
'---
@SKIP
IF MST==FALSE THEN @PASS
IF MX!=FLOOR(EX[I]) THEN @PASS
IF MY!=EY[I] THEN @PASS
'---
LOCATE EX[I],EY[I]:PRINT" "
ED[I]=-1
MST=FALSE
SV=SV+10
'---
@PASS
'---
NEXT
RETURN
'---
@EMOVE
ON ED[I] GOTO @RI,@DW,@LF,@DW
@DW
EY[I]=EY[I]+1
IF EY[I]>20 THEN EY[I]=3
ED[I]=(ED[I]+1) AND 3
GOTO @EPUT
@RI
EX[I]=EX[I]+0.2
IF EX[I]>40 THEN EDW=TRUE
GOTO @EPUT
@LF
EX[I]=EX[I]-0.2
IF EX[I]<10 THEN EDW=TRUE
@EPUT
LOCATE EX[I],EY[I]
PRINT ""
RETURN