プログラムリスト
SYS/GAME5VS
トップメニュー「SmileBASICでプログラムを作る」から、LOAD"SYS/GAME5VS"↵
でプログラムが読み込まれます。キーボードの「EDIT」キーを押すと、このプログラムが自由に編集できます。
'
' GAME5VS
' カクトウゲーム いしょくばん
'
GOSUB @INIT
WHILE 1
GOSUB @TITLE
'--- MAIN
WHILE 1
N=AN+I
INOT=(I+1) MOD 2
NNOT=AN+INOT
XNOT=SPVAR(NNOT,VX)
X1=1-(I*2)
BT=0
IF I==0 THEN BT=STKANDBTN()
IF I==1 AND RND(2)==0 THEN BT=POW(2,RND(8))
GOSUB @VPOP
GOSUB @JUMP
GOSUB @PUNCH
GOSUB @DAMAGE
GOSUB @MOVE
GOSUB @HITCHK
GOSUB @VPUSH
VSYNC 1
IF HP<=0 THEN BREAK
I=(I+1) MOD 2
WEND
'---
BGMSTOP
SPCHR AN+I,496+2048+(I*8)
A=0
A1=-1
IF I==1 THEN A1=-A1
WHILE 1
A=A+A1
SPROT AN+I,A
VSYNC 1
IF A<-45 OR A>45 THEN BREAK
WEND
BGMPLAY 4
WAIT 180
WEND
'-----
@MOVE
IF (BT AND 1) THEN KEN=-50
IF (BT AND 2) THEN KEN=-8
IF (BT AND 4) THEN X=X-1
IF (BT AND 8) THEN X=X+1
IF ABS(X-XNOT)<128 THEN X=X-X1 '
IF X<64 THEN X=64
IF X>GRW-64 THEN X=GRW-64
SPOFS N,X,Y,Z
'GPSET X,1,RGB(255,5,5)
RETURN
'--- ショキカ
@INIT
XSCREEN 0
VISIBLE 1,1,1,1
GPRIO 1024
DIM NAM$[2]
NAM$[0]="YOU"
NAM$[1]="CPU"
JIMEN=24
JY=JIMEN*8-64
AN=4 'カラダ スプライトNO.
BN=2 'ブキ スプライトNO.
CN=0 'ヒバナ スプライトNO.
JMPMAX=10
PCHMAX=9
PCHHF=FLOOR(PCHMAX/2)
JMPHF=FLOOR(JMPMAX/2)
VX=0 'ザヒョウ
VY=1 '
VHP=2 'タイリョク
VJMP=3 'ジャンプ
VPCH=4 'パンチ
VKEN=5 'ケン ノ イチ
VDMG=6 'ダメージ
FOR I=0 TO 1
N=AN+I
SPSET N,496+2048+(I*8) 'MAN
SCL=8
SPSCALE N,SCL,SCL
IF I THEN SPCOLOR N,RGB(128,128,255)
N=BN+I
SPSET N,142+2048 'SWORD
SPROT N,-90+(I*180)
SCL=4
SPSCALE N,SCL,SCL
N=CN+I
SPSET N,1353+2048 'EFFECT
SCL=4
SPSCALE N,SCL,SCL
NEXT
'--- ハイケイ
GCLS
GRW=400
GRH=240
'SKY
FOR Y=0 TO JY-1
C = 255*Y/(JY-1)
GLINE 0,Y,399,Y,RGB(0,0,C)
NEXT
'GROUND
FOR Y=JY TO GRH-1
C=255*(Y-JY)/((GRH-1)-JY)
GLINE 0,Y,GRW-1,Y,RGB(C,C,0)
NEXT
Y=JY
C=0
J=0
WHILE Y<GRH
GLINE 0,Y,399,Y,C
J=J+2
Y=Y+J
WEND
CX=200
C=RGB(64,64,0)
FOR X=0 TO 128 STEP 10
GLINE CX+X,JY,CX+X*7,GRH-1,C
GLINE CX-X,JY,CX-X*7,GRH-1,C
NEXT
'STARS
FOR I=1 TO 300
C=RGB(RND(255),RND(255),255)
GPSET RND(GRW),RND(JY),C
NEXT
'
LOGOSP=255:SPSET LOGOSP,4095:SPHIDE LOGOSP
'
RETURN
'---デ-タ ヨミコミ
@VPOP
X =SPVAR(N,VX)
Y =SPVAR(N,VY)
HP =SPVAR(N,VHP)
JMP=SPVAR(N,VJMP)
PCH=SPVAR(N,VPCH)
KEN=SPVAR(N,VKEN)
DMG=SPVAR(N,VDMG)
RETURN
'---デ-タ カクノウ
@VPUSH
SPVAR N,VX ,X
SPVAR N,VY ,Y
SPVAR N,VHP ,HP
SPVAR N,VJMP,JMP
SPVAR N,VPCH,PCH
SPVAR N,VKEN,KEN
SPVAR N,VDMG,DMG
RETURN
'---
@JUMP
IF JMP THEN
'--- ジャンプ チュウ
Y=Y+(JMPHF-JMP)
JMP=JMP-0.5
IF JMP<0 THEN JMP=0
RETURN
ENDIF
IF DMG THEN RETURN
IF Y<JY+64 THEN Y=Y+JMPMAX
IF Y>JY+64 THEN Y=JY+64:JMP=0
IF (BT AND 16) THEN
'--- ジャンプ スタ-ト
JMP=JMPMAX
'BEEP 8
RETURN
ENDIF
RETURN
'--- アタリ ハンテイ
@HITCHK
X2=(X1*40)
IF PCH<=PCHHF THEN X2=0
KX=X+X2 'ケン ノ ザヒョウ
KY=Y+KEN
SPOFS BN+I,KX,KY,KZ
IF SPCHK(CN+I) THEN RETURN
IF DMG THEN RETURN
IF PCH<=PCHHF THEN RETURN
IF ABS(KX-XNOT)>96 THEN RETURN
DMGNOT=SPVAR(NNOT,VDMG)
IF DMGNOT THEN RETURN 'アイテガ ダメージチュウ
KENNOT=SPVAR(NNOT,VKEN)
IF ABS(KEN-KENNOT)<8 THEN
'--- ボウギョ
KX2=KX+RND(60)-30
KY2=KY+RND(60)-30
PCH=PCHHF
N=CN+I
C=1356+2048
T=10
SPCOLOR N,RGB(128,255,255,255)
SPANIM N,"XY",1,KX,KY,-T*4,KX2,KY2,1,999,999
SPANIM N,"I",T,C,T,C+1,T,C+2,T,C+3,1
BEEP 8
RETURN
ENDIF
SPVAR NNOT,VDMG,8 'コウゲキ ヒット
RETURN
'--- ダメージ
@DAMAGE
IF DMG==0 THEN RETURN
X=X-X1
DMG=DMG-1
IF DMG THEN RETURN
HP=HP-1
IF HP<0 THEN HP=0
GOSUB @PRTHP
RETURN
'--- コウゲキ
@PUNCH
IF PCH THEN
'--- コウゲキ チュウ
X=X+(PCH-PCHHF)*X1
IF PCH<PCHHF THEN SPCHR N,496+2048+(I*8)
PCH=PCH-1
IF PCH<0 THEN PCH=0
RETURN
ENDIF
IF DMG THEN RETURN
IF (BT AND 32)==0 THEN RETURN
PCH=PCHMAX
BEEP 1
SPCHR N,497+2048+(I*8)
RETURN
'--- タイリョク ヒョウジ
@PRTHP
HX=(I*30)+4
COLOR 15
LOCATE HX,0
PRINT NAM$[I]
FOR TMP=0 TO 10
IF HP>TMP THEN COLOR 5 ELSE COLOR 2
LOCATE TMP+HX,1,-200
PRINT ""
NEXT
RETURN
'---
@TITLE
Z=-32
KZ=-80
KZ2=-150
BGMSTOP
CLS
'
SPOFS LOGOSP,340,200,-32:SPSHOW LOGOSP
'
FOR I=0 TO 1
N=AN+I
X=((GRW-128)*I)+64
Y=JY+64
HP=11
KEN=-16
DMG=0
PCH=0
SPOFS N,X,Y,Z
GOSUB @VPUSH
SPOFS BN+I,999,999,KZ
SPOFS CN+I,999,999,KZ2
NEXT
WAIT 20
COLOR 15
RESTORE @TITLE2
FOR Y=3 TO 99
READ A$
IF A$=="END" THEN BREAK
X=25-(LEN(A$)/2)
LOCATE X,Y,-100
PRINT A$
NEXT
@TITLE2
DATA " "
DATA " "
DATA " "
DATA " "
DATA " "
DATA " "
DATA " "
DATA " "
DATA " "
DATA " "
DATA " "
DATA "KAKUTOU GAME"
DATA ""
DATA "HOW TO PLAY"
DATA ""
DATA "[A]BUTTON:ジャンプ"
DATA ""
DATA "[B]BUTTON:コウゲキ"
DATA ""
DATA "[]BUTTON:イドウ"
DATA ""
DATA "[]BUTTON:ケン カマエ"
DATA ""
DATA ""
DATA "PUSH ANY BUTTON"
DATA ""
DATA "END"
'--- オジギ
A=0
A1=1
WHILE 1
A=A+A1
IF A<=0 OR A>=30 THEN A1=-A1
SPROT AN+0,A
SPROT AN+1,-A
VSYNC 2
BT=STKANDBTN()
IF BT THEN BREAK
WEND
SPROT AN+0,0
SPROT AN+1,0
CLS
J=20
FOR I=0 TO 8
BEEP 58
WAIT J+5
J=J/2
NEXT
FOR I=0 TO 1
GOSUB @PRTHP
NEXT
BGMPLAY 1
A$="[A]ジャンプ [B]コウゲキ []イドウ []カマエ"
X=25-(LEN(A$)/2)
Y=28
COLOR 1
LOCATE X,Y,-200
PRINT A$
I=0
RETURN
'-----
DEF STKANDBTN()
SLV=0.2 'THRESHOLD
BTN=BUTTON()
STICK OUT SX,SY
IF (SY>SLV) THEN BTN=BTN OR 1
IF (SY<-SLV) THEN BTN=BTN OR 2
IF (SX<-SLV) THEN BTN=BTN OR 4
IF (SX>SLV) THEN BTN=BTN OR 8
RETURN BTN
END