ウディタでシミュレーターのようなものを作ってるのですが、停止分岐をどうするかで悩んでいます

コマ表示させてるリール画像をボタンを押せば止めるのは簡単なんですが、3リール同時に動かしてる際に「1,2,3のボタンを押せばそれの対象のリールコマ送りの表示が止まるが、全てのリールが止まるまで一度押したボタンは効かなくなる。すべてのリールが止まると分岐変数がリセットされて、再度3リールともコマ送りが開始される」

というループを組むにはどうしたらいいでしょうか?

順番に左中右の順で止めるやり方は普通にできるんですが、順不同でも大丈夫なように作るとしたらどういう変数を組めばいいですか?

パチスロ関係に精通しててウディタも詳しい人は少ないかと思いますが、ご教授お願いします!


ベストアンサー

par********:

現状のイベント設定がよく分からないので、設定例を書いてもそのまま適用できるかどうかが分かりませんが、基本的には変数「ボタン1押した」と言ったものをボタンごとに用意して、開始時に全ての変数の値を「0」にして、「0」の時にはボタンが押せて、ボタンを押したら「1」にしてリードを停止し、そして3つ全ての変数の値が「1」になったらキー処理を終了して、スロットの結果処理&スロットの再実行を行えば良いでしょう。

■変数操作: CSelf10[リード1パターン]~CSelf12[リード3パターン] = 1 + 0
●ラベル地点「開始」 <<<<<<<<<<<<<<★
■変数操作: CSelf13[ボタン1押した]~CSelf18[移動カウント3] = 0 + 0
■変数操作: CSelf22[押した数] = 0 + 0
■ループ開始
|■キー入力:CSelf20[キーコード]キーボード(100~) [キーコード[102]のみ判定] ( 1キー )
|■キー入力:CSelf21[キーコード2]キーボード(100~) [キーコード[179]のみ判定] ( テンキー1キー )
|■変数操作: CSelf20[キーコード] 下限= CSelf21[キーコード2] + 0
|■条件分岐(変数): 【1】 CSelf20[キーコード] が 1 以上
|-◇分岐: 【1】 [ CSelf20[キーコード] が 1 以上 ]の場合↓
||■条件分岐(変数): 【1】 CSelf13[ボタン1押した] が 0 と同じ
||-◇分岐: 【1】 [ CSelf13[ボタン1押した] が 0 と同じ ]の場合↓
|||■変数操作: CSelf13[ボタン1押した] = 1 + 0
|||■変数操作: CSelf22[押した数] += 1 + 0
|||■サウンド:SE3「スロットボタン音」(0 チャンネル) 再生 / 遅延:0フレーム
|||■
||◇分岐終了◇
||■
|◇分岐終了◇
|■キー入力:CSelf20[キーコード]キーボード(100~) [キーコード[103]のみ判定] ( 2キー )
|■キー入力:CSelf21[キーコード2]キーボード(100~) [キーコード[180]のみ判定] ( テンキー2キー )
|■変数操作: CSelf20[キーコード] 下限= CSelf21[キーコード2] + 0
|■条件分岐(変数): 【1】 CSelf20[キーコード] が 1 以上
|-◇分岐: 【1】 [ CSelf20[キーコード] が 1 以上 ]の場合↓
||■条件分岐(変数): 【1】 CSelf14[ボタン2押した] が 0 と同じ
||-◇分岐: 【1】 [ CSelf14[ボタン2押した] が 0 と同じ ]の場合↓
|||■変数操作: CSelf14[ボタン2押した] = 1 + 0
|||■変数操作: CSelf22[押した数] += 1 + 0
|||■サウンド:SE3「スロットボタン音」(0 チャンネル) 再生 / 遅延:0フレーム
|||■
||◇分岐終了◇
||■
|◇分岐終了◇
|■キー入力:CSelf20[キーコード]キーボード(100~) [キーコード[104]のみ判定] ( 3キー )
|■キー入力:CSelf21[キーコード2]キーボード(100~) [キーコード[181]のみ判定] ( テンキー3キー )
|■変数操作: CSelf20[キーコード] 下限= CSelf21[キーコード2] + 0
|■条件分岐(変数): 【1】 CSelf20[キーコード] が 1 以上
|-◇分岐: 【1】 [ CSelf20[キーコード] が 1 以上 ]の場合↓
||■条件分岐(変数): 【1】 CSelf15[ボタン3押した] が 0 と同じ
||-◇分岐: 【1】 [ CSelf15[ボタン3押した] が 0 と同じ ]の場合↓
|||■変数操作: CSelf15[ボタン3押した] = 1 + 0
|||■変数操作: CSelf22[押した数] += 1 + 0
|||■サウンド:SE3「スロットボタン音」(0 チャンネル) 再生 / 遅延:0フレーム
|||■
||◇分岐終了◇
||■
|◇分岐終了◇
|■条件分岐(変数): 【1】 CSelf22[押した数] が 3 以上
|-◇分岐: 【1】 [ CSelf22[押した数] が 3 以上 ]の場合↓
||■ループ中断
||■
|◇分岐終了◇
|■ウェイト:1 フレーム
|■変数操作: CSelf16[移動カウント1]~CSelf18[移動カウント3] += 1 + 0
|■条件分岐(変数): 【1】 CSelf13[ボタン1押した] が 0 と同じ
|-◇分岐: 【1】 [ CSelf13[ボタン1押した] が 0 と同じ ]の場合↓
||■条件分岐(変数): 【1】 CSelf16[移動カウント1] が 5 以上
||-◇分岐: 【1】 [ CSelf16[移動カウント1] が 5 以上 ]の場合↓
|||■変数操作: CSelf16[移動カウント1] = 0 + 0
|||■変数操作: CSelf10[リード1パターン] += 1 + 0
|||■条件分岐(変数): 【1】 CSelf10[リード1パターン] が 61 以上
|||-◇分岐: 【1】 [ CSelf10[リード1パターン] が 61 以上 ]の場合↓
||||■変数操作: CSelf10[リード1パターン] = 1 + 0
||||■
|||◇分岐終了◇
|||■
||◇分岐終了◇
||■
|◇分岐終了◇
|■条件分岐(変数): 【1】 CSelf14[ボタン2押した] が 0 と同じ
|-◇分岐: 【1】 [ CSelf14[ボタン2押した] が 0 と同じ ]の場合↓
||■条件分岐(変数): 【1】 CSelf17[移動カウント2] が 5 以上
||-◇分岐: 【1】 [ CSelf17[移動カウント2] が 5 以上 ]の場合↓
|||■変数操作: CSelf17[移動カウント2] = 0 + 0
|||■変数操作: CSelf11[リード2パターン] += 1 + 0
|||■条件分岐(変数): 【1】 CSelf11[リード2パターン] が 61 以上
|||-◇分岐: 【1】 [ CSelf11[リード2パターン] が 61 以上 ]の場合↓
||||■変数操作: CSelf11[リード2パターン] = 1 + 0
||||■
|||◇分岐終了◇
|||■
||◇分岐終了◇
||■
|◇分岐終了◇
|■条件分岐(変数): 【1】 CSelf15[ボタン3押した] が 0 と同じ
|-◇分岐: 【1】 [ CSelf15[ボタン3押した] が 0 と同じ ]の場合↓
||■条件分岐(変数): 【1】 CSelf18[移動カウント3] が 5 以上
||-◇分岐: 【1】 [ CSelf18[移動カウント3] が 5 以上 ]の場合↓
|||■変数操作: CSelf18[移動カウント3] = 0 + 0
|||■変数操作: CSelf12[リード3パターン] += 1 + 0
|||■条件分岐(変数): 【1】 CSelf12[リード3パターン] が 61 以上
|||-◇分岐: 【1】 [ CSelf12[リード3パターン] が 61 以上 ]の場合↓
||||■変数操作: CSelf12[リード3パターン] = 1 + 0
||||■
|||◇分岐終了◇
|||■
||◇分岐終了◇
||■
|◇分岐終了◇
|■ピクチャ移動:100 相対X:0 Y:0 / 0(0)フレーム / パターン CSelf10[リード1パターン] / 透 同値 / 表示形式:同値 / 角 同値 / 拡 同値 / カラー 同値
|■ピクチャ移動:101 相対X:0 Y:0 / 0(0)フレーム / パターン CSelf11[リード2パターン] / 透 同値 / 表示形式:同値 / 角 同値 / 拡 同値 / カラー 同値
|■ピクチャ移動:102 相対X:0 Y:0 / 0(0)フレーム / パターン CSelf12[リード3パターン] / 透 同値 / 表示形式:同値 / 角 同値 / 拡 同値 / カラー 同値
|■
◇ループここまで◇◇
▼ 結果処理
■文章選択肢:/ 【1】続ける / 【2】終了
-◇選択肢:【1】 続ける の場合↓
|●ラベル「開始」に飛ぶ >>>>>>>>>>>>>>>
|■
-◇選択肢:【2】 終了 の場合↓
|■
◇分岐終了◇

