今日も、山田昌良さんの書かれている、
Small Basic 入門
を参考に勉強してみたいと思います。(詳しい解説はそちらをご参照ください)
<サンプル3:ボールキャッチゲーム>
サンプルプログラムの3番目は、上から落ちてきたボールを下のラケットで受け取る、という簡単なゲームです。非常に簡単なゲームなので、面白いというのは無理ですが(笑)、少しはまりました。
プログラムはこちらへ。上部のList Program をクリックすると何回でもできます。(要Silverlight)
GraphicsWindow.Title="ボールキャッチゲーム 2011.12.6"
…ウィンドウのタイトル指定
GraphicsWindow.DrawText(0,0,"5球のボールをラケットの中心でキャッチ(100点満点)")
…ウィンドウの(0,0)にゲームの内容を表示
GraphicsWindow.DrawText(50,50,"パーフェクト(100点)を目指せ!")
…同上(座標(50,50))
'
raketto=Shapes.AddRectangle(50,20)
…ラケットの定義ball=Shapes.AddEllipse(20,20)
…ボールの定義score=0
…スコアーの初期数値
'
For i=1 To 5
…5回(5球分)繰り返す
Sound.PlayMusic("o7c8")
…サウンド(オクターブ8、ド、8分音符)を鳴らす
x=Math.GetRandomNumber(GraphicsWindow.width-20)
…ボールのX座標をランダムに得る(0〜最大値:ウィンドウの幅弱)
y=0 …ボールのY座標(常に0)
'
While y<GraphicsWindow.Height-40
…ボールのY座標がラケットの位置より上の場合、以下を繰り返す Shapes.Move(ball,x,y)
…ボールを座標(x、y)に動かす
Shapes.Move(raketto,GraphicsWindow.MouseX,GraphicsWindow.Height-20)
…マウスの現在位置にラケットを動かす(横だけ動いて、縦には動かない)
y=y+1
…ボールのY座標を1増やす(画面では1下がる)
Program.Delay(2)
…速すぎるので、少しウェイト(待ち時間)を入れる(この数値を増やせばゆっくりボールが落ちてくる)
EndWhile
…繰り返しの終了位置
'
If(x>=Shapes.GetLeft(raketto) And x+20<=Shapes.GetLeft(raketto)+50) then
…もし、ボールのX座用がラケットの左端のX座標よりも大きく、かつ、ラケットの右端よりも小さい場合、以下のことを実行せよ
score=score+20
…スコアを20足す Sound.PlayClick()
…クリック音を鳴らす
Program.Delay(300)
…ウェイト(待ち時間)を入れる
Else
…上の条件以外なら、以下のことを実行せよ
Program.Delay(300)
…何もせずにただ、ウェイト(待ち時間)を入れる
EndIf
…上の条件の終わり
EndFor
…繰り返しの終わり
'
GraphicsWindow.DrawText(100,100,"score : "+score)
…座標(100,100)にスコアーを表示
If score=100 Then
…もし、スコアーが100なら、以下のことを実行せよ
Sound.PlayChimes()
…チャイムを鳴らす
GraphicsWindow.DrawText(200,200,"*** イェー(^_^)v、パーフェクト!! ***")
…座標(200,200)に文を表示
Else
…上の条件以外なら、以下を実行せよ
GraphicsWindow.DrawText(200,200,"*** 残念! ***")
…座標(200,200)に文を表示
EndIf
…上の条件終わり
10行目の、Sound.PlayMusic("o7c8")は音楽を奏でることができるはずなんですが、ウェブ上ではだめでした。(pc上ならOKです)
21行目から27行目までは、ラケットに当たったか外れたかの判定をしています。If文の中の、Andは2つの条件を同時に満たした場合、といった意味になります。この辺が一番難しいです。
25行目のElseはIF文の条件を満たさない場合の処理、といった意味です。
まったく初めてのかたは、まず付属のチュートリアルをやって(分からない部分もあるでしょうが我慢して)最低限の使い方を憶えてください。その後Webなどに出ているプログラムをとにかく打ち込んで、色々数値などをいじってみると段々分かってくると思います。
実は私も、この辺がいっぱいいっぱいで、これ以上難しくなるとあやしくなってきます(汗)。
posted by Shindo Izo at 16:02|
Comment(0)
|
プログラム練習
|