Small Basicでモグラたたきゲーム

Small Basicのオンラインエディタでモグラたたきゲームを作りました。

プログラムのソースコードは下記です。コピーしてSmall Basicのオンラインエディタに貼り付ければ動かせます。

Small Basic のオンラインエディタは未完成のため、様々な不具合や制約があります。
たとえばマウスクリック時のマウスのY座標が正確に取得できない不具合があるようです。
下記のコードを貼り付けてもうまく動かない場合は、プレイ中にウィンドウの大きさを変更してみたり、スクロールしてみたりしてください。
一度安定すると次回アクセスまでは正しく動いてくれるようです。

オンラインエディタを使わず、Windowsアプリ版のSmallBasicを使っている人は、
プログラムID DWWL721.000-0 で発行しましたのでインポートして使ってください。

NUM_OF_GRID=5
GRID_W=64
For i = 1 To NUM_OF_GRID
    For j = 1 To NUM_OF_GRID
        GraphicsWindow.DrawRectangle(i*GRID_W, j*GRID_W, GRID_W, GRID_W)
    EndFor
EndFor

mole=Shapes.AddEllipse(GRID_W, GRID_W)
mole_x=Math.GetRandomNumber(NUM_OF_GRID)*GRID_W
mole_y=Math.GetRandomNumber(NUM_OF_GRID)*GRID_W
Shapes.Move(mole, mole_x, mole_y)
visibility="False"

hitFlg="False"

score=0
GraphicsWindow.FontSize=24
GraphicsWindow.DrawText(0, 0, "SCORE:")
objScore = Shapes.AddText(score)
Shapes.Move(objScore, 100, 0)

MAX_TIME=20000
time=MAX_TIME
GraphicsWindow.DrawText(0, 28, "TIME:")
objTime = Shapes.AddText(time)
Shapes.SetText(objTime, time/1000)
Shapes.Move(objTime, 100, 28)

Timer.Interval=1000
Timer.Tick=onTick
Sub onTick
    time=time-Timer.Interval
    Shapes.SetText(objTime, time/1000)

    If time=0 Then
        Shapes.HideShape(mole)
        GraphicsWindow.DrawText(150, 200, "GAME OVER!")
        Program.End()
    ElseIf time=MAX_TIME/2 Then
        Timer.Interval=Timer.Interval/2
    EndIf

    If visibility="True" Then
        Shapes.ShowShape(mole)
        visibility="False"
    Else
        Shapes.HideShape(mole)
        hitFlg="False"
        Shapes.Zoom(mole, 1, 1)
        mole_x=Math.GetRandomNumber(NUM_OF_GRID)*GRID_W
        mole_y=Math.GetRandomNumber(NUM_OF_GRID)*GRID_W
        Shapes.Move(mole, mole_x, mole_y)
        visibility="True"
    EndIf
EndSub

GraphicsWindow.MouseDown=onMouseDown
Sub onMouseDown
    mouse_x = GraphicsWindow.MouseX
    mouse_y = GraphicsWindow.MouseY

    If mouse_x > mole_x And mouse_x < mole_x+GRID_W Then
        If mouse_y > mole_y And mouse_y < mole_y+GRID_W Then
            If hitFlg="False" Then
                Shapes.Zoom(mole, 2, 2)
                score=score+1
                Shapes.SetText(objScore, score)
                hitFlg="True"
            EndIf
        EndIf
    EndIf
EndSub

73行しかありません。プログラミングを学んだことのある人なら短く感じられるのではないでしょうか。小中学生でも十分に取り組めます。ぜひチャレンジしてほしいです。

Small Basicのウェブサイトおよびオンラインエディタはこちら

Small Basic

できることならコピーして貼り付けたりせず、地道にコツコツ打ち込んでほしいです。時間はかかりますが得るものは多いと思います。

実際のところ、私自身も実はしっかりと時間をかけて書きました。

1文字目を打ち込むところから動画にしてみましたが録画時間は20分を超えました。

実際にはそれだけでなく、録画の前にあーでもないこーでもないと試行錯誤していましたので、とても時間がかかっています。何かを得たければ時間はかかるものです。

コスパとかタイパとかいう言葉に踊らされることなく、子どもたちには地道にコツコツと学ぶ根気を育んでほしいと思っています。

タイトルとURLをコピーしました