- メインは、「発射」ボタンです。 -
Window1.PushButton1.Action:
Sub Action()
dim dt as double
dim ex as double
dim ey , ytop , xleft as double
dim ybottom , xright as double
dim cw,ch as integer
cw=canvas1.width
ch=canvas1.height
canvas1.graphics.foreColor=backcolor
canvas1.graphics.fillrect 0,0,cw,ch
canvas1.graphics.foreColor=rgb(0,0,0)
//
//「dt」は微分方方程式を計算するための、刻み値。
dt=.01
// 壁との衝突での、はねかえりの係数。1 以下です。
ex=.9
ey=.8
// 出発点の位置
x=0
y=0
// 水平方向の加速度「ax」、鉛直方向の加速度「ay」
//「ay」は重力です。
//「ax」は電車の中での運動などで使います。
ax=0
ay=-9.8
// 左右の壁の位置
xleft=0
xright=cw
// 上下の壁の位置
ybottom=0
ytop=ch
// 出発点の速度
vx=100
vy=300
//
// 床の位置ではなく y>0
// 床に対する速度が1以上 (vy<-1or vy>1)
// の間はwhile とwendの間の命令を繰り返し実行する
//
while y>0 or (vy<-1or vy>1)
//上下の壁ではねかえるときの処理
if yytop then
y=ytop
vy=-ey*vy
end if
// 左右の壁ではねかえるときの処理
if x>xright then
x=xright
vx=-ex*vx
end if
if x>xleft then
x=xleft
vx=-ex*vx
end if
//
// vxはx方向の速度、vyはy方向の速度、
// axはx方向の加速度、ayはy方向の加速度、
// dtは微少時間です。
// ここが心臓部分です
//
x=x+vx*dt
y=y+vy*dt
vx=vx+ax*dt
vy=vy+ay*dt
canvas1.graphics.drawrect x,ytop-y,2,2
//
//「userCancelled」は「コマンド」+「ピリオド」で
// 実行を止めるためのものです。
// ヘルメットと同じく事故が起こったときに
// ありがたさがわかります。
if userCancelled then
exit
end if
wend
End Sub
今回の「ボール投げ」の ソースプログラムです。基本サンプルとゲームのサンプルです。
プロジェクトファイルのみです。REALbasicの最新バージョンが必要です。30 kバイト
ソースコードについての質問やご意見がありましたら以下のアドレスまでご連絡下さい。
koko-@mx2.tiki.ne.jp