Einzelnen Beitrag anzeigen

Benutzerbild von _frank_
_frank_

Registriert seit: 21. Feb 2003
Ort: Plauen / Bamberg
922 Beiträge
 
Delphi 3 Professional
 
#29

Re: Panel Spiel => Panel automatisch erzeugen?

  Alt 21. Okt 2007, 15:19
hast du bemerkt, dass deine If-Abfrage in der For-Schleife steckt?
glaube das sollte nicht so sein, aber mit richtiger Einrückung würde man das sehen .
ansonsten 3 Fragen:
- wie wird Zaehler initialisiert
- werden vorher panels erstellt (außerhalb vom timer)
- hast du mit dem debugger schon 10 in der variable gesehen?

denn: mit jedem erstellten panel wird der Zähler dekrementiert (geht übrigends mit dec(zaehler) kürzer). selbst wenn du alle panels wegklickst wirst du so nie 10 Punkte erreichen, da diese 10 punkte vorher schon vom Zähler abgezogen wurden.

Delphi-Quellcode:
procedure TFPanel1.Timer1Timer(Sender: TObject);
var i: integer;
begin
  Panel:= TPanel.Create (FPanel1);
  Panel.Color:= clYellow;
  Panel.Caption:= 'F';
  Panel.Width:= 49;
  Panel.Height:= 33;
  Panel.Left:= Random(ShSpiel.Width-60)+30;
  Panel.Top:= Random(ShSpiel.Height-50)+30;
  Panel.Parent:= FPanel1;
  Panel.OnClick:= PanelWeg;
  Zaehler:= Zaehler-1;

  for i:=ComponentCount-1 downto 0 do
  begin
    if Components[i] is TPanel then
    begin
      if Panel.Visible= True then
      begin
        TPanel(Components[i]).Left:= Random(ShSpiel.Width-60)+30;
        TPanel(Components[i]).Top:= Random(ShSpiel.Height-50)+30;
        Edit1.Text:=IntToStr(Zaehler)+' '+'Punkte';
      end else
      begin
        TPanel(Components[i]).Destroy;
      end;
    end;

    if Zaehler = 0 then
    begin
      Timer1.Enabled:=False;
      ShowMessage('Verloren');
      break;
    end else if Zaehler = 10 then
    begin
      Timer1.Enabled:=False;
      ShowMessage('Gewonnen');
      break;
    end;
  end; //for
end;
HTH Frank
  Mit Zitat antworten Zitat