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


HSPTV!掲示板


未解決 解決 停止 削除要請

2011
0806
takrepeat〜loopの間の処理落ちします2未解決


tak

リンク

2011/8/6(Sat) 00:25:57|NO.40413

HSP初心者です。
ボタンを押すと音が鳴る音ゲーのようなスクリプトを作っているのですが
repeat〜loopの間の命令が長くキーを押したときの反応が遅かったり
ウィンドウを閉じようとすると応答なしになってしまいます。
何かrepeat〜loopの間の処理を軽くできないでしょうか?
おねがいします。


解凍してその中のotoge.hspが本体です。
http://www1.axfc.net/uploader/He/so/334775
DLパスは半角でhspです。



この記事に返信する


晩御飯

リンク

2011/8/6(Sat) 01:27:43|NO.40414

必ずawait命令をループ中に入れて下さい。これはみんなとの大事な約束です。
必ずインデント(字下げ)もして下さい。これもみんなとの大事な約束です。
それとredraw命令はループの最初と最後の一回づつで良かったと思います。

もっと言うなら同じような処理はループなどでまとめた方が良いのですが
それは勉強しているうちにわかってくるでしょうきっと。



木村

リンク

2011/8/8(Mon) 03:55:05|NO.40451

 確かにcntや配列変数を使えば文量が抑えれそうですね。繰り返し処理でスクリプトを圧縮するとしたら、こんな感じでしょうか。以下は一例

randomize screen 0,300,300 color 0,0,0 boxf pos 125,135 objsize 50,30 button "スタート",*a1 stop *a1 cls color 0,0,0 boxf repeat 9, 1 celload ""+cnt+".jpg", cnt celload ""+cnt+cnt+".jpg", cnt*11 loop repeat 6, 1 mmload "ギター"+cnt+".wav", cnt-1, 0 mmload "ドラム"+cnt+".wav", cnt+7, 0 loop mmload "シンバル.wav",6,0 mmload "ドラム.wav",7,0 goto *a2 *a2 repeat 9 pos (cnt\3)*100, 200-(cnt/3)*100 celput cnt+1 loop dim pre_br, 9 sound_buffer = 7, 6, 8, 9, -1, 10, 11, 12, 13 redraw_flag = 0 repeat wait 10 redraw_flag = 0 repeat 9 getkey br1, 49+cnt //キーボード最上段の数字 getkey br2, 97+cnt //電卓テンキーの数字 if pre_br(cnt) = (br1|br2) : continue pre_br(cnt) = (br1|br2) redraw_flag = 1 pos (cnt\3)*100, 200-(cnt/3)*100 if (br1|br2) = 0 { celput cnt+1 continue } celput (cnt+1)*11 if sound_buffer(cnt) = -1 { mmplay rnd(6) continue } mmplay sound_buffer(cnt) loop if redraw_flag : redraw 1 : redraw 0 loop stop



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