Entwickler-Ecke
Sonstiges (Delphi) - standart ping pong
teddy500 - Sa 17.03.07 16:17
Titel: standart ping pong
hi leute,
habe ein problem.
bin nicht der beste in informatik hab aber 5. prüfungsfach und muss ein programm schreiben.
habe mir überlegt ping pong zu nehmen.
PROBLEM: wie bewege ich das image über die tastatur ? (soll der schläger sein)
.....................bitte helft mir............
Xion - Sa 17.03.07 16:20
OnKeyPress=>wenns <- ist dann Img.Left-1, bei -> +1 (<- = 37 , -> = 39)
:motz: :eyecrazy: :bawling: Informatik als 5.prüfungsfach :bawling: bei uns gibts nichtmal nen Grundkurs
hui1991 - Sa 17.03.07 18:28
Ich würde net Ping Pong nehmen.
Habe mich daran versucht, aber naja...
Versuche doch lieber nen Memory mit Karten auf und zu decken ^^
8x8 mit 32 verschiedenen Bildern wovon 2 immer gleich sind.
Das denke ich geht mit einem Array wenn du ein Object erstellst ganz einfach.
TKarte oder so.
Davon machste ein Array und noch a weng Programmieren.
Den style verbessern und tada haste was ganz feines.
Naja du deiner eigentlichen Frage ist es am besten, wenn du die Tasten mit KeyDown abfängst.
Sonst fällt mir nichts ein. Oder nach einer bestimmten Zeit schauen ob die entsprechende Taste gedrückt wurde.
MfG
hui1991
teddy500 - Mo 19.03.07 10:42
ey jungs ganz ganz langsam....
ich bin ahnungslos!!!
wie mache ich dass mit dem Image???
meine form ist mein spielfeld.
und hier eine kleine skizze wie es aussehen soll.
Bitte um hilfe!!!!!!!!!!1
ZeitGeist87 - Di 20.03.07 18:11
Hallo!
Da ich grad mein Delphi installier, ich aber trotzdem antworten will und ich nicht weiß, ob das Image ein OnKey-Press-Ereignis hat:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22:
| procedure TImage.onKeyPress(Key: Char; Sender: TObject); const pos: integer = 2; begin; if key = VK_UP then begin if MeinBild.top+pos >= (MeinForm.Top+5 ) then MeinBild.top:= MeinBild.top + pos; end;
if key = VK_DOWN then begin if (MeinBild.top+MeinBild.height)-pos <= (MeinForm.Height+5 ) then MeinBild.top:= MeinBild.top - pos; end; end; |
Wenn du kurz wartest, programmier ich schnell n BeispielLG
Stefan
teddy500 - Di 20.03.07 18:50
Titel: DER DANK
herzlichen dank für deinen quelltext!
wenn du das mit bsp hinkriegebn würdest waere ich dir sehr sehr dankbar.....
muss jetzt leider weg, aber bin spätestens morgen wieder on.
bis dann viel spaß noch beim programmieren.....
Shorty - Di 20.03.07 20:02
Und hättest du mal nach
PONG gesucht, hättest du meinen Pong-Klon in der Open-Source-Spalte entdeckt, das ist soweit komplett und mit Quelltext :wink:
teddy500 - Mi 21.03.07 15:23
alles klar ich danke dir werd mir das mal angucken.
hoffentlich werd daraus schlau...
falls nicht hoert ihr bald wieder was von mir....
danke
Fighter#1 - Mi 21.03.07 15:53
Titel: Re: standart ping pong
teddy500 hat folgendes geschrieben: |
bin nicht der beste in informatik hab aber 5. prüfungsfach und muss ein programm schreiben.
habe mir überlegt ping pong zu nehmen.
|
Nur so, Info 5. Prüfungsfach!! GEIL! Echt ne tolle Sache! Aber dann PingPong ??? Du bist doch auf dem Gymnasium?
Also PingPong kann jeder nach spätestens einem halben Jahr selber schreiben!
Lass dir lieber was komplexeres einfallen!
teddy500 - Fr 23.03.07 13:34
Titel: !!!VERY IMPORTANT!!!
hey jungs neues bzw altes problem!!
ich zeig euch die unit und stell dazu ein paar fragen.
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40: 41: 42: 43: 44: 45: 46: 47: 48: 49: 50: 51: 52: 53: 54: 55: 56: 57: 58: 59: 60: 61: 62: 63: 64: 65: 66: 67: 68: 69: 70: 71: 72: 73: 74: 75: 76: 77:
| unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ExtCtrls; type TForm1 = class(TForm) Image1: TImage; Balken_1: TImage; Balken_2: TImage; Ball: TImage; Timer1: TTimer; procedure FormCreate(Sender: TObject); procedure FormKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); procedure Timer1Timer(Sender: TObject); private public end; var Form1: TForm1; var Key: Word; implementation {$R *.dfm} procedure TForm1.FormCreate(Sender: TObject); begin Image1.Canvas.Brush.Color:=clgreen; Image1.Canvas.rectangle(0,0,Image1.Width,Image1.Height); Balken_1.Canvas.Brush.Color := clblack; Balken_1.Canvas.Rectangle(0,0,Balken_1.Width,Balken_1.Height); Balken_2.Canvas.Brush.Color := clblack; Balken_2.Canvas.Rectangle(0,0,Balken_2.Width,Balken_2.Height); ball.Canvas.Brush.Color:=clskyblue; ball.canvas.Rectangle(0,0,ball.Width,ball.height); end; procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); begin case Key of 68 : timer1.Enabled:=true; 87 : begin if balken_1.top >= Image1.top then Balken_1.Top := Balken_1.Top - 10 ; end ; 83 : begin
if (Balken_1.top + Balken_1.height) <= (Image1.top + Image1.height) then Balken_1.Top := Balken_1.Top + 10; end; VK_UP : begin if balken_2.Top >= Image1.Top then Balken_2.Top := Balken_2.Top - 10; end; VK_DOWN : begin if (Balken_2.Top + balken_2.Height) <= (Image1.Top + Image1.Height) then Balken_2.Top := Balken_2.Top + 10; end; VK_ESCAPE : close; end; end; "SO AB HIER GEHTS LOS!" procedure TForm1.Timer1Timer(Sender: TObject); var i : integer; begin i:=10; While ((ball.Left)+(ball.Width)) < (balken_2.left) do ball.left:=ball.left + (i) ; if ((ball.Left)+(ball.Width)) >= (balken_2.left) then begin repeat ball.left:=ball.left - i ; ball.Top:=ball.Top - 0; until (ball.left) < ((balken_1.left)+(balken_1.Width)); end; end; end. |
SO 1) WIE SAG ICH DAS DER BALL IMMER AM SCHLÄGER(BALKEN_1) STARTET????
2) ABPRALLEN AM SCHLÄGER UND ABPRALLEN AN WAND????
3) ABBRUCH BEDINGUNG & NEU START???
WENN IHR MIR DA HELFEN KÖNNTET DAS WÄR SEHR NETT
Moderiert von
Gausi: Delphi-Tags hinzugefügt
ZeitGeist87 - Fr 23.03.07 13:37
Drück mal auf Capslock und verwende die delphi Tags :)
teddy500 - Fr 23.03.07 13:38
sorry der ball soll nicht immer an schläger 1 starten sondern wenn der rechte schläger den ball nicht bekommt dann soll der ball am 2. schläger starten???
hilffe
teddy500 - Fr 23.03.07 13:40
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40: 41: 42: 43: 44: 45: 46: 47: 48: 49: 50: 51: 52: 53: 54: 55: 56: 57: 58: 59: 60: 61: 62: 63: 64: 65: 66: 67: 68: 69: 70: 71: 72: 73: 74: 75: 76: 77: 78: 79: 80: 81: 82: 83: 84: 85: 86: 87: 88: 89: 90: 91: 92: 93: 94: 95: 96: 97: 98: 99:
| unit Unit1;
interface
uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ExtCtrls;
type TForm1 = class(TForm) Image1: TImage; Balken_1: TImage; Balken_2: TImage; Ball: TImage; Timer1: TTimer; procedure FormCreate(Sender: TObject); procedure FormKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); procedure Timer1Timer(Sender: TObject);
private public end;
var Form1: TForm1; var Key: Word; implementation
{$R *.dfm}
procedure TForm1.FormCreate(Sender: TObject); begin Image1.Canvas.Brush.Color:=clgreen; Image1.Canvas.rectangle(0,0,Image1.Width,Image1.Height); Balken_1.Canvas.Brush.Color := clblack; Balken_1.Canvas.Rectangle(0,0,Balken_1.Width,Balken_1.Height); Balken_2.Canvas.Brush.Color := clblack; Balken_2.Canvas.Rectangle(0,0,Balken_2.Width,Balken_2.Height); ball.Canvas.Brush.Color:=clskyblue; ball.canvas.Rectangle(0,0,ball.Width,ball.height); end;
procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); begin case Key of 68 : timer1.Enabled:=true; 87 : begin if balken_1.top >= Image1.top then Balken_1.Top := Balken_1.Top - 10 ; end ; 83 : begin if (Balken_1.top + Balken_1.height) <= (Image1.top + Image1.height) then Balken_1.Top := Balken_1.Top + 10; end; VK_UP : begin if balken_2.Top >= Image1.Top then Balken_2.Top := Balken_2.Top - 10; end; VK_DOWN : begin if (Balken_2.Top + balken_2.Height) <= (Image1.Top + Image1.Height) then Balken_2.Top := Balken_2.Top + 10; end; VK_ESCAPE : close; end;
end; procedure TForm1.Timer1Timer(Sender: TObject); var i : integer; begin i:=10; while ((ball.Left)+(ball.Width)) < (balken_2.left) do
ball.left:=ball.left + (i) ;
if ((ball.Left)+(ball.Width)) >= (balken_2.left) then begin repeat ball.left:=ball.left - i ; ball.Top:=ball.Top - 0;
until (ball.left) < ((balken_1.left)+(balken_1.Width));
end;
end;
end. |
Moderiert von
Gausi: Delphi-Tags hinzugefügt
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!