bin neu hier, deshalb weiß ich nicht, ob ich im richtigen Forum gepostet habe...hoffe es
Hab 3 Probleme (ja so viele :/), die ich nach vielem rumprobieren nun doch nicht lösen konnte, sodass ich mich an euch wende:
1. Ich möchte Pong programmieren und muss dazu, um im Mehrspieler zu spielen, zwei Tasten gleichzeitig drücken können.
Code: Alles auswählen
procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);
begin
IF Key = 13 then //Enter
Timer1.Enabled := True;
IF Key = 27 then //Escape Test
Timer1.Enabled := False;
IF Key = 87 then //W
IF ShapePaddle1.Top >= 10 then
ShapePaddle1.Top:=ShapePaddle1.Top - schnell*3;
IF Key = 83 then //S
IF ShapePaddle1.Top <= (Form1.Height-ShapePaddle1.Height-10) then
ShapePaddle1.Top:=ShapePaddle1.Top + schnell*3;
IF Key = 38 then //Up Key
IF ShapePaddle2.Top >= 10 then
ShapePaddle2.Top:=ShapePaddle2.Top - schnell*3;
IF Key = 40 then //Down Key
IF ShapePaddle2.Top <= (Form1.Height-ShapePaddle2.Height-10) then
ShapePaddle2.Top:=ShapePaddle2.Top + schnell*3;
end;
Der Code macht halt, dass getestet wird ob die Taste gedrückt wird und dann nochmals getestet wird ob das zu bewegende Paddle nicht über den Rand hinausgeht. (schnell ist hier die Variable für die Geschwindigkeit zum Bewegen des Paddles.
Wie kann ich es nun aber machen, dass zwei Tasten gleichzeitig gedrückt werden können?
2. Ihr kennt das doch bestimmt, wenn man eine Taste gedrückt hält, dass dann nicht gleich sofort ganz viele Buchstaben hintereinander geschrieben werden, sondern erst nach einer kurzen Pause. (Probierts mal in irgend einer Textzeile aus, damit ihr wisst was ich meine)
Nun, das gleiche passiert auch, wenn ich in dem oben geschriebenen Code die Taste länger gedrückt halte, sie bewegt sich einmal und dann erst nach einer ganz kurzen Unterbrechung wieder. Wie kann ich das beheben?
3. CookieClicker: (läuft schon prima, ist jetzt nur noch das Beheben von Bugs) Beim Klicken auf einen Button soll ein Text auf einem Label eingeblendet werden, und dieser soll automatisch nach 10s verschwinden. Ich habs mit nem Timer versucht:
Code: Alles auswählen
procedure TFormCookieClicker.BitBtnCursorClick(Sender: TObject); //Anzeige Cursor
begin
LabelSubtitel1.Caption := 'COST: ' + IntToStr(buycurs) + ' Cookies';
LabelSubtitel.Caption := 'PRODUCES: 1 Cookie/10 seconds';
Timer1.Enabled:=True;
end;
procedure TFormCookieClicker.Timer1Timer(Sender: TObject);
begin
LabelSubtitel1.Caption := ' ';
LabelSubtitel.Caption :=' ';
Timer1.Enabled:=False;
end;
Problem: der Timer wird ja beim anmachen automatisch einmal durchlaufen, sodass kein Text sichtbar wird. Wie kann ich den beim ersten Mal pausieren und erst nach 10 sec ausführen?
Wenns Nachfragen gibt, dann immer her damit.
Tut mir aber bitte einen Gefallen, nämlich erklärt es VERSTÄNDLICH, ich bin SCHÜLER, der gerade das Programmieren als seine Leidenschaft entdeckt hat. (Alles, was ich zu oben genannten Problemen im Netz gefunden habe, war so weit viel zu weit über meinem Niveau :/)
Liebe Grüße und danke schon im Vorraus!
Tim