![]() |
Fußball Pong plz Help ich kann net mehr ;-)
Liste der Anhänge anzeigen (Anzahl: 1)
also folgendes problem der quelltext wird richtig compiliert und weist keine fehler auf meiner ansicht nach, was natürlich nicht gerade stimmen muss da ich gerade anfänger bin. das problem liegt daran das wenn ich das programm starte der ball einfach nicht erstellt wir da kann ich machen was ich will und wenn ich ihn net sehe bewegt er sich natürl. auch net :-). hier mal der quelltext. ist erst halbfertig...
Delphi-Quellcode:
achso ich will keinen gegenspieler nur alle wände zum abprallen und daher die frage ist der ansatz mit y wänden schon mal richtig?
unit Unit1;
interface uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, jpeg, ExtCtrls; type TForm1 = class(TForm) Panel2: TPanel; Timer1: TTimer; Panel1: TPanel; Keeper: TImage; Image1: TImage; procedure FormKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); procedure Timer1Timer(Sender: TObject); procedure FormCreate(Sender: TObject); private ball: TBitmap; public end; var Form1: TForm1; posx,posy,speedx,speedy,breite,hoehe:Integer; implementation {$R *.DFM} procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); begin repaint; breite:=745; hoehe:=441; //Torwartbewegung Hoch-Runter If Key=vk_down then Keeper.Top:=Keeper.Top+5; If Key=vk_up then Keeper.Top:=Keeper.Top-5; end; procedure TForm1.Timer1Timer(Sender: TObject); begin //Aprallen von Wänden if posy >= hoehe-60 then speedy:= - speedy ; if posy <= -40 then speedy:= - speedy ; //Ball Canvas.Draw(posx+40,posy+40, ball); //Bewegung posx:= posx + speedx; posy:= posy + speedy; end; procedure TForm1.FormCreate(Sender: TObject); begin //Ball create ball:= TBitmap.Create; ball.LoadFromFile('ball1.bmp'); //Geschwindigkeit des Balls speedx:=2; speedy:=2; end; End. schon mal im voraus vielen dank für eure hilfe Mfg euer niggha |
Re: Fußball Pong plz Help ich kann net mehr ;-)
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo, der Ball wird sehr wohl erstellt, blos leider hinter deinen Panels, das heißt du siehst ihn nicht.
Ich würde dir raten den Ball nicht als TBitmap zu laden sondern in einer normalen Image Komponente. Das mit den Wänden stimmt auch noch nicht so ganz, da der Ball ja an den "Panelwänden" und nicht an den Fensterwänden abprallen soll, also musst du die Panel Werte verwenden und nicht ClientHeight/Width. Ausserdem gehören die Zuweisungen wohl eher in das "FormCreate" Event. Ich habe hier mal deine Version etwas abgeändert (wie oben beschrieben) und das Programm funktioniert ja so Ansatzweise auch schon:
Delphi-Quellcode:
unit Unit1;
interface uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, jpeg, ExtCtrls; type TForm1 = class(TForm) Panel2: TPanel; Timer1: TTimer; Panel1: TPanel; Keeper: TImage; Image1: TImage; ImageBall: TImage; procedure FormKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); procedure Timer1Timer(Sender: TObject); procedure FormCreate(Sender: TObject); private public end; var Form1: TForm1; posx,posy,speedx,speedy,breite,hoehe:Integer; implementation {$R *.DFM} procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); begin //Torwartbewegung Hoch-Runter If Key=vk_down then Keeper.Top:=Keeper.Top+5; If Key=vk_up then Keeper.Top:=Keeper.Top-5; end; procedure TForm1.Timer1Timer(Sender: TObject); begin //Aprallen von Wänden if posy >= hoehe-60 then speedy:= - speedy ; if posy <= -40 then speedy:= - speedy ; //Ball ImageBall.Top:=posy+30; ImageBall.Left:=posx+30; //Bewegung posx:= posx + speedx; posy:= posy + speedy; end; procedure TForm1.FormCreate(Sender: TObject); begin breite:=Panel1.Width; hoehe:=Panel1.Height; //Ball create ImageBall.Picture.LoadFromFile('ball1.bmp'); //Geschwindigkeit des Balls speedx:=2; speedy:=2; end; End. |
Re: Fußball Pong plz Help ich kann net mehr ;-)
vielen lieben dank da kann ich ja erstmal weiter basteln wenn ich wieder was habe meld ich mich *freu*.
Niggha |
Re: Fußball Pong plz Help ich kann net mehr ;-)
so jetzt gehts weiter ich stell mein prog jetzt nicht nochmal rein...aber folgendes Problem also soweit läuft alles wie ich mir das vorstelle nun komm ich an den punkt wo ich die kollisionsabfrage schreiben muss zwischen dem ball und dem keeper...das problem ist ich mit meinen 0815-kentnissen hab mal wieder kein plan wie ich das anstellen soll. hab hier schon paar quelltexte durchgeackert aber so richtig schlau werd ich nicht. vielleicht kann mir ja mal einer erklären wie ich das machen muss und paar quelltextschnipsel mit schreiben. und schon wieder hau ich mir ne nacht um die ohren...:-)
danke schon mal Niggha |
Re: Fußball Pong plz Help ich kann net mehr ;-)
sorry benutze kein RAR ^^
|
Re: Fußball Pong plz Help ich kann net mehr ;-)
Zitat:
Irgendwie kam mir das jetzt in etwa so vor, also ob jemand in einem x-beliebigen Thread reinposten würde: "Sorry, hab keine Ahnung" :roll: Wenn du ausdrücken willst, dass du lieber ein ZIP-Archiv hättest, dann sag das lieber so, dass mans gleich erkennen kann. Aber nun BTT: Im Tutorial-Sektor gibts ein tutorial "Hausgemachte Pixelgeaue Kollisionsabfrage", vielleicht is das was für dich, won. :) |
Re: Fußball Pong plz Help ich kann net mehr ;-)
reicht da nicht, da die einfrage nur eindimensional sein muss sowas?
Delphi-Quellcode:
function Collision: Boolean;
begin Result:=Ball.Width+Ball.Left => Goalie.Left; end; |
Re: Fußball Pong plz Help ich kann net mehr ;-)
Im Tutorial ist das zwar gut und schön aber auch ganz schön umständlich und ewig lang kennt keiner eine bessere variante ich hab mal aus nem anderen pong game ein stück quelltext allerdings ist das für 2schläger:
Delphi-Quellcode:
ich seh da blos nicht ganz durch wie ichs auf mein game anwenden könnte kann natürlich auch daran liegen das ich bloß 5stunden schlaf hatt ;-)
//Abprallen player1 und 2
if (posx > (button2.left-30 ) + Button2.Width -40 ) or (posx < Button1.Left + Button1.Width - 40) then begin if (posy < Button1.Top + Button1.Height ) and (posy > Button1.Top ) or (posy < Button2.Top + Button2.Height -50 ) and (posy > Button2.Top - 70 ) then geschwx := - geschwx ; |
Re: Fußball Pong plz Help ich kann net mehr ;-)
@Ultimator
wundersamerweise bist du auf ein ZIP-Archiv gekommen. Das ich dabei nicht die Worte gewählt habe, die deinem Geist am sympathischsten sind, ist ganz alleine dein Problem! Mach es bitte nicht zu meinem oder dem von anderen ... |
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:37 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz