' 谷と自機の当たり判定
Sub hitcheck
If px < vx[i] Or (px+pw) > (vx[i]+vw) Then
state = "gameover"
EndIf
EndSub
' 谷を動かす
Sub valleymove
vcnt = vcnt +1
' 一番下の四角を左右どちらかに動かす
If vcnt > 4 Then
rnd = (Math.GetRandomNumber(3) -2)*10
vcnt = 0
EndIf
vx[23] = vx[23] +rnd
If vx[23] < 10 Then
vx[23] = 10
rnd = -rnd
vcnt = 0
EndIf
If vx[23] > 330 Then
vx[23] = 330
rnd = -rnd
vcnt = 0
EndIf
' 谷の移動
For i=0 To 23
If i < 23 Then
vx[i] = vx[i+1]
EndIf
Shapes.Move(valley[i],vx[i],vy[i])
EndFor
EndSub
Sub gameover
mcnt = 0
vec = 1 ' 移動の向き 1:右へ -1:左へ
' 自機が画面の右側にいるときは左向きをセット
If px > (GraphicsWindow.Width /2) Then
vec = -1
EndIf
While state = "gameover"
mcnt = mcnt +10
' 自機のやられ演出
If mcnt < 720 Then
psin = Math.Sin(Math.Pi*mcnt/180)*100
Shapes.Move(player,px+(mcnt*vec), py-psin)
Shapes.Rotate(player,mcnt)
EndIf
If mcnt = 600 Then ' GAME OVER 表示
Shapes.ShowShape(msg1)
Shapes.ShowShape(msg2)
EndIf
If mcnt > 1200 Then ' PUSH SPACE KEY の表示
If Math.Remainder(mcnt,600) < 400 Then
Shapes.ShowShape(pushmsg)
Else
Shapes.HideShape(pushmsg)
EndIf
If GraphicsWindow.LastKey = "Space" Then
state = "start"
EndIf
EndIf