今回の場合は上記の設定例で良いと思いますが、一応3つのボタンを3つの並列処理で処理して、ボタンが押されたらそのボタンの並列処理を停止させる(別途自動実行で3つのボタンの変数の値を監視して、全てのボタンが押されたら結果を処理)と言った処理方法もあります。

1つのコモンイベントで処理するのが難しい場合は、無理に1つにまとめず、複数の並列処理で処理した方が楽な場合があります。

    par********:

    ちなみに一度キーを離さないとボタンが押せないようにする場合はキー処理を以下のように変更。
    ■条件分岐(変数): 【1】CSelf20[キーコード] が 1 以上
    -◇分岐: 【1】 [ CSelf20[キーコード] が 1 以上 ]の場合↓
    |■条件分岐(変数): 【1】CSelf13[ボタン1押した] が 1 と同じ
    |-◇分岐: 【1】 [ CSelf13[ボタン1押した] が 1 と同じ ]の場合↓
    ||■変数操作: CSelf13[ボタン1押した] = 2 + 0
    ||■変数操作: CSelf22[押した数] += 1 + 0
    ||■サウンド:SE3「スロットボタン音」(0 チャンネル) 再生 / 遅延:0フレーム
    ||■
    |◇分岐終了◇
    |■
    -◇上記以外
    |■変数操作: CSelf13[ボタン1押した] 下限= 1 + 0
    |■
    ◇分岐終了◇


