Visual Basic Forum

Visual Basic Forum
für VB6 und VB.NET Programmierer
 
RegistrierenRegistrieren  LoginLogin
Neues Thema eröffnen   Neue Antwort erstellen    Visual Basic Forum Foren-Übersicht -> [VB6] Fragen - Antworten
Autor
Nachricht
ShellingFord
Newbie
Newbie

Anmeldedatum: 24.10.2011
Beiträge: 4

Code schöner schreiben?
Verfasst am: 24.10.2011, 23:43

Halli hallo,
ich bin ziemlich neu, sowohl hier im Forum als auch mit dem Umgang von VB6.
Ich erlerne die Programmiersprache durch meine Schule, neben dieser nun lernenden Sprache kann ich ein klein wenig html, das aber nur am Rande Very Happy
So um zum Punkt zu kommen erst mal das wichtigste:
Ich soll mit hilfe von VB6 das Spiel Tic-Tac-Toe programmieren, dazu sollen wir (meine Klasse) jetzt schon (nach 6 Schulstunden) in der Lage zu sein.
Ich habe soweit auch schon einen Code erstellt, der soweit auch funktioniert, ich habe aber einen Teil, den ich sowas von gar nicht toll finde, aber auch keine Ahnung habe, wie man ihn schöner bzw. übersichtlicher darstellen kann.

So hier mal mein Code
Code:
Private Sub Command1_Click(Index As Integer)

    If Text1.Text = 1 Then
        Command1(Index).Caption = "X"
        Text1.Text = "2"
        Command1(Index).Enabled = False
   
    ElseIf Text1.Text = 2 Then
        Command1(Index).Caption = "O"
        Text1.Text = "1"
        Command1(Index).Enabled = False
   
    End If
End Sub

Private Sub Command2_Click()

        Command1(0).Caption = ""
        Command1(1).Caption = ""
        Command1(2).Caption = ""
        Command1(3).Caption = ""
        Command1(4).Caption = ""
        Command1(5).Caption = ""
        Command1(6).Caption = ""
        Command1(7).Caption = ""
        Command1(8).Caption = ""
        Text1.Text = 1
        Command1(0).Enabled = True
        Command1(1).Enabled = True
        Command1(2).Enabled = True
        Command1(3).Enabled = True
        Command1(4).Enabled = True
        Command1(5).Enabled = True
        Command1(6).Enabled = True
        Command1(7).Enabled = True
        Command1(8).Enabled = True

End Sub


Zur Erklärung:
der erste Teil (Private Sub Command1_Click(Index As Integer)) stellt den Teil da, das Spieler 1 das Zeichen "X" zugeordnet bekommt und bei einem klick auf den CommandButten auf ihn ein "X" erscheinen soll, dass dieser dann nicht mehr überschreibt werden kann und dann soll der Text in dem der Spieler angezeigt wird, welcher am Zug ist, so gewechselt werden, dass der andere Spieler drin steht (in meinem Fall Spielerwechsel von 1 zu 2). Genau das selbe ist dann noch mit Spieler 2 gemacht worden mit lediglich "O" als Zeichenzuordnung.

Im zweiten Teil steht drin, das mit dem Klick auf den CommandButten der Inhalt der 9 Felder gelöscht werden soll, das Textfeld auf 1 zurückspringen soll, sowie sollen die CommandButten wieder zu beschreiben sein.

Nun eben die Frage, wie kann ich den zweiten Teil übersichtlicher darstellen?
Wenn ich es wie im ersten Teil mit "Index As Integer" mache, zeigt mir das Programm eine Fehlermeldung an und anschließend wird die erste Zeile gelb hinterlegt.

Ich danke schon mal im Voraus fürs durch lesen meines Textest und für ggf. die Hilfe!

LG. SF
 
christopher.g
Überflieger
Überflieger

Anmeldedatum: 03.05.2008
Beiträge: 565


Verfasst am: 25.10.2011, 12:38

hi

also man kann auch den ersten teil schöner gestalten....
Code:

Private Sub Command1_Click(Index As Integer)

Select Case Text1.Text
    Case 1 :
        Command1(Index).Caption = "X"
        Text1.Text = "2"
        Command1(Index).Enabled = False
   
   Case 2:
        Command1(Index).Caption = "O"
        Text1.Text = "1"
        Command1(Index).Enabled = False
   
    End Select
