|
| Autor |
Nachricht |
ShellingFord 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
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

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 weil vb nicht bei jeder zeile überprüfen muss
viel erfolg noch lg |
|
| |
|
 |
ShellingFord 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
Vielen dank noch mals =)
LG. SF |
|
| |
|
 |
ShellingFord 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

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

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
Danke für die sehr hilfreiche Hilfe! |
|
| |
|
 |
|
|