• ベストアンサー

VB6でスロットを作成したい

VB6歴2ヶ月の初心者です。 フォーム上に ラベルコントロールが三つ コマンドボタンが二つ タイマーコントロールが一つ あります。 タイマーのプロパティは Enabled False Interval 10 です。 スロットを作成したいのですが、 ボタン1を一回押すごとに左からスロットが回り、 最後にボタン2で動きを止めたいのです。 一応自分でも書いてみたのですが、ここで行き詰まりました。 ウワァァァァァァヽ(`Д´)ノァァァァァァン! Private Sub Command1_Click() Timer1.Enabled = True End Sub Private Sub Command2_Click() Timer1.Enabled = False End Sub Private Sub Timer1_Timer() Dim slot As Integer slot = Int(Rnd(1) * 9 + 1) Label1.Caption = slot End Sub 思い通りに動かすにはどんなコードにしたらいいですか?

質問者が選んだベストアンサー

  • ベストアンサー
  • ttyp03
  • ベストアンサー率28% (277/960)
回答No.1

ご質問のソースをベースに改造したらこうなりました。 Dim cnt As Integer Private Sub Command1_Click() cnt = 0 Timer1.Enabled = True End Sub Private Sub Command2_Click() cnt = cnt + 1 If cnt > 2 Then Timer1.Enabled = False End If End Sub Private Sub Timer1_Timer() Dim slot As Integer If cnt <= 0 Then slot = Int(Rnd(1) * 9 + 1) Label1.Caption = slot End If If cnt <= 1 Then slot = Int(Rnd(1) * 9 + 1) Label2.Caption = slot End If If cnt <= 2 Then slot = Int(Rnd(1) * 9 + 1) Label3.Caption = slot End If End Sub 参考にしてみてください。

その他の回答 (2)

  • ttyp03
  • ベストアンサー率28% (277/960)
回答No.3

#1です。 すみません、スタートボタン3回でストップ1回でしたか。 #1のは逆に書いてました。 これでどうでしょう。 Dim cnt As Integer Private Sub Command1_Click() cnt = cnt + 1 Timer1.Enabled = True End Sub Private Sub Command2_Click() If cnt > 2 Then cnt = 0 Timer1.Enabled = False End If End Sub Private Sub Form_Load() cnt = 0 End Sub Private Sub Timer1_Timer() Dim slot As Integer If cnt >= 1 Then slot = Int(Rnd(1) * 9 + 1) Label1.Caption = slot End If If cnt >= 2 Then slot = Int(Rnd(1) * 9 + 1) Label2.Caption = slot End If If cnt >= 3 Then slot = Int(Rnd(1) * 9 + 1) Label3.Caption = slot End If End Sub

sineminna
質問者

お礼

早速のご回答、誠にありがとうございました! #1の方法の方がしっくり来たのでこちらを採用させてください。 大変参考になりました。 もっと精進していきます。 あ(・∀・)り(・∀・)が(・∀・)と(・∀・)う!

  • skink
  • ベストアンサー率38% (7/18)
回答No.2

こんにちは。 スタートボタンを3回押して、止めるのはエンドボタンを1回で全部止めるってことですか? 適当に書いてみましたが,こんな感じでいかがでしょ? Option Explicit Private Cnt As Integer Private Sub Command1_Click() Cnt = Cnt + 1 Timer1.Enabled = True End Sub Private Sub Command2_Click() Timer1.Enabled = False End Sub Private Sub Timer1_Timer() Dim slot(2) As Integer slot(0) = Int(Rnd(1) * 9 + 1) slot(1) = Int(Rnd(1) * 9 + 1) slot(2) = Int(Rnd(1) * 9 + 1) Select Case Cnt Case 1 Label1(0).Caption = slot(0) Case 2 Label1(0).Caption = slot(0) Label1(1).Caption = slot(1) Case 3 Label1(0).Caption = slot(0) Label1(1).Caption = slot(1) Label1(2).Caption = slot(2) End Select End Sub

sineminna
質問者

お礼

大変参考になりました。 見れば見るほど納得できました。 皆さん、頭いいですね。 あ(・∀・)り(・∀・)が(・∀・)と(・∀・)う!