- ベストアンサー
Basicのプログラミングについて… (game)
箱の上から自然に落ちるようにするにはどうすればよいのでしょうか? SET bitmap SIZE 500,500 SET WINDOW 0,10000,10000,0 LET x=5000 LET y=5000 LET jsw=0 DO UNTIL getkeystate(13)<0 PLOT LINES:0,5000+110;10000,5000+110 PLOT LINES:6000,4000;7000,4000 PLOT LINES:6000,4000;6000,5000+110 PLOT LINES:7000,4000;7000,5000+110 SET AREA COLOR "white" DRAW disk WITH SCALE(100)*SHIFT(x,y) IF getkeystate(37)<0 THEN LET x=x-50 IF getkeystate(39)<0 THEN LET x=x+50 IF x<0 THEN LET x=0 IF x>10000 THEN LET x=10000 IF getkeystate(38)<0 AND jsw=0 THEN LET jsw=1 LET i=-SQR(2500) END IF IF jsw=1 THEN LET y=i^2+2500 LET i=i+1 IF i>SQR(2500) THEN LET jsw=0 end if if i>0 then if 6000<x and x<7000 then if 4000-140<=y THEN LET jsw=0 end if end if end if if i>0 then if 6000>x then LET y=i^2+2400 IF i>SQR(2500) THEN LET jsw=0 end if end if SET AREA COLOR "black" DRAW disk WITH SCALE(100)*SHIFT(x,y) WAIT DELAY 0.01 LOOP END
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
- ベストアンサー
速度係数と 加速度を個別に用意する必要がある。 g = 1 v = 0 として開始し vの分だけ下に落とす(y=y+v) 衝突面に到着(又は通過)するまで下に落とした後に v = v + g で落下速度を増加させる。(本来はループ内ではなく時間で増加。等間隔でループしているという前提) 衝突したら vは0になり次に落下するまでは0を維持する 係数gを操作する事によって重力を調整できる。 副産物としてこのvによって衝突エネルギーを算出できる。
その他の回答 (3)
- tetsumyi
- ベストアンサー率25% (1946/7535)
これは十進BASICですよね? 向こうの掲示板で聞けば教えてくれますよ。 もう少しどの部分で何がしたいのか書き加えると説明しやすくなります。
- Oh-Orange
- ベストアンサー率63% (854/1345)
★『重力加速度』って知っていますか? ・私もソースを見ていません。というより『何』?→上手く動作しなかったのですか? ・回答者 No.1 さんと同じく『加速度』という概念をプログラミングに取り入れれば、 かなり、自然に落ちるように出来ると思います。 ・『重力加速度』とは、空から地上に向けて『物体』は徐々に速度を増して『落下』します。 しかし、ある一定の速度に到達すると『加速』する量が安定(空気抵抗)します。 ・このような『落下』を自然(物理的)に再現するにはちょっとだけ『物理法則』を理解 する必要があります。少なくとも『加速度』という概念をプログラミングに取り入れるべき と考える必要があります。 ・『重力加速度』や『加速度』については『物理』カテゴリで質問してみましょう。 ・プログラミング的には、だんだん落ちる速度を加速していけばいいです。→難しい物理の 計算式を利用しなくても、箱から落ちる速度を『1』『2』『3』『3』『3』…という要領で 下方向に移動させれば良いでしょう。→移動量を変化させるだけです。 ・ゲームを作っているようなので、Y座標の移動量を加速的に下方向へ『値』を増やしてみたら どうでしょうか? ・移動量は『正比例』ではなくて『反比例』=指数的にする事(加速度)の概念が重要です。 ・以上。おわり。→参考にして下さい。
ソース見て無くてごめん とりあえず加速度の概念を採用したらどうだろう。 現実の世界ではgの分だけ落下速度が増えるというアレ つまり落下する処理をする度に落下速度が上がるというやつ 同じ方法で飛び上がって落ちる時にもその係数が使える。
お礼
それをプログラミングでやったらどんな感じになりますかね?
お礼
それってぼくのプログラミングに組めますかね???