AW: tic tac toe.... mal wieder:) versteh aufgabestellung nicht ganz
Delphi-Quellcode:
also naja ich gebe euch nochal die Funktion dazu.....
procedure TForm1.Label8Click(Sender: TObject);
begin if IsFieldEmpty(Label8.Caption) then begin Label8.Caption := WriteToField(GPlayer); if CheckForWin(GBuffer) then //kann wegen optimierung nicht zugegriffen werden? begin Label8.Caption := ''; ShowMessage(IntToStr(GPlayer)+' hat gewonnen!'); GPlayer := 1; end else begin ChangePlayer; end; end; end;
Delphi-Quellcode:
also als ich es gerade durchgesteppt habe stand an der Seite
function TForm1.CheckForWin(AIndex: array of string): Boolean;
begin AIndex[1]:= Label1.Caption; AIndex[2]:= Label1.Caption; AIndex[3]:= Label1.Caption; AIndex[4]:= Label1.Caption; AIndex[5]:= Label1.Caption; AIndex[6]:= Label1.Caption; AIndex[7]:= Label1.Caption; AIndex[8]:= Label1.Caption; AIndex[9]:= Label1.Caption; result := false; begin if (AIndex[1] = AIndex[2]) and (AIndex[2] = AIndex[3]) and (IsFieldEmpty(AIndex[1]) = false) then begin result := true; end; if (AIndex[4] = AIndex[5]) and (AIndex[5] = AIndex[6]) and (IsFieldEmpty(AIndex[4]) = false) then begin result := true; end; if (AIndex[7] = AIndex[8]) and (AIndex[8] = AIndex[9]) and (IsFieldEmpty(AIndex[7]) = false) then begin result := true; end; if (AIndex[1] = AIndex[4]) and (AIndex[4] = AIndex[7]) and (IsFieldEmpty(AIndex[1]) = false) then begin result := true; end; if (AIndex[2] = AIndex[5]) and (AIndex[5] = AIndex[8]) and (IsFieldEmpty(AIndex[2]) = false) then begin result := true; end; if (AIndex[3] = AIndex[6]) and (AIndex[6] = AIndex[9]) and (IsFieldEmpty(AIndex[3]) = false) then begin result := true; end; if (AIndex[1] = AIndex[5]) and (AIndex[5] = AIndex[9]) and (IsFieldEmpty(AIndex[1]) = false) then begin result := true; end; if (AIndex[3] = AIndex[5]) and (AIndex[5] = AIndex[7]) and (IsFieldEmpty(AIndex[3]) = false) then begin result := true; end; end; end; Zitat:
bin eben Mittag essen also.... ich seh ja was ihr schreibt^^ |
AW: tic tac toe.... mal wieder:) versteh aufgabestellung nicht ganz
So macht der Parameter aber gar keinen Sinn, Du solltest ihn schon zum Datenaustausch nutzen. Aber mir leuchtet der Sinn des Array of String sowieso nicht ein (wieso ein Array, und dann auch noch Strings?). Übrigens setzt Du alle Elemente Deines Arrays auf denselben Wert, damit kannst Du Dir die Vergleiche eigentlich sparen :zwinker:
|
AW: tic tac toe.... mal wieder:) versteh aufgabestellung nicht ganz
Zitat:
Das Ergebnis der Funktionen ist ja bereits ein Wahrheitswert (Boolean). Deshalb musst Du nur zB
Delphi-Quellcode:
schreiben. Das reicht völlig, und erspart dir das eine oder andere Problem.
if CheckForWin(a) then
Sherlock |
AW: tic tac toe.... mal wieder:) versteh aufgabestellung nicht ganz
Hatte ich das nicht druntergeschrieben? :cyclops:
|
AW: tic tac toe.... mal wieder:) versteh aufgabestellung nicht ganz
Ich wollte nur sicher gehen. Denn in Post 32 war ihr das noch nciht bewusst geworden, und danach stand nichts mehr dazu da - zugegeben: hab den Rest nur überflogen.
Aber das kann man ja nicht oft genug sagen ;) Sherlock |
AW: tic tac toe.... mal wieder:) versteh aufgabestellung nicht ganz
Zitat:
|
AW: tic tac toe.... mal wieder:) versteh aufgabestellung nicht ganz
Zitat:
Zitat:
|
AW: tic tac toe.... mal wieder:) versteh aufgabestellung nicht ganz
Das
Delphi-Quellcode:
-Problem:
if ... = true then
Wie jeder bestimmt zu Wissen glaube, kennt ein Boolean zwei Zustände ... True oder False ... niwa? Falsch. :angle2: Siehe folgenden Test: Gegeben ist eine Funktion, welche einen booleanischen Wert zurückliefert. Und zusätzlich sind mehrere Varianten gegeben, diesen Boolean auszuwerten.
Delphi-Quellcode:
Also.
function Test: Boolean;
asm mov al, 8 end; ... if Test = true then ShowMessage('Test = true') else if Test = false then ShowMessage('Test = false') else ShowMessage('Test = weder true noch false?'); ... if Test = true then ShowMessage('Test = true : ja (richtig)') else ShowMessage('Test = true : nicht ja (falsch)'); if Test = false then ShowMessage('Test = false : nein (richtig)') else ShowMessage('Test = false : nicht nein (falsch)'); if Test then ShowMessage('Test : ja (richtig)') else ShowMessage('Test : nein (falsch)'); if not Test then ShowMessage('not Test : nein (richtig)') else ShowMessage('not Test : ja (falsch)'); Prüfe niemals auf True und False. Einzige Außnahme, wenn man wirklich "genau" den internen/binären Wert prüfen muß, was aber meistens nicht der Fall ist, da man ja nur den "logischen" Wert ala "Ja oder Nein" prüfen möchte. |
AW: tic tac toe.... mal wieder:) versteh aufgabestellung nicht ganz
Zitat:
|
AW: tic tac toe.... mal wieder:) versteh aufgabestellung nicht ganz
hmm... hast ja recht.... Wie bekommt er denn sonst die Werte aus den Labels?
ist ja blöde menno |
Alle Zeitangaben in WEZ +1. Es ist jetzt 23:25 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz