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


HSPTV!掲示板


未解決 解決 停止 削除要請

2009
0122
ブロック何種類かのアイテムをランダムに落とすやり方について2未解決


ブロック

リンク

2009/1/22(Thu) 22:42:56|NO.22993

何種類かのアイテムをランダムに落としていきラケットに当たったら
そのアイテムの効果が出るという処理を作りたいのですが
なかなかうまく出来ないのです。
もし良かったら教えていただけませんか?

よろしくお願いします



http://cid-859a75f8c21f69d6.skydrive.live.com/self.aspx/HSP3/geme.zip



この記事に返信する


SYAM

リンク

2009/1/23(Fri) 00:48:09|NO.22994

「うまくできない」では何の回答もできません。
どうなってほしくて実際にはどうなってしまうのか が わかりませんから、何が問題なのかがわからないです。
つーかスクリプトの説明もないので、これは(万が一いたとしたら)回答者が全部自分でスクリプトの解析からしないといけません。

というか、前回投稿されたときにも書きましたが、
 丸 投 げ は よ く な い で す。


※ついでに、
gosubのジャンプ先からreturnしてないって指摘もしたと思いますがそのままになっていますね。

※もひとつついでに、
青ブロックに横から当たると一発で消えてボールが変な方向に反射するバグがあるようですが…!



SYAM

リンク

2009/1/24(Sat) 16:47:30|NO.23023

答えようのない質問の仕方をしてしまったんだと、どうか理解してください。
やりかたをおしえてください、では、あなたがいったいどこを「わからない」のか、コッチにも判らないんです。
疑問点が判らない以上、何を答えていいかも判りません。


あんまりダメ出しばかりだと萎えるでしょうしすこしだけサンプル出します。

お望みの機能はまったく満たしていませんが、処理の流れとしてはじゅうぶんなはずです。
仕組みはむずかしくありません。
先に見せていただいたスクリプトを組めるくらいの能力があれば、このサンプルでやっていることを自分のスクリプトへの組み込みも簡単なはずです。
アイテムの出現条件は全然違いますし、アイテムに種類もありませんし、アイテムとパッドとの当たり判定も取っていませんが、それらを追加することも難しくはないと思います。


dim item_x,16:repeat 16:item_x(cnt)=-1:loop dim item_y,16 ball_x=20:ball_y=40 ball_vx=1:ball_vy=1 screen 0,160,120,0:cls 4 font msgothic,8 // // ボールを動かしつつ、アイテムを動かすサブルーチンを呼び出す。 // もしボールが(縦方向について)画面の真中を通ったらそこにアイテムを // 出現させる。 // repeat redraw 0 // ボールの移動処理 color 0,0,0 pos ball_x-4,ball_y-4 : mes "●" ball_x += ball_vx ball_y += ball_vy if((ball_x>=ginfo_winx)|(ball_x<=0)):ball_vx*=-1 if((ball_y>=ginfo_winy)|(ball_y<=0)):ball_vy*=-1 color 255,255,255 pos ball_x-4,ball_y-4 : mes "●" // アイテム出現条件を満たしていればアイテム出現サブルーチンを呼び出す。 if(ball_y=ginfo_winy/2):gosub *put_item // アイテムの移動サブルーチンを呼び出す。 gosub *move_item await 1 redraw 1 loop // // 16個のアイテムうち、画面内にあるものだけを動かす. // もしそれが地面に当たっていたら効果発動。 // *move_item repeat 16 if(item_x(cnt)>=0) { color 0,0,0 pos item_x(cnt)-4,item_y(cnt)-4 : mes "□" item_y(cnt)+=1 if (item_y(cnt)>ginfo_winy){ item_x(cnt)=-1 gosub *drop_item } color 0,255,255 pos item_x(cnt)-4,item_y(cnt)-4 : mes "□" } loop return // // 16個のアイテムのうち、画面外にあるものを 1 つ // 画面内(ボールの場所)に持ってくる。 // *put_item repeat 16 if(item_x(cnt)<0) { item_x(cnt) = ball_x item_y(cnt) = ball_y break } loop return // // ボールのスピードを上げたり下げたりする。 // *drop_item if(abs(ball_vx)<4){ ball_vx*=2: }else{ ball_vx/=2: } return



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