vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
Blitzschnelles Erstellen von grafischen Diagrammen!  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2025
 
zurück

 Sie sind aktuell nicht angemeldet.Funktionen: Einloggen  |  Neu registrieren  |  Suchen

VB.NET - Ein- und Umsteiger
Re: Memory - Buttons mit Zufallszahlen belegen 
Autor: ModeratorDaveS (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

alle Nachrichten anzeigenGesamtübersicht  |  Zum Thema  |  Suchen

 ThemaViews  AutorDatum
Memory - Buttons mit Zufallszahlen belegen1.894iComupterfreak20.11.12 19:25
Re: Memory - Buttons mit Zufallszahlen belegen1.089iComupterfreak20.11.12 19:35
Re: Memory - Buttons mit Zufallszahlen belegen1.111ModeratorDaveS20.11.12 19:54
Re: Memory - Buttons mit Zufallszahlen belegen1.115iComupterfreak20.11.12 20:05
Re: Memory - Buttons mit Zufallszahlen belegen1.077ModeratorDaveS20.11.12 20:17

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

Funktionen:  Zum Thema  |  GesamtübersichtSuchen 

nach obenzurück
 
   

Copyright ©2000-2025 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