投稿
nyannzi CornedBeef
一番上のゲームなのですがゲームセンターにあるようなスロットゲームを作ってみようとしているのですが挙動が可笑しいです。が原因がわかりません。アドバイスを頂けると嬉しいです。
2そうだね
プレイ済み
返信[1]
親投稿
nyannzi CornedBeef
1、数字が揃っているのに揃っている処理をしない 2、当たっている配当が正しくない 3、スロットが回るアニメーションをつけたつもりなのですが左上に表示するつもりのないスプライトが見えたり 真ん中にも小さい物が見えたりします 自分で気付いてるだけでもこれだけあります
0そうだね
プレイ済み
返信[2]
親投稿
otta777 otta777a
1)数字が揃っていても106行目の判定で@BETに飛んでいる ためP[0,2]とP[1,2]が一致しないと揃っている処理が されません。 2)後にチェックした配当が有効になるため複数のラインで 数字が揃っていても先に判別された配当が後から判別された 配当に上書きされています。 3)数字を表示する際にSPSETを行うと表示座標が[0,0]の位置に変更されたり拡大率がリセットされます。
0そうだね
プレイ済み
返信[3]
親投稿
otta777 otta777a
一つ提案ですが判定処理で配列変数を羅列するため 1行が長くなってしまい読みづらくなってしまいます。 P00=P[0,0]:P01=P[0,1]:P02=P[0,2] P10=P[1,0]:P11=P[1,1]:P12=P[1,2] P20=P[2,0]:P21=P[2,1]:P22=P[2,2] とした上で IF P00==P01 && P01==P02 THEN GOSUB @CHECK という様に1行で揃っているラインを判別する方が プログラムが見やすくなるかと思います。
0そうだね
プレイ済み
返信[4]
親投稿
nyannzi CornedBeef
ありがとうございます!おかげで見やすくなりました。 SPCHR で変えることで画面はなんとなく良くなったのですが 判定がやはり ・・・ 自分としては8ラインのうち1ラインずつあってるかあってないかを調べて次に進み 最終的にその時の配当が0なら頭に 0じゃなければHIGH&LOWに進めてるつもりなのですが・・・
0そうだね
プレイ済み
返信[5]
親投稿
otta777 otta777a
2)で指摘した件は私の勘違いでした。配当となるメダルは複数ラインの当たっていても上書きされずに加算されています。 判定に関しては1)で指摘したとおり106行目のGOTO命令の 飛び先に有ります。 スロットを回す度にGを0にしていないため判定の条件が 成立したときに前回配当があったメダル数が加算されて しまい出目と配当が一致していません。 @MAINの次の行にG=0を追加してみて下さい。 IF P[0,2]!=P[1,2] THEN GOTO @BET としていますがこの場合も IF G!=0 THEN GOSUB @HIGHLOW の処理をしてください。
0そうだね
プレイ済み
返信[6]
親投稿
otta777 otta777a
×判定に関しては ◎判定に関しての問題は 意味が分かりづらい文章になっていました。
0そうだね
プレイ済み
返信[7]
親投稿
otta777 otta777a
更新された方を見ずにコメントしていました。すみません。 配列変数の内容を変数に入れるプログラムは 73行目の当たり処理の後に入れて下さい。
0そうだね
プレイ済み
返信[8]
親投稿
nyannzi CornedBeef
ありがとうございます!あたり処理の後に入れたら欲しい動作をしてくれるようになりました。 何故この場所に移したら動くようになったのか解説頂けると助かります
0そうだね
プレイ済み
返信[9]
親投稿
otta777 otta777a
上手く動いて良かったですね。 プログラムの場所を変えたら正常に動いた理由を説明します。 スロットの出目を配列変数Pに代入していますが 判別を見やすくするための変数P00~P22に配列変数Pの 数値を入れてから判別を行わないと画面に表示された スロットと判別をする為の変数の内容が一致してない ため1~8の数字が揃ったと判別されなかったというわけです。
0そうだね
プレイ済み
返信[10]
親投稿
otta777 otta777a
あと@CHECKの部分ですが、事前に変数にチェックしたい スロットの出目を代入しておいて @CHECKでその変数の内容をチェックするようにすれば わざわざ@CHECK2、@CHECK3のサブルーチンを使わなくても 配当の判別はできますよ。 IF~(省略)THEN GOSUB @CHECK2 ↓ IF~(省略)THEN CN=P11:GOSUB @CHECK @CHECK IF CN==1 THEN G=G+~(省略) IF CN==2 THEN G=G+~(省略) という具合に変更すると@CHECKで配当の判定が共用できます。
0そうだね
プレイ済み
返信[11]
親投稿
nyannzi CornedBeef
わかりやすい解説ありがとうございます おかげで理解できました これで前に進めそうです
1そうだね
プレイ済み