Thema: Delphi Minesweeper

Einzelnen Beitrag anzeigen

BadenPower

Registriert seit: 17. Jun 2009
616 Beiträge
 
#37

AW: Minesweeper

  Alt 25. Mär 2015, 08:30
Du suchst doch Row und Col des Panels auf das geklickt wurde?
Delphi-Quellcode:
procedure TForm1.PanelMatrixMouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
var
  S: string;
  C: char;
  Panel: TPanel;
  Row, Col: integer;
begin
  if Sender is TPanel then
  begin
    Panel := TPanel(Sender);
    Col := IndexOfPanel(Panel).X;
    Row := IndexOfPanel(Panel).Y;
  ..


Delphi-Quellcode:
procedure TForm1.PanelMatrixMouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
var
  S: string;
  C: char;
  Panel: TPanel;
  Pos: TPoint;
begin
  if Sender is TPanel then
  begin
    Panel := TPanel(Sender);
    Pos := IndexOfPanel(Panel);
    .....
    IntA[Pos.X,Pos.Y] := ......
Es wäre doch viel besser den Rückgabewert von IndexOfPanel() gleich in eine Variable vom Typ TPoint zu speichern, denn dann muss die Funktion nur einmal durchlaufen werden und die Variablen Col und Row würden durch Pos.X und Pos.Y ersetzt.

Einmal abesehen davon, dass da bestimmt nichts zurückgegeben wird, da PanelA noch gar keine Werte enthält.


Panels[x, y] := TPanel.Create(Self); und schon kann man den Mist mit dm Suchen weg lassen, da man die Instanzen bereits hat.
Das Suchen braucht er, um die Koordinaten zu bestimmen, da er ja auf die Werte im Array IntA zugreifen möchte.
Programmieren ist die Kunst aus Nullen und Einsen etwas sinnvollen zu gestalten.
Der bessere Künstler ist allerdings der Anwender, denn dieser findet Fehler, welche sich der Programmierer nicht vorstellen konnte.

Geändert von BadenPower (25. Mär 2015 um 08:32 Uhr)
  Mit Zitat antworten Zitat