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


HSPTV!掲示板


未解決 解決 停止 削除要請

2022
0116
す²変数が回らない10解決


す²

リンク

2022/1/16(Sun) 00:27:43|NO.95070

screen 0,500,500

onesrot = "1"
eightsrot ="19"

*srotsta
onesrot = eightsrot
twosrot = onesrot
threesrot = twosrot
foursrot = threesrot
fivesrot = foursrot
sixsrot = fivesrot
sevensrot = sixsrot
eigftsrot = sevensrot

cls
pos 20,200
font "",50
mes onesrot
pos 120,200
mes twosrot
pos 220,200
mes threesrot

button "回す",*srotsta

スロットを作ろうと思ったのですが、うまく数が回りません。
(ボタンを押すごとに1や19の表示がずれてくようにしたかった)



この記事に返信する


zrs90(5さい)

リンク

2022/1/16(Sun) 01:19:56|NO.95071

スロットマシンでしょうか?

外部の検索から
hsp スロットマシン で検索。

一応、ソースらしい物があります。
ご希望に添えなかったら、申し訳ないです。



す²

リンク

2022/1/16(Sun) 01:23:24|NO.95072

どちらかというと変数でやりたいんですよねぇ,,,



あいそとーぷ

リンク

2022/1/16(Sun) 01:49:55|NO.95073

なんかいろいろ変えちゃったけど、、

screen 0,500,500 dim slot ,3 randomize *srotsta cls font "",50 repeat 3 slot(cnt) = rnd(9) + 1 pos (20+cnt*100),200 mes slot(cnt) loop button "回す",*srotsta stop
こんな感じってこと?



アキアキノヒロロ

リンク

2022/1/16(Sun) 06:41:01|NO.95074

zrs90(5さい) さんご指摘先ソース、ちょっと本格的すぎるようなので、
あいそとーぷ さんのものをお借りして、ちょこっと変えてみました。すいません。

screen 0,500,500 dim slot ,3 randomize *srot pos (20+200),200+50 button "回す",*srotsta button "止める",*srotstop stop *srotsta font "",50 color 255, 255, 255 boxf 20, 200, 20+200+50, 200+50 repeat 3 slot(cnt) = rnd(9) + 1 pos (20+cnt*100),200 color 0, 0, 0 mes slot(cnt) a=slot(0) : b=slot(1) : c=slot(2) loop await 100 goto *srotsta *srotstop dialog ""+slot(0)+" / "+slot(1)+" / "+slot(2),0 stop



zrs90(5さい)

リンク

2022/1/16(Sun) 09:48:35|NO.95075

あいそとーぶ さん、アキアキノヒロロ さん
ありがとうございます。助かりました。

スレッド主さんの、希望に添えなかったので...
当方の勝手な思い込みで、失礼しました。

(※スマホで、2乗の変換ってどうやるのかな...出てこない。)



す²

リンク

2022/1/16(Sun) 11:35:23|NO.95077

ええと、スロットの描画とかの設計ははあいそとーぶ さんやアキアキノヒロロ さん
ので素晴らしいのですが、変数を規則正しく(7の次は星が来て星の次は○が来るみたいな感じで)
やりたいんですよね



す²

リンク

2022/1/16(Sun) 11:36:46|NO.95078

なんというか、いろいろ注文が多くてすみません。



とあるプログラマ

リンク

2022/1/16(Sun) 12:35:07|NO.95079

横からきて全然違うスクリプト載せるので混乱したら申し訳ありません。


変数を規則正しく繰り返す、すなわち順繰り無限ループするには+1して余りを求めるのが便利です。
余りを使うと+1して数値が最大数に到達したときに完全に割り切れて余りが0になり最初に戻るので、if 変数 = 最大数 : 変数=0 みたいなことをしなくてすみます。

例えば全6種で0〜5の数値を繰り返すには、(変数 + 1) \ 6 とします。

(HSP3の剰余は円マーク(バックスラッシュ)で求めます)


数値の代わりに文字列を表示したい場合は、文字列型配列変数に文字をあらかじめ代入しておいて要素数を指定して取り出すのが良いでしょう。
どの要素を取り出すのかを保存した変数を上記の無限ループで設定すれば順繰りのスロットが作れます。


追記:コードにミスがあったので投稿し直しました


// 柄の個数 #define MAXPATTERN 6 randomize screen 0 // 柄を文字列型配列変数にとっておく sdim pattern, 64, MAXPATTERN pattern(0) = "7" pattern(1) = "★" pattern(2) = "〇" pattern(3) = "§" pattern(4) = "※" pattern(5) = "∀" dim btnID, 3 dim isStop, 3 dim btnNum, 3 // 最初はランダム repeat 3 btnNum(cnt) = rnd(MAXPATTERN) loop objsize 100, 30 pos 70, 200 button gosub "止める", *stopbtn btnID(0) = stat pos 270, 200 button gosub "止める", *stopbtn btnID(1) = stat pos 470, 200 button gosub "止める", *stopbtn btnID(2) = stat pos (ginfo_winx - 100) / 2, 300 button gosub "スタート", *startbtn btnStart = stat // 開始時の処理 gosub *startbtn // メインループ *main redraw 0 color 255, 255, 255 boxf color 0, 0, 0 font MSgothic, 30, 1 // スロットの数だけ repeat 3 // 順番に無限ループするには、+1してから最大数で割った余りで求められます // この場合は +1した数が MAXPATTERN = 6 になると 6÷6…0 で余りが0になって最初に戻ります if (isStop(cnt) == 0) : btnNum(cnt) = (btnNum(cnt) + 1) \ MAXPATTERN pos 110 + (cnt * 200), 30 mes pattern(btnNum(cnt)) loop redraw 1 await 500 goto *main stop // ------------------------------ // 各停止ボタン // ------------------------------ *stopbtn // buttonからのジャンプはstatにボタンIDが入る // statの値は命令を実行するごとに変わるので、初めに保存しておくのが好ましい id = stat repeat 3 if (id == btnID(cnt)) { isStop(cnt) = 1 objenable btnID(cnt), 0 // 押せないようにする break //←looplevが下がらないのでreturnはダメ } loop if (isStop(0) == 1 && isStop(1) == 1 && isStop(2) == 1) : gosub *allstopped return // ------------------------------ // 全部止まったとき // ------------------------------ *allstopped dialog "結果\n" + pattern(btnNum(0)) + " " + pattern(btnNum(1)) + " " + pattern(btnNum(2)) + "" objenable btnStart, 1 return // ------------------------------ // スタートボタン // ------------------------------ *startbtn // 停止フラグリセット repeat 3 isStop(cnt) = 0 objenable btnID(cnt), 1 loop objenable btnStart, 0 return



す²

リンク

2022/1/16(Sun) 13:21:50|NO.95081

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



zrs90(5さい)

リンク

2022/1/16(Sun) 13:53:09|NO.95088

とあるプログラマ さん へ

こんな、手法があるんですね。
先日の『長すぎる名前の、謎の海外フォント』の件も
含め、感謝しております。ありがとうございました。



記事削除

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

NO.95070への返信

マスコット

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

名前

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

削除用パスワード

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

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

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