Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Bitte helfen: WIeos setzt er hier nur 8 stadt 9 feldern? (https://www.delphipraxis.net/25465-bitte-helfen-wieos-setzt-er-hier-nur-8-stadt-9-feldern.html)

M4ST3R86 7. Jul 2004 05:46


Bitte helfen: WIeos setzt er hier nur 8 stadt 9 feldern?
 
Delphi-Quellcode:
// Hier werden die Grundzüge des Spiels niedergelegt, Abwechselndes
// Setzen, Fehlermeldung etc.

procedure TForm1.XoderO(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
var senderImage : TImage;
    PX : Integer;
    PY : Integer;
    TMP : string;
begin
    senderImage := ( Sender as TImage );

  tmp := IntToStr( senderImage.Tag );

  if ( length( tmp ) > 1 ) then begin
    pX := StrToInt( copy( tmp, 1, 1 ) );
    pY := StrToInt( copy( tmp, 2, 1 ) );
  end
  else begin
    pX := 0;
    pY := StrToInt( tmp );
  end;

  if ( GameBoard[ pX, pY ] = ftNone ) then
    begin
    // Hier wird X und O abwechselnt gesetzt
    if ( bMovePlayerX ) then
    begin
      senderImage.Picture := ImageX.Picture;
      GameBoard[ pX, pY ] := ftX;
    end
    else
    begin
      senderImage.Picture := ImageO.Picture;
      GameBoard[ pX, pY ] := ftO;
    end;
      bMovePlayerX := not bMovePlayerX;
    end
    else
    // Ist X oder O schon gesetzt erscheint eine Fehlermeldung
    begin
      ShowMessage('Dieser Platz ist belegt bitte anderen Wählen');
    end;

Hat einer eine Idee, bei einem feld bekomme ich immer angezeigt '' Dieses Feld ist belegt''

FastJack2 7. Jul 2004 06:31

Re: Bitte helfen: WIeos setzt er hier nur 8 stadt 9 feldern?
 
Hallo,

magst du mal die komplette unit posten ?

dann kann man das vielleicht ein bissel besser nachvollziehen wo das Problem liegt

greetz
-FastJack2

shmia 7. Jul 2004 07:19

Re: Bitte helfen: WIeos setzt er hier nur 8 stadt 9 feldern?
 
Ich nehme mal an, du willst Tic-Tac-Toe spielen.
Wahrscheinlich ist das Property .Tag deiner Images immer auf 0 gesetzt, aber das ist nur eine
Vermutung.
Delphi-Quellcode:
// dein alter Code
tmp := IntToStr( senderImage.Tag );
  if ( length( tmp ) > 1 ) then begin
    pX := StrToInt( copy( tmp, 1, 1 ) );
    pY := StrToInt( copy( tmp, 2, 1 ) );
  end
  else begin
    pX := 0;
    pY := StrToInt( tmp );
  end;

// hier der vereinfachte Code
// die Koordinaten werden einfach & sauber aus dem .Tag geholt
  pX := senderImage.Tag mod 10;
  pY := senderImage.Tag div 10;
// ganz wichtig: Koordinaten prüfen
  Assert((pX >= 0) and (pX < 3), 'pX out of Range' );
  Assert((pY >= 0) and (pY < 3), 'pY out of Range' );

M4ST3R86 7. Jul 2004 07:48

Re: Bitte helfen: WIeos setzt er hier nur 8 stadt 9 feldern?
 
thx jetzt klappts


Alle Zeitangaben in WEZ +1. Es ist jetzt 21:22 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz