AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Multimedia Delphi Fußball Pong plz Help ich kann net mehr ;-)
Thema durchsuchen
Ansicht
Themen-Optionen

Fußball Pong plz Help ich kann net mehr ;-)

Ein Thema von Niggha · begonnen am 19. Mai 2005 · letzter Beitrag vom 21. Mai 2005
Antwort Antwort
Niggha

Registriert seit: 29. Apr 2005
5 Beiträge
 
Delphi 4 Standard
 
#1

Fußball Pong plz Help ich kann net mehr ;-)

  Alt 19. Mai 2005, 21:37
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:
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.
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?

schon mal im voraus vielen dank für eure hilfe

Mfg

euer niggha
Angehängte Dateien
Dateityp: rar prog_154.rar (229,3 KB, 19x aufgerufen)
  Mit Zitat antworten Zitat
won

Registriert seit: 25. Aug 2003
Ort: Gutach (Breisgau)
8 Beiträge
 
Delphi 6 Enterprise
 
#2

Re: Fußball Pong plz Help ich kann net mehr ;-)

  Alt 19. Mai 2005, 22:53
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.
Angehängte Dateien
Dateityp: rar prog_fixed_520.rar (650,3 KB, 24x aufgerufen)
Jonas
  Mit Zitat antworten Zitat
Niggha

Registriert seit: 29. Apr 2005
5 Beiträge
 
Delphi 4 Standard
 
#3

Re: Fußball Pong plz Help ich kann net mehr ;-)

  Alt 20. Mai 2005, 08:59
vielen lieben dank da kann ich ja erstmal weiter basteln wenn ich wieder was habe meld ich mich *freu*.

Niggha
  Mit Zitat antworten Zitat
Niggha

Registriert seit: 29. Apr 2005
5 Beiträge
 
Delphi 4 Standard
 
#4

Re: Fußball Pong plz Help ich kann net mehr ;-)

  Alt 20. Mai 2005, 23:48
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
  Mit Zitat antworten Zitat
Minz

Registriert seit: 19. Dez 2002
476 Beiträge
 
#5

Re: Fußball Pong plz Help ich kann net mehr ;-)

  Alt 21. Mai 2005, 00:29
sorry benutze kein RAR ^^
  Mit Zitat antworten Zitat
Benutzerbild von Ultimator
Ultimator

Registriert seit: 17. Feb 2004
Ort: Coburg
1.860 Beiträge
 
FreePascal / Lazarus
 
#6

Re: Fußball Pong plz Help ich kann net mehr ;-)

  Alt 21. Mai 2005, 01:19
Zitat von Minz:
sorry benutze kein RAR ^^
Das hat ihm jetzt sicherlich enorm weitergeholfen.
Irgendwie kam mir das jetzt in etwa so vor, also ob jemand in einem x-beliebigen Thread reinposten würde:
"Sorry, hab keine Ahnung"

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.
Julian J. Pracht
  Mit Zitat antworten Zitat
Benutzerbild von glkgereon
glkgereon

Registriert seit: 16. Mär 2004
2.287 Beiträge
 
#7

Re: Fußball Pong plz Help ich kann net mehr ;-)

  Alt 21. Mai 2005, 08:08
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;
»Unlösbare Probleme sind in der Regel schwierig...«
  Mit Zitat antworten Zitat
Niggha

Registriert seit: 29. Apr 2005
5 Beiträge
 
Delphi 4 Standard
 
#8

Re: Fußball Pong plz Help ich kann net mehr ;-)

  Alt 21. Mai 2005, 10:12
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:
//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 ;
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
  Mit Zitat antworten Zitat
Minz

Registriert seit: 19. Dez 2002
476 Beiträge
 
#9

Re: Fußball Pong plz Help ich kann net mehr ;-)

  Alt 21. Mai 2005, 11:51
@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 ...
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:50 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz