Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Prism Vier gewinnt Stringgrid (https://www.delphipraxis.net/134445-vier-gewinnt-stringgrid.html)

mexman 22. Mai 2009 10:54


Vier gewinnt Stringgrid
 
Hallo Leute,

ich schreibe momentan ein Vier-Gewinnt-Spiel, die vom Spieler gesetzten Spielsteine möchte ich in einem Stringgrid anzeigen.

Die "Spielzugabfrage", etc als solches funktionieren...die gesetzten Spielsteine mach ich zur Zeit im Stringgrid als Zeichen sichtbar, anstelle der für die einzelnen Spielsteine stehenden Buchstabe, würde ich gerne die Zellen passend zur Spielsteinfarbe einfärben.

Muss ich um das zu realisieren im Methodenteil vom Stringgrid für ondrawcell eine Prozedur schreiben, die jedes Feld im Spielfeld-Array prüft und dementsprechend die Zellen färbt oder kann ich dem Stringgrid direkt die Färbung der eizelnen Zellen zuweisen?

Dankeschön,
mexman

mkinzler 22. Mai 2009 11:10

Re: Vier gewinnt Stringgrid
 
Die Methode wird für jede Zelle aufgerufen, in der Methode musst du nur die Koordinaten der jeweiligen Zelle überprüfen

BTW. Handelt sich eher um Win32 nicht um .Net

mexman 23. Mai 2009 13:38

Re: Vier gewinnt Stringgrid
 
Delphi-Quellcode:
procedure Tspiel_menu.gitterDrawCell(Sender: TObject; ACol, ARow: Integer;
  Rect: TRect; State: TGridDrawState);
var m,n:integer;
begin
for acol:=1 to 7 do
for arow:=1 to 6 do
  if spiel_menu.gitter.Cells[m,n]='R' then
    begin
    canvas.brush.color:=clred;
    canvas.FillRect(rect);
    end
  else
  if spiel_menu.gitter.cells[m,n]='G' then
    begin
    canvas.Brush.color:=clyellow;
    canvas.fillrect(rect);
    end
  else
    begin
    canvas.Brush.color:=clwhite;
    canvas.FillRect(rect);
    end;
end;
Ich möchte, dass Zellen entsprechend ihres Inhaltes gefärbt werden.
Wenn ich das Programm so starte, färbt sich der Hintergrund (aber nicht das Gitter) weiß.
Kann mir bitte jmd. sagen, was falsch ist?

dankeschön

mkinzler 23. Mai 2009 13:53

Re: Vier gewinnt Stringgrid
 
Liest du eigentlich auch die Antworten? Ich schrieb, das die Methode füt jede Zeile aufgerufen wird. Du musst also nur Überprüfungen für die aktuelle Zeile durchführen! (Siehe Parameter ACol, ARow)
Du überprüfst für jede Zeile alle! ( bei einem 4x4 gitter wird die Methode 16 mal aufgerufen, in jedem Aufruf überprüfst du alle 16 Felder!)
Ändere bitte .Net auf Win32!


Alle Zeitangaben in WEZ +1. Es ist jetzt 05:43 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