End Sub

Private Sub Command2_Click()

For i = 0 to 8
        Command1(i).Caption = ""
        Command1(i).Enabled = True
Next

Text1.Text = 1

End Sub


Select Case müsste da nicht sein
aber ist bei großen projekten und längeren prozeduren übersichtlicher
weniger fehleranfällig deinerseits und schneller Smile weil vb nicht bei jeder zeile überprüfen muss

viel erfolg noch lg
 
ShellingFord
Newbie
Newbie

Anmeldedatum: 24.10.2011
Beiträge: 4


Verfasst am: 25.10.2011, 19:42

Hey, vielen dank =)
Naja, der erste Teil ist so, wie wir ihn bisher gelernt hatten Wink

Vielen dank noch mals =)

LG. SF
 
ShellingFord
Newbie
Newbie

Anmeldedatum: 24.10.2011
Beiträge: 4


Verfasst am: 26.10.2011, 19:29

Ich habe da noch mal eine Frage und zwar sollen wir zusätzlich zum Spiel am Ende noch durch eine MsgBox verdeutlichen, welcher Spieler gewonnen hat.
Aber egal, was mir einfällt und ausprobiere funktioniert nicht so wirklich.

Meine derzeitige Überlegung lautet wie folgt:
Code:
Select Case Command1(Index).Caption
    Case 1:
    If Command1(0).Caption = "X" And Command1(1).Caption = "X" And Command1(2).Caption = "X" Then
        MsgBox "Spieler 1 hat gewonnen!"
    End If
   
    Case 2:
    If Command1(0).Caption = "O" And Command1(1).Caption = "O" And Command1(2).Caption = "X" Then
        MsgBox "Spieler 2 hat gewonnen!"
    End If
    End Select


Natürlich würde der Code mit den anderen Möglichkeiten noch folgen, zudem denke ich mal, dass es warscheinlich irgendwie "doppelt-gemoppelt" ist mit dem "If" aber ohne Funktioniert das genauso wenig.

Wenn ich es ausprobiere kommt dieses mal auch keine Fehlermeldung, es passiert einfach nichts.

Ich wäre sehr dankbar.

Gruß, SF
 
*sandymaus*
Newbie
Newbie

Anmeldedatum: 25.10.2011
Beiträge: 13


Verfasst am: 27.10.2011, 07:32

hi!
warum lässt du select case nicht einfach weg?

Code:
If Command1(0).Caption = "X" And Command1(1).Caption = "X" And Command1(2).Caption = "X" Then
        MsgBox "Spieler 1 hat gewonnen!" 
elseif Command1(0).Caption = "O" And Command1(1).Caption = "O" And Command1(2).Caption = "X" Then
        MsgBox "Spieler 2 hat gewonnen!"
End If
 
ShellingFord
Newbie
Newbie

Anmeldedatum: 24.10.2011
Beiträge: 4


Verfasst am: 27.10.2011, 14:28


Hey, vielen dank =)
Nun öffnet sich wenigstens die MsgBox.
Dafür ist nun das Problem, dass wenn ich den zweiten Fall ausprobiere die MsgBox nicht geöffnet wird.

Edit: Hat sich erledigt, ich habe aus beiden eine einfache Abfrage gemacht und nun funktioniert es Wink

Danke für die sehr hilfreiche Hilfe!
 
Neues Thema eröffnen   Neue Antwort erstellen    Visual Basic Forum Foren-Übersicht -> [VB6] Fragen - Antworten
 
 Verwandte Themen   Aufrufe   Letzter Beitrag 
Keine neuen Beiträge Frage über mein game 236 25.09.2011, 17:33
Keine neuen Beiträge VB6 Combobox zeigt nicht alle Werte an 700 13.07.2011, 08:38
Keine neuen Beiträge Webbrowser zeigt nur Bild keine Video... 460 26.02.2011, 10:16
Keine neuen Beiträge Wie bringe ich mein Programm dazu, auf Return zu reagieren? 619 24.12.2009, 15:42
Keine neuen Beiträge [s] Lehrer der mir zeigt wie ich einen builder machen kann 357 02.10.2007, 12:09
 


[ Time: 0.0951s ][ Queries: 95 (0.0397s) ][ GZIP on - Debug on ]