Zeichen zählen in einem Label

  • VB.NET

Es gibt 9 Antworten in diesem Thema. Der letzte Beitrag () ist von RodFromGermany.

    Zeichen zählen in einem Label

    Hi
    Ich habe ein Spiel programmiert.
    dabei habe ich die Punkte als Zeichen in ein Label schreiben lassen.(immer das gleiche Zeichen in zwei verschiedene Labels)
    nun wollte ich das Programm automatisch den Sieger ermitteln lassen.
    mein Frage ist nun: gibt es ein Befehl der mir das Zeichen auslesen möglich macht(bei einem Label)?
    DAnkee
    Genau.
    Trenne Daten und GUI.
    Daten sind die Spielstände, die irgendwo als Integer-Werte vorliegen.
    Diese werden dann mit Label1.Text = Value.ToString angezeigt.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Poste mal deinen Code. Wie Rod sagte: Trenne GUI und Daten.
    Den Ansatz mit den Variablen haben wir dir schon gegeben. Bei mehreren Spielern bietet sich auch objektorientiertes Programmieren an, d.h. dass man Klassen verwendet.
    Beispiel:
    Spoiler anzeigen

    VB.NET-Quellcode

    1. Option Strict On
    2. Public Class Player
    3. Private points_ As Integer ' Modulweit gültige Variable
    4. ' ...
    5. Public Property Points() As Integer
    6. ' Abholen des Eigenschaftenwerts
    7. Get
    8. Return points_
    9. End Get
    10. ' Setzen des Eigenschaftenwerts
    11. Set(ByVal Value As Integer)
    12. points_ = Value
    13. End Set
    14. End Property
    15. Private name_ As String ' Modulweit gültige Variable
    16. ' ...
    17. Public Property Name() As String
    18. ' Abholen des Eigenschaftenwerts
    19. Get
    20. Return name_
    21. End Get
    22. ' Setzen des Eigenschaftenwerts
    23. Set(ByVal Value As String)
    24. name_ = Value
    25. End Set
    26. End Property
    27. End Class

    Spoiler anzeigen

    VB.NET-Quellcode

    1. Option Strict On
    2. Public Class Game
    3. Dim player1 As New Player
    4. Dim player2 As New Player
    5. Sub scored(ByVal player As Player)
    6. player.Points += 1
    7. End Sub
    8. Function getWinner() As Player
    9. If player1.Points > player2.Points Then
    10. Return player1
    11. ElseIf player1.Points < player2.Points Then
    12. Return player2
    13. Else
    14. Return Nothing
    15. End If
    16. End Function
    17. Private Sub Game_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    18. player2.Name = "LaMiy"
    19. scored(player2)
    20. MessageBox.Show(getWinner.Name)
    21. End Sub
    22. End Class

    LaMiy schrieb:

    Public Class Player
    Unter VB2010 reduziert sich das zu

    VB.NET-Quellcode

    1. Public Class Player
    2. Public Property Points() As Integer
    3. Public Property Name() As String
    4. End Class
    :D
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Ich hab net viel wissen über die ganzen Strings und so
    deshalb hab ich des mal so geschriben wie ich des gedacht hab ist aber glaub ich sehr umständlich und könnt man viel einfacher machen aber Egal
    DEs Memorie arbeitet mit Liedern anstatt Bildern

    Public Name1 As String = ""
    Public Name2 As String = ""

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    My.Computer.Audio.Play(My.Resources.Lied, AudioPlayMode.Background)
    Button1.Text = " "

    Label1.Text = Label1.Text + " "
    Call Pair()
    End Sub
    des erstmal für alle 36 Buttons

    Private Sub Pair()
    If Label1.Text = " " Then
    Call übereinstimmung()
    If Form2.Timer1.Enabled = True Then


    If Label6.Text = "Am Zug:" Then
    Label6.Text = "Am Zug:"
    Label5.Text = ""

    Else
    Label5.Text = "Am Zug:"
    Label6.Text = ""
    End If
    Else
    If Label6.Text = "Am Zug:" Then
    Label5.Text = "Am Zug:"
    Label6.Text = ""
    MsgBox(Name2 + " ist dran")

    Else
    Label6.Text = "Am Zug:"
    Label5.Text = ""
    MsgBox(Name1 + " ist dran")
    End If
    End If
    End If

    End Sub
    um den Zug zu BEstimmen welcher Spieler grad dran ist und wer dann die Punkte bekommt

    Private Sub übereinstimmung()
    If Button1.Text = " " And Button3.Text = " " Then
    Form2.Show()
    Form2.Timer1.Enabled = True
    My.Computer.Audio.Play(My.Resources.LeerSound, AudioPlayMode.Background)
    Label1.Text = ""
    Button1.Text = ""
    Button3.Text = ""
    Button1.Visible = False
    Button3.Visible = False
    If Label6.Text = "Am Zug:" Then
    Label7.Text = Label7.Text + "I"
    Label6.Text = "Am Zug:"
    Else
    Label8.Text = Label8.Text + "I"

    End If
    Else
    Label1.Text = ""
    Button1.Text = ""
    Button3.Text = ""

    End If
    DAnn Hier die ganze chose mit den Zusammenhängenden Paaren
    denn Code wieder vervielfältigt und die Paare Bestimmt

    Private Sub übereinstimmung()
    If Button1.Text = " " And Button3.Text = " " Then
    Form2.Show() 'die Form hat eigentlich net viel mit der Funktion zu tun
    Form2.Timer1.Enabled = True
    My.Computer.Audio.Play(My.Resources.LeerSound, AudioPlayMode.Background)
    Label1.Text = ""
    Button1.Text = ""
    Button3.Text = ""
    Button1.Visible = False
    Button3.Visible = False
    If Label6.Text = "Am Zug:" Then
    Label7.Text = Label7.Text + "I"
    Label6.Text = "Am Zug:"
    Else
    Label8.Text = Label8.Text + "I"

    End If
    Else
    Label1.Text = ""
    Button1.Text = ""
    Button3.Text = ""

    End If

    Wenn dann alle Buttons unsichtbar sind kommt dann die Form3
    in der hab ich dann die Labels in TExtboxen rübergeschribene um des dann mit Text.Length auszulesen
    des funktioniert aber iwie net so wie ich wollt
    in den Pictureboxen sind einfache Bilder so nach dem Motto You WIn
    aber des mit dem > und < funktioniert net so gibts da was
    If TextBox1.TextLength > TextBox2.TextLength Then
    PictureBox1.Visible = True
    End If
    If TextBox1.TextLength < TextBox2.TextLength Then
    PictureBox2.Visible = True

    End If

    RodFromGermany schrieb:

    Trenne Daten und GUI.
    Daten sind die Spielstände, die irgendwo als Integer-Werte vorliegen.
    Diese werden dann mit Label1.Text = Value.ToString angezeigt.
    Bevor Du weiter machst, verstehe bitte, was da steht, sonst kommst Du in Teufels Küche.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!