Delphi-PRAXiS
Seite 5 von 18   « Erste     345 6715     Letzte »    

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   tic tac toe.... mal wieder:) versteh aufgabestellung nicht ganz (https://www.delphipraxis.net/162412-tic-tac-toe-mal-wieder-versteh-aufgabestellung-nicht-ganz.html)

biby90 23. Aug 2011 11:40

AW: tic tac toe.... mal wieder:) versteh aufgabestellung nicht ganz
 
Delphi-Quellcode:
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;
also naja ich gebe euch nochal die Funktion dazu.....
Delphi-Quellcode:
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;
also als ich es gerade durchgesteppt habe stand an der Seite
Zitat:

//kann wegen optimierung nicht zugegriffen werden

bin eben Mittag essen also.... ich seh ja was ihr schreibt^^

DeddyH 23. Aug 2011 12:10

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:

Sherlock 23. Aug 2011 12:27

AW: tic tac toe.... mal wieder:) versteh aufgabestellung nicht ganz
 
Zitat:

Zitat von biby90 (Beitrag 1118841)
also muss ich die alle umschreiben und auf false prüfen?

NEIN!

Das Ergebnis der Funktionen ist ja bereits ein Wahrheitswert (Boolean). Deshalb musst Du nur zB
Delphi-Quellcode:
if CheckForWin(a) then
schreiben. Das reicht völlig, und erspart dir das eine oder andere Problem.

Sherlock

DeddyH 23. Aug 2011 12:30

AW: tic tac toe.... mal wieder:) versteh aufgabestellung nicht ganz
 
Hatte ich das nicht druntergeschrieben? :cyclops:

Sherlock 23. Aug 2011 12:32

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

DeddyH 23. Aug 2011 12:34

AW: tic tac toe.... mal wieder:) versteh aufgabestellung nicht ganz
 
Zitat:

Zitat von sherlock (Beitrag 1118922)
aber das kann man ja nicht oft genug sagen ;)

full ack ;)

biby90 23. Aug 2011 12:53

AW: tic tac toe.... mal wieder:) versteh aufgabestellung nicht ganz
 
Zitat:

Übrigens setzt Du alle Elemente Deines Arrays auf denselben Wert
das Array soll ja eigentlich die Werte aus dem Label vergleichen. Sprich wenn Reihen 1,2 und 3 ein X haben dann hat Spieler X gewonnen...

Zitat:

if CheckForWin(a) then
habe ich docj... oder nicht?

himitsu 23. Aug 2011 12:57

AW: tic tac toe.... mal wieder:) versteh aufgabestellung nicht ganz
 
Das
Delphi-Quellcode:
if ... = true then
-Problem:

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:
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)');
Also.
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.

DeddyH 23. Aug 2011 13:02

AW: tic tac toe.... mal wieder:) versteh aufgabestellung nicht ganz
 
Zitat:

Delphi-Quellcode:
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;

Was steht dann wohl in den einzelnen Elementen drin?

biby90 23. Aug 2011 13:05

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.
Seite 5 von 18   « Erste     345 6715     Letzte »    

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