Tic Tac Toe

  • VB.NET

Es gibt 11 Antworten in diesem Thema. Der letzte Beitrag () ist von BlueKenny.

    Hallo,

    wie der Name schon sagt möchte ich ein Tic Tac Toe Game machen.

    allerdings lässt er mich nicht die Buttoninhalte vergleichen. Zumindest gibt er dort diesen Fehler aus:

    Eine Ausnahme (erste Chance) des Typs "System.InvalidCastException" ist in Microsoft.VisualBasic.dll aufgetreten.


    Als button.text werden bei Click X oder O gesetzt

    hier der Code

    VB.NET-Quellcode

    1. Private Sub ergebnis()
    2. 'Dim x As Integer = 1
    3. ' Dim o As Integer = 2
    4. If b1.Text & b2.Text & b3.Text = "" Then
    5. Else
    6. If b1.Text = b2.Text AndAlso b3.Text Then
    7. lblinfo.Text = ""
    8. MsgBox(txtsp1.Text & " hat gewonnen")
    9. ElseIf b1.Text & b2.Text & b3.Text = "O" Then
    10. lblinfo.Text = ""
    11. MsgBox(txtsp2.Text & " hat gewonnen")
    12. End If
    13. End If
    14. End Sub


    Weiss jemand wie ich das lösen kann?

    Danke
    Mfg

    Kangaroo schrieb:

    VB.NET-Quellcode

    1. If b1.Text = b2.Text AndAlso b3.Text Then

    Was soll das mit b3.Text bewirken ? Hier muss VB Text auf Boolean casten und hat damit klar Probleme ....
    naja ich wollte nur die Werte vergleichen. Haste denn einen Lösungsansatz?


    ich hab einen anderen Lösungsansatz probiert.
    ich weise jedem Feld eine Zahl zu 10,30,50,100,300,500,1000,3000,5000
    Sie werden in eine variable addiert , das klappt auch!
    2 variablen p1 & p2

    aber selbst wenn ich nur 1 Button klicke gibt er aus, ich hab gewonnen...

    VB.NET-Quellcode

    1. Private Sub ergebnis()
    2. If CInt(lblp1.Text) = "90" Or "900" Or "9000" Then '<<<<< selber Fehler wenn ich nur p1 nutze /lblp1.text = p1
    3. MsgBox("winner")
    4. lblinfo.Text = p1
    5. End If
    6. End Sub



    warum macht er das?

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „yonda“ ()

    durch CInt wandelst du es in einen Integer um und vergleichst anschließend mit einem String...
    Or ist ein logischer Operator, welcher dir versucht die Strings zu verknüpfen, was hier jedoch nicht möglich ist(es sei denn man wandelt diese in Integer um, was aber auch nicht zum gewünschten Ergebnis führen würde...)
    If x =2 Or x = 3 Then

    nur so als Beispiel, wie man Or hier anwenden sollte...
    Ich wollte auch mal ne total überflüssige Signatur:
    ---Leer---
    Ich denke yonda möchte wohl eher sein eigenes Tic-Tac-Toe Spiel programmieren , statt fertige Lösungen zu übernehmen. So lernt man auch erheblich mehr ...

    @Yonda Du hast noch ein Problem mit den logischen Abfragen:

    VB.NET-Quellcode

    1. If CInt(lblp1.Text) = "90" Or "900" Or "9000" Then ...

    Du möchtest vermutlich abfragen ob dieses Label die Werte 90 , 900, oder 9000 enthält, dafür musst Du aber jedesmal wieder mit lblp1.Text vergleichen:

    VB.NET-Quellcode

    1. If lblp1.Text="90" Or lblp1.Text="900" Or lblp1.Text="9000" Then

    Das CInt brauchst Du hier nicht, da Du ja einen String(lblp1.Text) mit einem anderen String("90") vergleichst

    Kangaroo schrieb:

    Ich denke yonda möchte wohl eher sein eigenes Tic-Tac-Toe Spiel programmieren , statt fertige Lösungen zu übernehmen. So lernt man auch erheblich mehr ...

    @Yonda Du hast noch ein Problem mit den logischen Abfragen:

    VB.NET-Quellcode

    1. If CInt(lblp1.Text) = "90" Or "900" Or "9000" Then ...

    Du möchtest vermutlich abfragen ob dieses Label die Werte 90 , 900, oder 9000 enthält, dafür musst Du aber jedesmal wieder mit lblp1.Text vergleichen:

    VB.NET-Quellcode

    1. If lblp1.Text="90" Or lblp1.Text="900" Or lblp1.Text="9000" Then

    Das CInt brauchst Du hier nicht, da Du ja einen String(lblp1.Text) mit einem anderen String("90") vergleichst
    Erstmal danke für die vielen Antworten. Kangaroo hat recht, lieber selber schreiben als Kopieren nur so lernt man dazu :)

    Ich habs nach mühsamer Kleinarbeit anders gelöst (war wirklich Müde ;) )
    aber jetzt funzt das 2 Player Game Problemlos. Nun werde ich noch eine KI hinzufügen