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


HSPTV!掲示板


未解決 解決 停止 削除要請

2010
0608
雪だるまHSP3.2 ブロック崩し5解決


雪だるま

リンク

2010/6/8(Tue) 14:49:02|NO.33135

最新HSP3.2 プログラミング入門のサンプルスクリプトの5-8 ブロック崩しでは
一度ボールが落ちたらすぐにゲームオーバになってしまうので復活させたいのですが
どの様に編集すればよいでしょうか?
いろいろ探したのですがわかりませんでした。



この記事に返信する


荒河

リンク

2010/6/8(Tue) 16:08:19|NO.33136

復活する時の動作を細かく分解していきHSPの命令に置き換えてください。

ヒント
1.残機の処理

2.ボールとバーの位置の処理

3.待機



SYAM

リンク

2010/6/10(Thu) 10:56:08|NO.33187

改造に至るまでの考え方も一緒に示します。よく読んでみてね。

まず、ゲームオーバーの処理を探します。
ゲームオーバーのときに出てくるボタンを配置しているのは、*gameover ラベルのあたり。この辺がゲームオーバーの処理のようです。
で、ラベルになってるってことはそこにジャンプする命令がどこかにあるはず。
検索すると、「ボール : Y方向の移動」ってコメントが入っているところに

if bly>=(y2-blsize) : goto *gameover
なんてものがみつかりました。ボールのY座標がある程度大きくなる(つまり、下に下がる)とゲームオーバーの処理にジャンプするわけですから、ここのようですね。
試しに、ここでゲームオーバーの処理にジャンプしないで、代わりにボールのY座標が変化するようにしてみましょう。

;if bly>=(y2-blsize) : goto *gameover if bly>=(y2-blsize) : bly = y2/2

ゲームオーバーにはならなくなりました。どうやら、ここを改造すればよさそうです。
改造の内容は、ゲームオーバーにする代わりに、

 ・残りボール数(あらかじめ最初に変数を用意して代入しておく)から1減らす
 ・ボールの位置を再設定
 ・ボールのスピードを再設定
 ・マウスのクリックを待ってから再開する

…とでもしておけば、お望みの動作をするようになるはずです。



SYAM

リンク

2010/6/10(Thu) 10:57:14|NO.33188

…ところで そのスクリプトって、ここに載せていいものだったのかな…?
書籍に収録されてるサンプルですよね。



雪だるま

リンク

2010/6/10(Thu) 16:52:08|NO.33192

ご回答ありがとうございます。
スクリプトを掲載した方が具体的な回答が得られると感じたのですが
著作権的に問題ありそうなので削除しました。
回答していただいた通りに一度試してみます。



雪だるま

リンク

2010/6/17(Thu) 09:18:46|NO.33297

ソースを編集して解決しました。
ありがとうございます。



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