GraphicsWindow.Title="ラケットゲーム 2011.12.17" …ウィンドウタイトルの表示
GraphicsWindow.BackgroundColor="#001100" …ウィンドウのバックカラーを暗い緑に設定
'
gw=GraphicsWindow.Width …ウィンドウの幅をgwとする
gh=GraphicsWindow.Height …ウィンドウの高さをghとする
GraphicsWindow.BrushColor="Gold" …図形の塗りつぶしの色を金色に指定
raketto=Shapes.AddRectangle(60,12) …幅60、高さ12の四角形をrakettoとする
ball=Shapes.AddEllipse(16,16) …直径16の円をballとする
GraphicsWindow.MouseMove=OnMouseMove …マウスに動きがあったら、OnMouseMoveというサブルーチン内を実行する(指定する)
'
x=Math.GetRandomNumber(gw-16) …ウィンドウの幅から16引いた値を最大値とする乱数をxとする
y=0 …ウィンドウの一番上
deltaX=1 …ボールの移動距離(x方向)を1とする
deltaY=1 …ボールの移動距離(y方向)を1とする
'
Loop: …ここにLoopという名前の標識を設置
x=x+deltaX …ボールの現在位置(X座標)
y=y+deltaY …ボールの現在位置(Y座標)
'
If(x>gw-16 Or x<=0) Then …もしボールが左壁か右壁に当たったら以下を実行せよ
deltaX=-deltaX …ボールの移動方向(x方向)を反対に向ける
EndIf
If(y<=0) Then …もしボールが上の壁に当たったら以下を実行せよ
deltaY=-deltaY …ボールの移動方向(y方向)を反対に向ける
EndIf
'
rakettoX=Shapes.GetLeft(raketto) …ラケットの左端の座標をrakettoXとする
If(y=gh-28 And x>=rakettoX And x<=rakettoX+60) Then …もしボールの現在位置のY座標がgh-28に等しく、かつX座標がラケットの幅の中にあるなら、以下を実行せよ
deltaY=-deltaY …ボールの移動方向(y方向)を反対向ける
Sound.PlayClick() …クリック音を鳴らす
EndIf
'
Shapes.Move(ball,x,y) …座標(x、y)、つまりボールの現在位置にボールを描く(動かす)
Program.Delay(3) …待ち時間 3ミリ秒
'
If(y<gh) Then …もしボールの現在位置(Y座標)が下の壁まで行っていなかったら以下を実行せよ(つまりミスしていないかどうかの判定、ミスならゲームオーバー)
Goto Loop …Loop に戻れ
EndIf
'
GraphicsWindow.DrawText(gw/2-40,gh/2-20,"Game Over!") …ウィンドウの真ん中あたりに、Game Over!と書く
Sound.PlayChimes() …チャイム音を鳴らす
'
Sub OnMouseMove …OnMouseMoveという名のサブルーチン
rakettoX=GraphicsWindow.MouseX …マウスの現在位置(X座標)をラケットのX座標とする
Shapes.Move(raketto,rakettoX-60,gh-12) …マウスの左側にラケットを描く(動かす)
EndSub …サブルーチンはここまで
プログラムはこちらから (要マイクロソフトSilverLight)
・マウスカーソルがウィンドウ内にないとラケットを動かすことが出来ませんので、ウィンドウ内でやってください。
・最初からやる場合は右上のList Progrumをクリックしてください
----------------------
ラベル:Small Basic
