

お世話になります。
先日からスロットゲームに関して、質問しているものなのですが、リールが止まる時のタイミングについて質問です。
ボタンをクリックすると、回転し自然に止まるスロットなのですが、絵柄を用意してパラパラ漫画の要領で回転を再現してます。
各リール用にタイマーを設置して、1リール目が止まると、2リールのインターバルを0にして、止める構造に
してあるのですが、1~3リールとも同じタイミングで止まってしまいます。
タイマーウェイト処理も停止絵柄の前で止まり、ウェイト後にカックンと止まる始末。
自然にポン、ポン、ポンと止まるように処理するには
どうしたら用意でしょうか。
またご指導のほどよろしくお願いします。
No.3ベストアンサー
- 回答日時:
VB6のタイマーは,はっきり言って使えません。
と言うのは,タイマーイベントはWindows上で動くので,
どうしても他のアプリケーションやタスクの影響を受けるからです。
それでは,どうやって正確な時間を測るかですが,
これにはWindowsAPIのTimeGetTimeを使います。
使い方は,検索エンジンでTimeGetTimeって引けば出てきます。
簡単に紹介すると,TimeGetTimeはシステムが起動してからの
時間を測るためのものです。これを使うには,まず
Private Declare Function timeGetTime Lib "winmm.dll" () As Long
を一番上の欄外でグローバル変数として宣言する必要があります。
つぎに,たとえばある一定の時間待つようなSubルーチンを作るなら,
Private Sub Wait(WaitTime As Long)
Dim TimeStart As Long
StartTime = timeGetTime
Do
DoEvents
Loop While (timeGetTime - StartTime < WaitTime)
End Sub
のようにします。
これを応用して,リールの止まる際にランダムでウェイト時間を
足して行けば,ゆっくり回転するようになります。
もちろん,ランダムで数字を加えますので,
同時に止まることはありません。
解りにくい場合は,また補足します。
この回答への補足
ご指導ありがとうございます。
早速新しいプロシージャをつくりSubルーチンをコピペさせていただき、(General)に宣言部分を記述しました。
そして停止タイマー部に
Image2(old2).Visible = False
Image2(idx2).Visible = True
old2 = idx2
If Timer1.Interval = 0 Then
waittime = 2 ここを追加し
If idx2 = 0 Then
Timer2.Interval = 0
ElseIf idx2 = 3 Then
Timer2.Interval = 0
ElseIf idx2 = 6 Then
Timer2.Interval = 0
以下略
追加部分の数字を変えてみたりしたのですが、思う様に動いていません。記述の仕方がおかしいのでしょうか、それともAPIの使い方やソースの書き方などが根本的に間違ってますか。
ちなみにidx2は絵柄を書き換えてるときに使ってる変数です。
No.2
- 回答日時:
基本的に、TimerコントロールはPCのスペックにより
何故か速さが異なります(早くまわそうとすればするほど)。
確認済みかもしれませんが・・・。
だからどうすれば良いか、という事まではちょっと思いつきません・・・。
WindowsAPIのSleep()でもそれだけではどうにも出来ませんし・・・。
60でまわし、止まるにつれて回転は遅くなるはずです。
実機でも。
ピタッとは止まらないでしょう。
そういうスロットは見た事ありませんが・・・^^;
止まる時は60から、インターバルを徐々に上げる事により
速度低下を図る方法ではダメですか?
終了インターバルが1000でダメなら800、600などではどうでしょうか?
No.1
- 回答日時:
インターバルが1000になるまで100ずつ加算し、
1000になったら0にする、とかでゆっくり止まり、
別々に止まるのでは?
現在、Timer1のインターバルが0になった途端に
Timer2のインターバルが0になり、
その途端にTimer3のインターバルが0になっているので、
同時に止まってしまうのではないでしょうか。
勘で言っているので、見当違いでしたら失礼。
ご指導ありがとうございます。
全くおしゃっていただいてる通りなのですが、会社で作成しておりまして、インターバルが100で回転していても「遅い。実機の動きに近づけろ」との上司命令でして、現状60でまわしています。その状態から「ポンポンポンだ」と言われてまして、胃が痛い毎日です。
すいません、お礼が愚痴になってしまいました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- パチンコ・スロット パチスロ・ペルソナ5で真ん中の赤が中々止められません 1 2023/04/11 23:08
- Instagram Instagramのリールの停止方法 1 2023/05/02 01:03
- パチンコ・スロット パチスロ初心者です。今日、ファンキージャグラーを打っていれば、左リール下段にバーがきて、なんか中リー 1 2023/02/28 22:06
- 釣り ルアー投げたあとにリールのベイルを戻すタイミングについて。 初心者なのですが自分の考えではベイルをカ 1 2023/01/18 19:36
- 釣り 遠投かご釣りの遠投について教えて・・・ 2 2022/05/07 17:46
- エアコン・クーラー・冷暖房機 富士通のエアコンですが、作業員に見て貰っても、以後冷房運転が時々止まり困ってます。 6 2022/07/18 19:22
- 輸入バイク z750s 3 2022/05/24 18:25
- 事故 こんばんは~❢❢❢ 自転車の一時停止について質問したいのですが よく外で、自転車に乗る人を見ますが 1 2023/02/11 22:00
- DIY・エクステリア 防犯のために、ドア内側の鍵にサムターン回し防止用器具を付けようと思います。 以前別のドア用に買った物 1 2023/05/03 12:36
- その他(就職・転職・働き方) ビズリーチのプレミアムステージの自動更新を停止を行いたいのですが、停止の処理がうまくできません。 公 1 2022/05/04 10:33
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
VC++ のマウス入力
-
パソコン処理の分担について。
-
ニーモニックキャラクタとは
-
エクセルVBAで
-
メッセージボックスの表示につ...
-
Excel2000で閉じたフ...
-
エクセルVBAの質問ですがここで...
-
マウスの入力を待つには?
-
アクセスVBAでVBYESNOボタンに...
-
VBSの処理中一旦処理を止めて再...
-
VBA、UserFormを前面に出力して...
-
ダイアログ作成での質問
-
VBスクリプトで「お待ち下さい...
-
MFCダイアログの終了判定
-
Delphi6 ループ中にキー入力
-
チェックボックスの周囲の色が
-
”お待ち下さい”が表示できない。
-
Visual C++においての質問
-
B列に特定の文字列が入っている...
-
探しています~プログレスバー...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
VBSの処理中一旦処理を止めて再...
-
ACCESS側からEXCELの書式を設定...
-
メッセージボックスのボタン名変更
-
VBSで応答不要のメッセージボッ...
-
VBA kernel32 の意味
-
Excel VBA で処理中断(DoEvents...
-
VBA、UserFormを前面に出力して...
-
Application.ScreenUpdating=Fa...
-
MFCのワーカースレッドとUIスレ...
-
ASP.NETでのメッセージ画面を出...
-
「キャンセル」ボタン付きの処...
-
シャットダウン時のExcel強制終...
-
【C#】 あるイベントから別イ...
-
ボタンが押された事を検知する...
-
PostMessageの連続送信
-
VBA メッセージボックスを自動...
-
エクセルVBAでクリップボード内...
-
VCでウエイトをミリ秒でかけ...
-
ループを使わずに、特定時間に...
-
VB6 コマンドボタン クリック...
おすすめ情報