■15855 / ) |
Re[11]: スロットマシンを作ってみましたが |
□投稿者/ y4yama (62回)-(2008/03/24(Mon) 09:35:49)
|
■No15781 (seven さん) に返信
>人からサンプルもらってしまうとどうしてもそれに引きずられてしまうので
>見せられる前に自分で考えてみた方が勉強になると思います。
というご意見は、もっともなので、「それに引きずられてしまう」ことなく、一例として
ながめて下さいネ
VB2005EEで動作確認しました。
Public Class Form1
Private y1 As Single = 999
Private y1_addvalue As Single = 8
Private y1_hantei As Single
Private b1_push As Boolean = False
Private arrLabel() As String = {"0", "1", "2", "3", "4", "5", "6", "7", "8", "9"}
Private a1 As Integer = 0
Private yLabel(2) As Label '3つの文字は、実行時にソフトが作る
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
'PictureBox1 は幅40、高さ80
PictureBox1.BorderStyle = BorderStyle.Fixed3D
Timer1.Interval = 160 'ドラムの回転速度
Timer1.Enabled = True
Dim ii As Integer
For ii = 0 To 2
yLabel(ii) = New Label()
yLabel(ii).Width = 20
yLabel(ii).Left = 5
yLabel(ii).TextAlign = ContentAlignment.MiddleCenter
yLabel(ii).BorderStyle = BorderStyle.Fixed3D
yLabel(ii).ForeColor = Color.Blue
PictureBox1.Controls.Add(yLabel(ii))
Next
End Sub
Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
If 0 < y1_addvalue Then
y1 += y1_addvalue '下に回転する
End If
If 32 <= y1 Then
y1 = 0
a1 = a1 + 1
If 9 < a1 Then
a1 = 0
End If
yLabel(0).Text = arrLabel(a1)
yLabel(1).Text = arrLabel((a1 + 9) Mod 10)
yLabel(2).Text = arrLabel((a1 + 8) Mod 10)
End If
If b1_push Then
If y1_addvalue < y1_hantei And 12 <= y1 And y1 < 16 Then
y1 = 15
y1_addvalue = 0
yLabel(1).ForeColor = Color.Red '中央のyLabel(1)を赤色(停止のサイン)
ElseIf y1_hantei <= y1_addvalue Then
y1_addvalue -= 0.13 '回転を少しづつ遅くする
End If
End If
'yLabel(0)〜(2)のPictureBox1中での位置を更新する
Dim y_offset = 20
yLabel(0).Top = y1 - y_offset
yLabel(1).Top = y1 - y_offset + 32
yLabel(2).Top = y1 - y_offset + 64
End Sub
'停止ボタン
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
b1_push = True
y1_hantei = 0.9 + (Now().Millisecond) / 300 '擬似乱数で停止の判定を変化させる
End Sub
'restartボタン. 再度、回転を始める
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
b1_push = False
a1 = 2
y1 = 999
y1_addvalue = 8
yLabel(1).ForeColor = Color.Blue
End Sub
End Class
PictureBox1の中に、yLabel(0)〜(2)が3個配置されて、配置位置はソフトでyLabel(0).Top を更新しています
yLabel(0)〜(2)には、yLabel(1).Text = arrLabel((a1 + 9) Mod 10)というようにシーケンスな"0"〜"9"の
文字を表示させます
imageListを使わなくても、このようにTESTは簡単にできるのです。正確な終了処理などはしてませんので、あしからず・・
|
|