その他の回答

par********:

現状のイベント設定がよく分からないので、設定例を書いてもそのまま適用できるかどうかが分かりませんが、基本的には変数「ボタン1押した」と言ったものをボタンごとに用意して、スロット開始時に全ての変数の値を「0」にして、「0」の時にはボタンが押せて、ボタンを押したら「1」にしてリードを停止し、そして3つ全ての変数の値が「1」になったらキー処理を終了して、スロットの結果処理&スロットの再実行を行えば良いでしょう。

■変数操作: CSelf10[リード1パターン]~CSelf12[リード3パターン] = 1 + 0
●ラベル地点「開始」 <<<<<<<<<<<<<<★
■変数操作: CSelf13[ボタン1押した]~CSelf18[移動カウント3] = 0 + 0
■変数操作: CSelf22[押した数] = 0 + 0
■ループ開始
|■キー入力:CSelf20[キーコード]キーボード(100~) [キーコード[102]のみ判定] ( 1キー )
|■キー入力:CSelf21[キーコード2]キーボード(100~) [キーコード[179]のみ判定] ( テンキー1キー )
|■変数操作: CSelf20[キーコード] 下限= CSelf21[キーコード2] + 0
|■条件分岐(変数): 【1】 CSelf20[キーコード] が 1 以上
|-◇分岐: 【1】 [ CSelf20[キーコード] が 1 以上 ]の場合↓
||■条件分岐(変数): 【1】 CSelf13[ボタン1押した] が 0 と同じ
||-◇分岐: 【1】 [ CSelf13[ボタン1押した] が 0 と同じ ]の場合↓
|||■変数操作: CSelf13[ボタン1押した] = 1 + 0
|||■変数操作: CSelf22[押した数] += 1 + 0
|||■サウンド:SE3「スロットボタン音」(0 チャンネル) 再生 / 遅延:0フレーム
|||■
||◇分岐終了◇
||■
|◇分岐終了◇
|■キー入力:CSelf20[キーコード]キーボード(100~) [キーコード[103]のみ判定] ( 2キー )
|■キー入力:CSelf21[キーコード2]キーボード(100~) [キーコード[180]のみ判定] ( テンキー2キー )
|■変数操作: CSelf20[キーコード] 下限= CSelf21[キーコード2] + 0
|■条件分岐(変数): 【1】 CSelf20[キーコード] が 1 以上
|-◇分岐: 【1】 [ CSelf20[キーコード] が 1 以上 ]の場合↓
||■条件分岐(変数): 【1】 CSelf14[ボタン2押した] が 0 と同じ
||-◇分岐: 【1】 [ CSelf14[ボタン2押した] が 0 と同じ ]の場合↓
|||■変数操作: CSelf14[ボタン2押した] = 1 + 0
|||■変数操作: CSelf22[押した数] += 1 + 0
|||■サウンド:SE3「スロットボタン音」(0 チャンネル) 再生 / 遅延:0フレーム
|||■
||◇分岐終了◇
||■
|◇分岐終了◇
|■キー入力:CSelf20[キーコード]キーボード(100~) [キーコード[104]のみ判定] ( 3キー )
|■キー入力:CSelf21[キーコード2]キーボード(100~) [キーコード[181]のみ判定] ( テンキー3キー )
|■変数操作: CSelf20[キーコード] 下限= CSelf21[キーコード2] + 0
|■条件分岐(変数): 【1】 CSelf20[キーコード] が 1 以上
|-◇分岐: 【1】 [ CSelf20[キーコード] が 1 以上 ]の場合↓
||■条件分岐(変数): 【1】 CSelf15[ボタン3押した] が 0 と同じ
||-◇分岐: 【1】 [ CSelf15[ボタン3押した] が 0 と同じ ]の場合↓
|||■変数操作: CSelf15[ボタン3押した] = 1 + 0
|||■変数操作: CSelf22[押した数] += 1 + 0
|||■サウンド:SE3「スロットボタン音」(0 チャンネル) 再生 / 遅延:0フレーム
|||■
||◇分岐終了◇
||■
|◇分岐終了◇
|■条件分岐(変数): 【1】 CSelf22[押した数] が 3 以上
|-◇分岐: 【1】 [ CSelf22[押した数] が 3 以上 ]の場合↓
||■ループ中断
||■
|◇分岐終了◇
|■ウェイト:1 フレーム
|■変数操作: CSelf16[移動カウント1]~CSelf18[移動カウント3] += 1 + 0
|■条件分岐(変数): 【1】 CSelf13[ボタン1押した] が 0 と同じ
|-◇分岐: 【1】 [ CSelf13[ボタン1押した] が 0 と同じ ]の場合↓
||■条件分岐(変数): 【1】 CSelf16[移動カウント1] が 5 以上
||-◇分岐: 【1】 [ CSelf16[移動カウント1] が 5 以上 ]の場合↓
|||■変数操作: CSelf16[移動カウント1] = 0 + 0
|||■変数操作: CSelf10[リード1パターン] += 1 + 0
|||■条件分岐(変数): 【1】 CSelf10[リード1パターン] が 61 以上
|||-◇分岐: 【1】 [ CSelf10[リード1パターン] が 61 以上 ]の場合↓
||||■変数操作: CSelf10[リード1パターン] = 1 + 0
||||■
|||◇分岐終了◇
|||■
||◇分岐終了◇
||■
|◇分岐終了◇
|■条件分岐(変数): 【1】 CSelf14[ボタン2押した] が 0 と同じ
|-◇分岐: 【1】 [ CSelf14[ボタン2押した] が 0 と同じ ]の場合↓
||■条件分岐(変数): 【1】 CSelf17[移動カウント2] が 5 以上
||-◇分岐: 【1】 [ CSelf17[移動カウント2] が 5 以上 ]の場合↓
|||■変数操作: CSelf17[移動カウント2] = 0 + 0
|||■変数操作: CSelf11[リード2パターン] += 1 + 0
|||■条件分岐(変数): 【1】 CSelf11[リード2パターン] が 61 以上
|||-◇分岐: 【1】 [ CSelf11[リード2パターン] が 61 以上 ]の場合↓
||||■変数操作: CSelf11[リード2パターン] = 1 + 0
||||■
|||◇分岐終了◇
|||■
||◇分岐終了◇
||■
|◇分岐終了◇
|■条件分岐(変数): 【1】 CSelf15[ボタン3押した] が 0 と同じ
|-◇分岐: 【1】 [ CSelf15[ボタン3押した] が 0 と同じ ]の場合↓
||■条件分岐(変数): 【1】 CSelf18[移動カウント3] が 5 以上
||-◇分岐: 【1】 [ CSelf18[移動カウント3] が 5 以上 ]の場合↓
|||■変数操作: CSelf18[移動カウント3] = 0 + 0
|||■変数操作: CSelf12[リード3パターン] += 1 + 0
|||■条件分岐(変数): 【1】 CSelf12[リード3パターン] が 61 以上
|||-◇分岐: 【1】 [ CSelf12[リード3パターン] が 61 以上 ]の場合↓
||||■変数操作: CSelf12[リード3パターン] = 1 + 0
||||■
|||◇分岐終了◇
|||■
||◇分岐終了◇
||■
|◇分岐終了◇
|■ピクチャ移動:100 相対X:0 Y:0 / 0(0)フレーム / パターン CSelf10[リード1パターン] / 透 同値 / 表示形式:同値 / 角 同値 / 拡 同値 / カラー 同値
|■ピクチャ移動:101 相対X:0 Y:0 / 0(0)フレーム / パターン CSelf11[リード2パターン] / 透 同値 / 表示形式:同値 / 角 同値 / 拡 同値 / カラー 同値
|■ピクチャ移動:102 相対X:0 Y:0 / 0(0)フレーム / パターン CSelf12[リード3パターン] / 透 同値 / 表示形式:同値 / 角 同値 / 拡 同値 / カラー 同値
|■
◇ループここまで◇◇
▼ 結果処理
■文章選択肢:/ 【1】続ける / 【2】終了
-◇選択肢:【1】 続ける の場合↓
|●ラベル「開始」に飛ぶ >>>>>>>>>>>>>>>
|■
-◇選択肢:【2】 終了 の場合↓
|■
◇分岐終了◇

