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


HSPTV!掲示板


未解決 解決 停止 削除要請

2021
0910
みそ汁にあんこ表示する画像の抽選3解決


みそ汁にあんこ

リンク

2021/9/10(Fri) 11:28:43|NO.93827

3種類の画像(A,B,C)を合計16回表示します。
順序はランダムで、Aは4回、Bは4回、Cは8回表示されるようなプログラムを作ろうとしてみました。

repeat 3 // 画像読み込み buffer cnt+10 picload "A\\"+str(cnt)+".jpg" pic_x(cnt) = ginfo_winx pic_y(cnt) = ginfo_winy loop // 乱数割り当て dim a,16 dim x,16 a = rnd(16) #define tex "終了です" screen 1, ginfo_dispx, ginfo_dispy foreach a x(cnt) = a(cnt) if (x(cnt) <= 3) { gosub *gazouA } else : if (x(cnt) >= 4 and x(cnt) <= 7) { gosub *gazouB } else { gosub *gazouC } repeat getkey Ent, 13 if Ent = 1 : break await 10 loop cls 0 await 1500 loop goto *owari *gazouA pos ginfo_dispx/2-pic_x/2, ginfo_dispy/2-pic_y/2 gzoom 800, 427, 10, 0, 0, pic_x, pic_y, 0 return *gazouB pos ginfo_dispx/2-pic_x/2, ginfo_dispy/2-pic_y/2 gzoom 800, 427, 11, 0, 0, pic_x, pic_y, 0 return *gazouC pos ginfo_dispx/2-pic_x/2, ginfo_dispy/2-pic_y/2 gzoom 800, 427, 12, 0, 0, pic_x, pic_y, 0 return *owari cls 0 font msGothic, 80, 1 pos ginfo_dispx/2-(strlen(tex)*(80/2))/2, ginfo_dispy/2 mes tex stop
上記の通りにしてみたのですが、2回目以降同じ画像が表示され続けてしまいます。
どこが問題なのでしょうか。

もっとスマートな方法があれば、そちらも教えていただけると喜びます。

よろしくお願いいたします。



この記事に返信する


トノ

リンク

2021/9/10(Fri) 13:51:58|NO.93828


a = rnd(16)
というのは、1 個の数値を配列 a の最初の要素に代入しているだけで、
a の他の要素には何も代入されないのではないかと。



沢渡

リンク

2021/9/10(Fri) 15:00:36|NO.93829

「"0"というクジが4枚、"1"というクジが4枚、"2"というクジが8枚」という合計16枚のクジを作り、
その順番をシャッフルした上で、上から順にクジを引いてゆけば良いのでは。

#define swap(%1,%2) _swap_=%1 : %1=%2 : %2=_swap_ //「swap p1,p2」でp1とp2で指定した変数の中身を入れ替える repeat 3 // 画像読み込み //画像ファイルがないので仮の画像を作ります buffer cnt+10,800,427 if cnt=0 : color 255,0,0 : else : if cnt=1 : color 0,255,0 : else : color 0,0,255 boxf //buffer cnt+10 //picload "A\\"+str(cnt)+".jpg" pic_x(cnt) = ginfo_sx pic_y(cnt) = ginfo_sy loop randomize // 乱数割り当て dim a,16 a=0,0,0,0,1,1,1,1,2,2,2,2,2,2,2,2 //「くじ」をセット //くじをシャッフルする repeat 16 z=rnd(16-cnt)+cnt swap a(cnt),a(z) loop #define tex "終了です" screen 1, ginfo_dispx, ginfo_dispy foreach a pos (ginfo_dispx-800)/2,(ginfo_dispy-427)/2 gzoom 800, 427, 10+a(cnt), 0, 0, pic_x(a(cnt)), pic_y(a(cnt)), 0 repeat getkey Ent, 13 if Ent = 1 : break await 10 loop cls 0 await 1500 loop cls 0 font msGothic, 80, 1 pos ginfo_dispx/2-(strlen(tex)*(80/2))/2, ginfo_dispy/2 mes tex stop



みそ汁にあんこ

リンク

2021/9/10(Fri) 18:39:42|NO.93832

トノ様、沢渡様
お二方とも回答ありがとうございます。

変数に代入するところから失敗していたのですね、、無念です。
くじをシャッフルして引くやり方がいい感じに思えたので参考にさせていただきます。

ありがとうございました。



記事削除

記事NO.パスワード
(質問が解決したスレッドは他の利用者に活用してもらうため、削除しないようお願いします)

NO.93827への返信

マスコット

好きなマスコットを選んでください。

名前

e-mail
HOME
  1. 初めて利用する方は、HSP3掲示板の使い方をお読みください。
  2. 不要部分の多い長いスクリプトの投稿は ご遠慮ください。
  3. 書き込みは自動改行されません。適度に改行を入れてください。
  4. スクリプトは小文字の<pre>〜</pre>で囲むと見やすく表示できます。

削除用パスワード

解決したら質問者本人がここをチェックしてください。

エラー発生時、再送信すると二重送信になることがあります。
回答が得られたら、お礼書き込み時に[解決]チェックしてください。
SPAM防止のためURLから始まる文章は投稿できません。
SPAM防止のため英文字のみの本文を投稿することはできません。

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