| |
VB.NET - Ein- und UmsteigerRe: Memory - Buttons mit Zufallszahlen belegen | | | Autor: DaveS (Moderator) | Datum: 20.11.12 19:54 |
| Ich hab's mal so gemacht
TableLayoutPanel1 (4x4), Button1, Label1...
Public Class Form1
Private vals(15) As Integer
Private r As New Random()
Private idx1 As Integer
Private idx2 As Integer
Private lidx As Integer = -1
Private bgc As Color
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As _
System.EventArgs) Handles MyBase.Load
Label1.Text = String.Empty
bgc = Me.BackColor
' Create button array in TableLayoutPanel
For i = 0 To 15
Dim b As New Button
b.Text = String.Empty
b.Tag = i
b.Enabled = False
AddHandler b.Click, AddressOf Button_Click
TableLayoutPanel1.Controls.Add(b)
Next
End Sub
' Start game
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As _
System.EventArgs) Handles Button1.Click
Dim i As Integer = 0
Me.BackColor = bgc
' Create random numbers array
Do
Dim newval As Integer = Math.Floor(100 * r.NextDouble()) + 1
If Not vals.Contains(newval) Then
vals(i) = newval
Debug.WriteLine("Add newval " & i.ToString() & " " & _
newval.ToString())
i += 1
End If
Loop While i < 16
idx1 = 0
idx2 = 0
' Set two buttons the same
Do
idx1 = Math.Floor(16 * r.NextDouble())
idx2 = Math.Floor(16 * r.NextDouble())
Loop While idx1 = idx2 OrElse idx1 + 1 = idx2 OrElse idx1 - 1 = idx2 _
OrElse idx1 + 4 = idx2 OrElse idx1 - 4 = idx2
vals(idx1) = vals(idx2)
' Enable buttons and set "enabled" colours
For Each b As Button In TableLayoutPanel1.Controls
b.BackColor = Color.Honeydew
b.Text = "?"
b.Enabled = True
Next
lidx = -1
End Sub
' Check result when user selects button
Private Sub Button_Click(ByVal sender As System.Object, ByVal e As _
System.EventArgs)
Dim sb As Button = CType(sender, Button)
Dim idx As Integer = sb.Tag
If (idx = idx1 AndAlso lidx = idx2) OrElse (idx = idx2 AndAlso lidx = _
idx1) Then
' The user hit the two buttons consecutively. Well done, user!
' Show all numbers and hilight the two equal buttons
Dim i As Integer = 0
For Each b As Button In TableLayoutPanel1.Controls
b.Text = vals(i).ToString()
If i = idx1 Or i = idx2 Then
b.BackColor = Color.Red
End If
i += 1
Next
' Now flash the background
For i = 1 To 3
Me.BackColor = Color.BlueViolet
Me.Refresh()
System.Threading.Thread.Sleep(200)
Me.BackColor = bgc
Me.Refresh()
System.Threading.Thread.Sleep(100)
Next
Me.BackColor = Color.BlueViolet
Me.Refresh()
System.Threading.Thread.Sleep(3000)
' Reset everything
Me.BackColor = bgc
i = 0
For Each b As Button In TableLayoutPanel1.Controls
b.Text = String.Empty
b.BackColor = Me.BackColor
b.Enabled = False
i += 1
Next
Label1.Text = String.Empty
lidx = -1
idx1 = 0
idx2 = 0
Else
' Show value for 1 second and then let user try again
sb.Text = vals(sb.Tag).ToString()
sb.BackColor = Color.Yellow
Me.Refresh()
System.Threading.Thread.Sleep(1000)
sb.Text = "?"
sb.BackColor = Color.Honeydew
lidx = idx
End If
End Sub
' Secret label with the answer
Private Sub Label1_Click(ByVal sender As System.Object, ByVal e As _
System.EventArgs) Handles Label1.Click
If Label1.Text = String.Empty AndAlso idx1 <> 0 Then
Label1.Text = idx1.ToString() & ", " & idx2.ToString()
Else
Label1.Text = String.Empty
End If
End Sub
End Class ________
Alle Angaben ohne Gewähr. Keine Haftung für Vorschläge, Tipps oder sonstige Hilfe, falls es schiefgeht, nur Zeit verschwendet oder man sonst nicht zufrieden ist | |
| Sie sind nicht angemeldet! Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.
Einloggen | Neu registrieren |
|
|
Neu! sevCoolbar 3.0
Professionelle Toolbars im modernen Design!
Mit sevCoolbar erstellen Sie in wenigen Minuten ansprechende und moderne Toolbars und passen diese optimal an das Layout Ihrer Anwendung an (inkl. große Symbolbibliothek) - für VB und MS-Access Weitere InfosTipp des Monats TOP Entwickler-Paket
TOP-Preis!!
Mit der Developer CD erhalten Sie insgesamt 24 Entwickler- komponenten und Windows-DLLs. Die Einzelkomponenten haben einen Gesamtwert von 1605.50 EUR...
Jetzt nur 599,00 EURWeitere Infos
|
|
|
Copyright ©2000-2024 vb@rchiv Dieter Otter Alle Rechte vorbehalten.
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.
Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel
|
|