Einzelnen Beitrag anzeigen

Possseidon

Registriert seit: 15. Nov 2011
11 Beiträge
 
Delphi XE3 Professional
 
#6

AW: Problemme mit FormKeyDown

  Alt 15. Nov 2011, 19:48
hi!

also ich glaub beim programmieren musst du noch einiges lernen
(bin zwar erst 14 kenn mich aba schon recht gut damit aus)

du solltest vor allem alles mit EINEM timer machen wenn du sowas programmierst!!! wenn du mit mehreren arbeitest kann es dazu kommen das dein PC ziehmlich stockt... (ich rede da aus eigener erfahrung )

für die schüsse legst du dir einfach im private teil deines forms ne variable vom Typ Integer an (z.B. Reload) dann tust du diese Variable in deiner tiemr procedure einfach immer um eins erhöhen und wenn Reload größer ist als ein bestimmter Wert (könntest du auch in ne Variable schreiben) dann soll er schiesen und Reload wieder auf 0 setzten.
Das ganze könnte dann in etwa so aus sehn:

Delphi-Quellcode:
procedure TForm1.Timer1Timer(Sender: TObject);
begin
  Inc(Reload); // Oder halt: Inc(Reload, 1);
  if Reload >= ReloadMax then
  begin
    // Hier nen neuen Schuss erstellen

    Reload := 0;
  end;
end;
Ich hoffe wirklichm dass du wenigstens schon weist was arrays oda sind, weil sonst kanns du immer nur einen schuss abfeuern der einer Variable abgespeichert wird (arrays haben im Prinzip mehrere Variablen in einer nur falls dus nicht weist)...

Ich hoffe ich hab dich mit dem allen jetzt nicht zu arg abgeschreckt...
Viel Spaß weiterhin beim Programmieren!

(Jeder fängt mal klein an )

Ach und das ich nicht komplett vom Thema abweich in dem es hier eigentlich geht...

Falls du noch keine gute Lösung für das KeyDown zeugs gefunden hast:

du kannst dir im private Teil des Forms einfach für jede Taste die du benutzt (Also: Left, Right, etc) einfach eine Boolean anlegen, also ein Wahr-Falsch. Ich kann dir hier mal en Beipsiel geben:

Delphi-Quellcode:
procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
  // Hier wird die Taste auf True gesetzt

  case Key of
    VK_LEFT:
      Left := True;
    VK_RIGHT:
      Right := True;
    VK_UP:
      Up := True;
    VK_DOWN:
      Down := True;
    VK_SPACE:
      Space := True;
  end;
end;

procedure TForm1.FormKeyUp(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
  // und hier auf False wenn sie wieder hoch geht

  case Key of
    VK_LEFT:
      Left := False;
    VK_RIGHT:
      Right := False;
    VK_UP:
      Up := False;
    VK_DOWN:
      Down := False;
    VK_SPACE:
      Space := False;
  end;
end;
und dann kannst du einfachen in deiner TimerProc schauen ob z.B. Left wahr ist

manmanman... soviel hab ich glaub ich nochnie geschrieben... Bin dir nicht böse wenn es dir zuviel wurde...

Stehe dir aber natürlich weiterhin für Fragen über Delphi offen

Ich könnte dir noch viel mehr über das ganze erzählen, aber fürss erste eichts hoffenltich...

Edit:

ups jetzt fällt mir erst auf wie alt dieser Thread schon ist...
was solls XD
KEINE HAFTUNG AUF RECHTSCHREIBFEHLER
  Mit Zitat antworten Zitat