HSPポータル
サイトマップ お問い合わせ


HSPTV!掲示板


未解決 解決 停止 削除要請

2010
0211
息子ボーリングのゲーム5解決


息子

リンク

2010/2/11(Thu) 19:25:56|NO.30528

ボーリングのゲームを作っています。
ボーリングのピン◎とボーリングの球●は、
mesで表示していて、ボーリングの球●は、
posとloopでピンに向かって動かしています。
この時ボーリングのピン◎と球●が
少しでも触れた時に、ピン◎が消えるように
したいのですが、なかなかうまくいきません。
なにかよい方法はないでしょうか?



この記事に返信する


しきり2

リンク

2010/2/11(Thu) 19:31:22|NO.30530

あなたがいってるのは、ボーリングのピンはmesの◎で
pos と loopを使ってボーリンぐ作ってください。

と同じことですよ。

せめてそのスクリプトぐらいはのせましょう。



息子

リンク

2010/2/11(Thu) 19:42:02|NO.30531

書くと長いのですが
こんな感じです。

;
;←→で↑移動
;スペースキーでボールを投げる
;
*x
b=1
*d
if b=2 :goto *df
b=1+cnt
if b>1 :b=2
repeat
cls
a="◎
u="
g1=a:g2=a:g3=a:g4=a:g5=a:g6=a:g7=a:g8=a:g9=a:g10=a
color 0,0,255
pos 90,150
mes g1
pos 80,135
mes g2
pos 100,135
mes g3
pos 90,120
mes g4
pos 70,120
mes g5
pos 110,120
mes g6
pos 80,105
mes g7
pos 100,105
mes g8
pos 60,105
mes g9
pos 120,105
mes g10
font "",100
pos 200,0
color 0,0,0
mes ""+b+"回目"
font "",20
stick kv,5
if kv=1 :va=va-5
if kv=4 :va=va+5
if va>145 :va=145
if va<0 :va=0
pos 20+va,470
color 0,0,0
mes "↑
wa=va
color 0,0,0
boxf 0,0,200,80
color 0,0,255
boxf 0,500,10,80
boxf 190,81,200.0
stick ky,16
if ky=16 :goto *c
wait 5
loop
stop
*c
repeat 25
cls
color 0,0,255
pos 90,150
mes g1
pos 80,135
mes g2
pos 100,135
mes g3
pos 90,120
mes g4
pos 70,120
mes g5
pos 110,120
mes g6
pos 80,105
mes g7
pos 100,105
mes g8
pos 60,105
mes g9
pos 120,105
mes g10
color 0,0,0
boxf 0,0,200,80
color 0,0,255
boxf 0,500,10,80
boxf 190,81,200.0
pos 20+wa,510-cnt*20
color 0,0,0
mes "●
color 0,0,0
font "",100
pos 200,0
mes ""+b+"回目"
wait 5
loop
goto *d
*df
cls
mes "終了



木村

リンク

2010/2/11(Thu) 19:49:43|NO.30533

 ボーリング球と各ピンとの距離からピンの破砕判定をしてやれば良いかと思います。以下は
その為の計算です。

 初期条件としてボーリング球とピンは上方から見下ろせば完璧な円だと仮定し、ボーリング
球の半径をR[pixel]、ピンの直径をS[pixel]とします。
 あるボーリング球Cが座標(Xc,Yc)に存在し、あるピンPが座標(Xp,Yp)に存在するとした場合、
両者の距離Lcpは

Lcp=sqrt((Xp-Xc)*(Xp-Xc)+(Yp-Yc)*(Yp-Yc))
 と求められます。次はこのLcpの値がピンの破砕判定にどう影響するかを考えます。

 まず両者の距離が無限大に離れているとします。当然、ボーリング球がピンをはじく事は
できません。
 両者を近付けてみます。ある程度近付けると両者は接触します。この時の距離Lcontactは

Lcontact=R+S
 と求められます。
 更に近付くと、ボーリング球にピンがめり込んだ状態になります。当然、こんな状態に
なればボーリング球はピンをはじいてしまいます。
 つまり、ボーリング球とピンの距離Lcpがボーリング球とピンの接触距離Lcontactより
短くなった時にボーリング球はピンを破砕するのです。式にすれば

if Lcontact>Lcp :;ここにピンの消滅判定が入る。 ;⇒ if R+S<sqrt((Xp-Xc)*(Xp-Xc)+(Yp-Yc)*(Yp-Yc)) :;消滅判定
 後はこの計算式を毎ループ、全てのピンに与えてやれば良いと思われます。
 長文でしたが、息子さんの参考になれば幸いです。



息子

リンク

2010/2/11(Thu) 20:03:35|NO.30534

ちょっと難しそうですが、がんばってみます。
大変ありがとうございました。



息子

リンク

2010/2/11(Thu) 22:19:42|NO.30536

おかげさまでうまくいきました。
ありがとうございました。



ONION software Copyright 1997-2023(c) All rights reserved.