- ベストアンサー
タイマーについて
又お世話になります。 ルーレットをプログラムした際、ストップボタンを押すと止まりますが、パチスロのように直ぐに止まらずに、パチンコのリーチがかかったような止まり方をしたいのですが、タイマー?を使ってプログラムすると出来るそうですが、よくわからないので・・。 すみませんがよろしくお願いします。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
countの意味を理解されていないようですね。 countはSTOPのあとに「Doループ」を何回繰り返すかを数えるカウンタです。 この行 If stop_flag = True Then count = count - 1 をDoループの中のForループに入れるのはおかしいですよね。 下記の部分もおかしいですね。 count = 5 Do a = 1 count = 5 ←こんなところに入れてはいけません。この行は削除。 ・・・・ 次のように修正してください。 ・上記の後のほうのcount = 5を削除 ・Forループ内にある下記の行を変更 If stop_flag = True Then count = count - 1 ↓ If stop_flag = True Then Exit For ・下記の部分を修正 If count = 0 Then Exit Do Next b Loop ↓ Next b If count < 0 Then Exit Do ← Loop の直前です。 「<」の修正も Loop
その他の回答 (2)
- MovingWalk
- ベストアンサー率43% (2233/5098)
QNo.673135ですね。 >押した後で直ぐに止まらずに数回まわってから止まらないか ループ(DO)の手前で、count=○ ←ご希望の値にします。 if stop_flag=true then count=count-1 に変更します。 Loop の手前の行に、if count=0 then exit do をいれます。 これでいかがでしょうか?
- gatyan
- ベストアンサー率41% (160/385)
ルーレットが回っているように見せるために何らかの方法でループさせていると思います。 ストップボタンを押す=ループ終了の場合、すぐにとまりますが、ストップボタンを押したときにあと何コマ回して終了するかを決めてそのコマ数分進んだらループを終了するようにすればいいのでは? たとえば、あと何コマ変数<0は回り続ける,=0なら終了,>0ならー1してループ継続とか。 タイマーは適当なタイミングを取ってループさせる手段の1つと思います。(ロジックでループさせるよりプログラムがすっきりすると思います。)
補足
回答有難うございます。DO~LOOPで回転させてます。ストップボタンを押して抜けていたのですが、そのままSTOP!なので・・。どうしたら、押した後で直ぐに止まらずに数回まわってから止まらないか・・。私の質問の内容がきちんとしていなくてすみませんでした。 if stop_flag=true then exit do でLOOPから抜けているのですが・・。
お礼
すみません。お礼の欄に書かせていただきました。 補足がおかしいのに気づいて書き直しました。 ループする内容がよくわからない内容ですみませんでした。 a1で0~8まで表示して8が出たら、b1で8~0まで出ます。そしてa1で・・。というLOOPで、ストップすると、少しまわって終わる(押してから、2~3個後に止まる)内容にしたいのですが・・。 For i = 0 To 7 Range("a1") = a If stop_flag = True Then count = count - 1 For n = 0 To 2000 DoEvents Next n a = a + 1 If count = 0 Then Exit Do Next i a = 7 For b = 0 To 7 Range("b1") = a If stop_flag = True Then count = count - 1 For n = 0 To 2000 DoEvents Next n a = a - 1 If count = 0 Then Exit Do Next b Loop すみませんがよろしくお願いします。
補足
いつも回答有難うございます。 早速入力してみましたが・・駄目でした・・。 動くのですが、LOOPからぬけてくれません。 Private Sub CommandButton1_Click() Dim i As Integer, n As Integer, b As Integer, a As Integer, m As Integer, count As Integer Static f As Boolean stop_flag = False count = 5 Do a = 1 count = 5 For i = 0 To 7 Range("a1") = a If stop_flag = True Then count = count - 1 For n = 0 To 500 DoEvents Next n a = a + 1 If count = 0 Then Exit Do Next i a = 2 For b = 0 To 7 Range("b1") = a If stop_flag = True Then count = count - 1 For n = 0 To 500 DoEvents Next n a = a * 2 If count = 0 Then Exit Do Next b Loop End Sub 使いまわしですが、これでよかったのでしょうか?