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


HSPTV!掲示板


未解決 解決 停止 削除要請

2015
0318
mirage17hsp3Dishでミニゲームを作成したが、移動する魔法陣をクリックしたらスコアが伸びるようにするには?4解決


mirage17

リンク

2015/3/18(Wed) 21:10:40|NO.67968

ソースやファイル(画像、実行ファイル含む)のZIPファイルは下記にあります。
http://beauty.geocities.jp/seijings137/mirage17/magineo.zip

タイトル通りHSP3dishのミニゲームを作成中ですが、ゲームをスタート
させて、移動する魔法陣をクリックしても、きっちりスコアが増えてくれません。
どうすれば、マウスと魔法陣が重なっている時にクリックすれば、スコアが伸びる
ようになるのか、教えてください。HSP3dishの書籍などを参考にして、作成
しています。画像は、自作したマジカルクライシスから使っています。
プログラムの根本的な処理の仕方や、awaitなどの使い方にも問題はあると思います。
皆様教えてください。よろしくお願いします。

ソースは下記から。

; ; キャラクター表示 ; #include "hsp3dish.as" #packopt xsize 320 #packopt ysize 480 #pack "backd.png" #pack "magicri.png" #pack "shot.png" title "magical crisis neo" randomize *title_start cls ; 画面の初期化を行なう celload "magicri.png",1 ; 素材読み込み pos 60,300 ; 座標指定 objsize 200,30 ; ボタンのサイズを指定 button "START",*start ; ボタンを設置 *title_loop redraw 0 ; 描画開始 pos 0,0:gcopy 1,0,0,320,480 ; 背景画像を表示 gosub *putscore ; スコア表示 redraw 1 ; 描画終了 await 16 ; 待ち時間(1/60秒) goto *title_loop ; ループさせる *start cls ; 画面の初期化を行なう celload "shot.png",1 ; 素材読み込み celload "backd.png",2; 素材読み込み celdiv 1,128,128 ; キャラクターのサイズを指定 mx=0:my=0:key=0 clx=-999:cly=-999 ; クリック座標を初期化 *main redraw 0 ; 描画開始 pos 0,0:gcopy 2,0,0,320,480 ; 背景画像を表示 //color 0,255,0:boxf ; 画面クリア gosub *putscore ; スコア表示 gosub *maction ; 敵行動ルーチン stick key if key&256 { //clx=mousex ; 表示X座標を設定 //cly=mousey ; 表示Y座標を設定 // mmplay 1 ; サウンド再生 if ((mousex>=mx) && (mousex<mx+128)) && ((mousey>=my) && (mousey<my+128)){ score++ ; スコア表示 } } // pos 128,208 ; 表示座標を指定 gmode 2,128,128 celput 1,0 ; キャラクターを表示 redraw 1 ; 描画終了 await 800 ; 待ち時間(0.8秒) goto *main ; ループさせる *putscore ; スコア表示を行なう ; color 0,0,255 pos 0,0:mes "SCORE "+score return *maction ; 敵行動ルーチン ; mx=rnd(320-64):my=rnd(480-64) //await 300 pos mx,my return



この記事に返信する


窓月らら

リンク

2015/3/18(Wed) 21:54:38|NO.67972

await 800 ←これが間違ってます。
これでは敵出現の間隔でループが止まってしまい、キー入力が判定できません。
ループは基本1/60秒で回して、出現間隔などは別のカウンタを使って処理します。

; ; キャラクター表示 ; #include "hsp3dish.as" #packopt xsize 320 #packopt ysize 480 #pack "backd.png" #pack "magicri.png" #pack "shot.png" title "magical crisis neo" randomize *title_start cls ; 画面の初期化を行なう celload "magicri.png",1 ; 素材読み込み pos 60,300 ; 座標指定 objsize 200,30 ; ボタンのサイズを指定 button "START",*start ; ボタンを設置 *title_loop redraw 0 ; 描画開始 pos 0,0:gcopy 1,0,0,320,480 ; 背景画像を表示 gosub *putscore ; スコア表示 redraw 1 ; 描画終了 await 16 ; 待ち時間(1/60秒) goto *title_loop ; ループさせる *start cls ; 画面の初期化を行なう celload "shot.png",1 ; 素材読み込み celload "backd.png",2; 素材読み込み celdiv 1,128,128 ; キャラクターのサイズを指定 mx=0:my=0:key=0 clx=-999:cly=-999 ; クリック座標を初期化 c=0 ; カウンタ *main redraw 0 ; 描画開始 pos 0,0:gcopy 2,0,0,320,480 ; 背景画像を表示 //color 0,255,0:boxf ; 画面クリア gosub *putscore ; スコア表示 gosub *maction ; 敵行動ルーチン stick key if key&256 { //clx=mousex ; 表示X座標を設定 //cly=mousey ; 表示Y座標を設定 // mmplay 1 ; サウンド再生 if mousex>=mx & mousex<mx+128 & mousey>=my & mousey<my+128 { score++ ; スコア表示 } } // pos 128,208 ; 表示座標を指定 gmode 2,128,128 celput 1,0 ; キャラクターを表示 redraw 1 ; 描画終了 await 1000/60 ; 待ち時間(1/60秒) goto *main ; ループさせる *putscore ; スコア表示を行なう ; color 0,0,255 pos 0,0:mes "SCORE "+score return *maction ; 敵行動ルーチン ; c++: if c=50 { c=0: mx=rnd(320-64):my=rnd(480-64) } //await 300 pos mx,my return

敵行動ルーチンの部分に書き加えてあります。
また、当たり判定部分のカッコも不要なので削除しました。



暇人

リンク

2015/3/18(Wed) 21:56:51|NO.67973

魔方陣の位置が決定した瞬間にしか判定してない
これじゃ場所を予測して完璧なタイミングでクリックするぐらいしか得点できない

メインループのawaitは16程度にして
*mactionに跳ぶのはメインループ何回かに一回とかにして
*maction内でpos mx,myしてるのを魔方陣描画の直前に配置



mirage17

リンク

2015/3/18(Wed) 22:32:57|NO.67974

窓月ららさん、暇人さん早速のお返事ありがとうございます。
おかげさまで、自分の意図した通りに動いてくれました。
まだまだHSP3Dishは初心者ですが、頑張って良い作品が
できるよう、精進いたします。
 なお、このスレの解決には達していると思いますが、
多くの方のアドバイスも欲しいので、1〜2日後に、解決とさせて
いただきたいと思っています。このソースに肉付けして、
スコアによって違う画像を表示したりできたらいいなあと思っています。(エンディング処理)
明確な回答をいただき、とても感謝しています。ありがとうございました。



mirage17

リンク

2015/3/19(Thu) 16:26:27|NO.67981

解決です。皆様ありがとうございました。



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