Microsoft Small Basic

Program Listing: HDT831
init()
While "true"
title()
start()
gameover()
EndWhile

Sub init
state = "wait" ' 準備中
GraphicsWindow.Title = "すべて拾い集めよう"
GraphicsWindow.Width = 500
GraphicsWindow.Height = 400
' マウス移動イベント登録
GraphicsWindow.MouseMove = OnMouseMove
EndSub

Sub title
' タイトル画面の表示
GraphicsWindow.BrushColor = "DodgerBlue"
GraphicsWindow.FontSize = 50
GraphicsWindow.DrawText(60,100,"すべて拾い集めよう")
GraphicsWindow.BrushColor = "BlueViolet"
GraphicsWindow.FontSize = 20
GraphicsWindow.DrawText(70,180,"マウスカーソルを動かして四角を触ってください")
Program.Delay(1000)
GraphicsWindow.BrushColor = "Tomato"
GraphicsWindow.FontSize = 30
GraphicsWindow.DrawText(100,300,"クリックでゲームスタート")

' クリックされるまで待つ
While Mouse.IsLeftButtonDown <> "true"
Program.Delay(100)
EndWhile
GraphicsWindow.Clear() ' 画面をクリア
EndSub

Sub start
cnt = 0 ' 四角を拾った個数をカウント

' 四角をランダムに配置する
For i=0 To 14
GraphicsWindow.BrushColor = GraphicsWindow.GetRandomColor()
oX[i] = Math.GetRandomNumber(460) +10
oY[i] = Math.GetRandomNumber(360) +10
obj[i] = Shapes.AddRectangle(20,20)
Shapes.Move(obj[i], oX[i], oY[i])
EndFor

state = "play" ' プレイ中
lastTime = Clock.ElapsedMilliseconds ' 現在の経過時間を取得
' OnMouseMove で state="wait" になるまで待つ
While state = "play"
Program.Delay(500)
EndWhile
' プレイに掛かった時間を算出
youTime = (Clock.ElapsedMilliseconds - lastTime) /1000
EndSub

Sub OnMouseMove
If state = "wait" Then
Goto endOnMouseMove
EndIf

' マウス座標を取得
px = GraphicsWindow.MouseX
py = GraphicsWindow.MouseY
'GraphicsWindow.Title = "px="+px+" py="+py

' 四角との当たり判定を行う
For i=0 To 14
If (oX[i] < px) And (oX[i]+20 > px) Then
If (oY[i] < py) And (oY[i]+20 > py) Then
'GraphicsWindow.Title = "当たり"
Shapes.Remove(obj[i])
oX[i] = 99999 ' 条件から外すため大きい数を入れる
cnt = cnt +1
EndIf
EndIf
EndFor

If cnt = 15 Then
'GraphicsWindow.Title = "すべて拾った"
state = "wait" ' 準備中
EndIf
endOnMouseMove:
EndSub

Sub gameover
GraphicsWindow.BrushColor = "DodgerBlue"
GraphicsWindow.FontSize = 50
GraphicsWindow.DrawText(120,100,"ゲーム 終了")
GraphicsWindow.FontSize = 30
GraphicsWindow.DrawText(80,190,"あなたのタイム ")
GraphicsWindow.BrushColor = "Red"
GraphicsWindow.FontSize = 40
GraphicsWindow.DrawText(280,180,youTime)
Program.Delay(2000)
GraphicsWindow.BrushColor = "Tomato"
GraphicsWindow.FontSize = 30
GraphicsWindow.DrawText(140,300,"クリックでもう一度")

' クリックされるまで待つ
While Mouse.IsLeftButtonDown <> "true"
Program.Delay(100)
EndWhile
GraphicsWindow.Clear()
EndSub