今回の場合は上記の設定例で良いと思いますが、一応3つのボタンを3つの並列処理で処理して、ボタンが押されたらそのボタンの並列処理を停止させる(別途自動実行で3つのボタンの変数の値を監視して、全てのボタンが押されたら結果を処理)と言った処理方法もあります。

1つのコモンイベントで処理するのが難しい場合は、無理に1つにまとめず、複数の並列処理で処理した方が楽な場合があります。

    par********

    ちなみに一度キーを離さないとボタンが押せないようにする場合はキー処理を以下のように変更。
    ■条件分岐(変数): 【1】CSelf20[キーコード] が 1 以上
    -◇分岐: 【1】 [ CSelf20[キーコード] が 1 以上 ]の場合↓
    |■条件分岐(変数): 【1】CSelf13[ボタン1押した] が 1 と同じ
    |-◇分岐: 【1】 [ CSelf13[ボタン1押した] が 1 と同じ ]の場合↓
    ||■変数操作: CSelf13[ボタン1押した] = 2 + 0
    ||■変数操作: CSelf22[押した数] += 1 + 0
    ||■サウンド:SE3「スロットボタン音」(0 チャンネル) 再生 / 遅延:0フレーム
    ||■
    |◇分岐終了◇
    |■
    -◇上記以外
    |■変数操作: CSelf13[ボタン1押した] 下限= 1 + 0
    |■
    ◇分岐終了◇

投稿者 eldoah