AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

2d game:ping-pong

Ein Thema von mangaka · begonnen am 9. Apr 2005 · letzter Beitrag vom 9. Apr 2005
Antwort Antwort
Seite 3 von 4     123 4      
mangaka

Registriert seit: 9. Apr 2005
44 Beiträge
 
Delphi 7 Personal
 
#21

Re: 2d game:ping-pong

  Alt 9. Apr 2005, 13:33
speedmaster meinst du vllt dieses magazin:
http://www.pc-magazin.de/common/aktu...onat=05&art=cd
  Mit Zitat antworten Zitat
mangaka

Registriert seit: 9. Apr 2005
44 Beiträge
 
Delphi 7 Personal
 
#22

Re: 2d game:ping-pong

  Alt 9. Apr 2005, 13:37
lol ich krieg die ganze zeit fehlermeldungen bei eurem code..
so bringt es nichts, ihr müht euch ab und ich kann eure codes trozdem nicht anweden...
könntet ihr ma gucken ob die version in dem magazin(siehe link 1 thread vorher) "richtig" ist?
ich kenn mich da nicht aus, daher frag ich so blöd
  Mit Zitat antworten Zitat
Benutzerbild von Wuaegner
Wuaegner

Registriert seit: 8. Feb 2004
406 Beiträge
 
Delphi 6 Enterprise
 
#23

Re: 2d game:ping-pong

  Alt 9. Apr 2005, 13:40
Da die is die richtige.
Wuaegner
Gruß Flo
Unternehmensberatung
  Mit Zitat antworten Zitat
mangaka

Registriert seit: 9. Apr 2005
44 Beiträge
 
Delphi 7 Personal
 
#24

Re: 2d game:ping-pong

  Alt 9. Apr 2005, 13:41
Danke!
Dann mal schnell einkaufen gehn^^
bis gleich!
  Mit Zitat antworten Zitat
Benutzerbild von Khabarakh
Khabarakh

Registriert seit: 18. Aug 2004
Ort: Brackenheim VS08 Pro
2.876 Beiträge
 
#25

Re: 2d game:ping-pong

  Alt 9. Apr 2005, 13:43
Zitat von mangaka:
lasst und mal die probleme hintereinander lösen, damit ich auch nocht mit komme..
erstma also die achsen. wie erstellt man die, und wie kann mit die derzeitige position eines objekt auslesen?
die 2 schläger- wie erstellt man die? die bewegungen kriege ich wohl auch nocht hin aber zu sicherheit, wäre es nett wenn ihr auch dazu was schreibt.
Die Achsen musst du nicht "erstellen", das Grafikobjekt, das du benutzst ( stimmt das wirklich so?), hat schon ein eigenes Koordinatensystem. Die Koordinaten des Spielers/Balls speicherst du als Feld in deiner Klasse, entweder als getrennte x- und y-Integer oder gleich als TPoint:
Delphi-Quellcode:
type
  TBall = class
  private
    FPosition: TPoint;
    FSpeed: TPoint; //TPoint als Vektor, der in jedem Frame zur Position addiert wird
    [...]
Deine Klassen haben dann noch eine "Draw" (von mir aus auch "Zeichnen") Methode, der ein Bitmap übergeben wird, auf das sie sich dann zeichnen. Dann noch eine weitere Klasse, die Engine, sie verwaltet die anderen Objekte und das Bitmap. Über einen TTimer oder QueryPerformanceCounter wird die Methode "Advance" der Engine aufgerufen, diese ruft dann die "Advance"-Methoden der anderen Objekte auf. Beim OnPaint des Formulars wird eine Methode der Engine aufgerufen, die das Bitmap auf die Canvas der Form kopiert.

So stelle ich mir das vor .

[edit] Ich sollte keinen Beitrag vor dem Mittagessen anfangen und danach abschließen .
Sebastian
Moderator in der EE
  Mit Zitat antworten Zitat
Tubos

Registriert seit: 25. Feb 2004
Ort: Yspertal (Niederösterreich)
1.014 Beiträge
 
Delphi 7 Personal
 
#26

Re: 2d game:ping-pong

  Alt 9. Apr 2005, 13:49
Zitat:
was bedeutet in diesem fall outside?
Mein Programm ist in C++ geschrieben und verwendet DirectX.
Es geht dabei um eine Box mit 4 Seitewänden, und einem Ball der drinnen hin- und herrollt. Die Box ist 20*14 groß (wenn ich mich recht erinnere...), wenn man annimmt dass die Box genau in der Mitte ist ergeben sich folgende Konstanten:
Code:
const integer LinkeWand = -10;
const integer RechteWand = 10;
const integer ObereWand = 7;
const integer UntereWand = -7;
Wenn der Ball an der linken Wand abprallt, muss ich einfach die x-Komponente der Bewegungsrichtung ändern. Da gibts nur ein Problem: Der Ball wird jedes Frame weiterbewegt, und die Bewegung ist bei jedem Frame verschieden: dauert das Frame länger, bewegt sich auch der Ball weiter.
Ich überprüfe, ob die Koordinaten des Balls plus Ballradius bereits außerhalb der Box sind. Wenn ich dann die y-Komponente der Bewegungsrichtung umdrehe, kann es passieren dass der Ball zwei Frames braucht um wirklich wieder in der Box zu sein. Und während dieser zwei Frames wird die Bewegungsrichtung des Balles ständig umgedreht! Er hüpft dann hin- und her und kommt nicht mehr in die Box zurück. Um das zu verhindern, verwende ich die Variable outside. Wenn sie auf true ist, dann heißt das dass der Ball gerade außerhalb der Box ist - in dem Fall drehe ich die Bewegungsrichtung nicht um, solange bis er wieder drinnen ist.

Zitat:
udn wie kriege ich die position des balls raus, bzw woher kriege ich solche x- und y-achsen?
Indem du DirectX, OpenGL oder evt. auch die WinAPI verwendest. Bedenke dass DirectX und OpenGL (aber insbesondere DirectX) äußerst kompliziert sind und dass man zunächst die Sprache, in der man programmiert, gut beherrschen sollte um mit sowas anzufangen.


Zitat:
Beim klassischen Ping-Pong wird das doch berücksichtigt oder irre mich da?
Ich glaube nicht dass das beim Computer-Ping-Pong berücksichtigt wird, aber vielleicht meinen wir zwei unterschiedliche Spiele.
Mein Code ist natürlich nur für den Fall dass die Flächen an denen der Ball abprallt achsenparallel sind. Nur dann ist es so einfach.

Zitat:
und^^...wie lasse ich den ball fliegen...
Wieder etwas Pseudocode, ich hoffe du kannst meine Mischung aus Delphi, C++ und Deutsch lesen ^^
Code:
VerwendeteVariablen:
   double TimeCorrectionFactor;
   float FrameTime;
   __int64 PerformanceFrequency;
   __int64 PerformanceCounter;
   float StartTime; // Zeitwert bei Programmstart
   float LastTime; // Der Zeitwert beim letzten Frame
   float CurrentTime; // Derzeitiger Zeitwert in Sekunden


// Beim Programmstart aufrufen, aber möglichst knapp vor dem Berechnen des ersten Frames:
QueryPerformanceFrequency(PerformanceFrequency);
TimeCorrectionFactor=1/PerformanceFrequency;
QueryPerformanceCounter(PerformanceCounter);
StartTime=PerformanceCounter*TimeCorrectionFactor;
LastTime=StartTime;

// Jedes Frame:
QueryPerformanceCounter(PerformanceCounter);
CurrentTime=PerformanceCounter * TimeCorrectionFactor;
FrameTime=(CurrentTime-LastTime);
LastTime=CurrentTime;

// Bewegen eines Objekts unter der Annahme dass objekt.bewegung und objekt.dimension beides zweidimensionale Vektoren mit Gleitkommazahlen sind und die verwendete.... ich sag mal "Grafik-Engine" (z.B. ein TBitMap, die WinAPI oder DirectX oder OpenGL.....) Gleitkommazahlen unterstützt. Auf ein Bitmap kannst du nicht mit Kommazahlen zeichnen, da gibts nur ganze Pixelnummern!
objekt.position = objekt.position + objekt.bewegung * FrameTime
Zitat:
wenn der ball gegen ein hindernis stößt, zb. eine wand, dann soll der einfallswinkel = ausfallswinkel sein, weist du was ich damit meine?
Ja, weiß ich. Ich weiß aber nicht auswendig wie man es berechnet weil ich es noch nie gebraucht habe. Du findest aber sicher Informationen bzw. Formeln dazu im Internet. Ist nicht soooo kompliziert.


Ich weiß nicht was du von den Informationen brauchen kannst, aber die oben geschilderte Methode zur Zeitmessung und framerate-unabhängigen Objektbewegung funktioniert äußerst gut, sofern die dort erwähnten Bedingungen gegeben sind.
Lukas
  Mit Zitat antworten Zitat
mangaka

Registriert seit: 9. Apr 2005
44 Beiträge
 
Delphi 7 Personal
 
#27

Re: 2d game:ping-pong

  Alt 9. Apr 2005, 14:03
1.habe jetzt dieses mag gekauft und versuche gleich delphi 2005pe zu installieren
2.wow-das ist ja schon ein schwerer happen den ihr mir davor wirft...

omg das wird doch etwas zu schwer für den anfang...
wie habt ihr das eigentlich alles gelernt?
unter euch sind doch bestimmt welche die ping-pong programmiert haben, was habt ihr vorher getan?

habt ihr irgendwelche bücher zu empfehlen?
  Mit Zitat antworten Zitat
mangaka

Registriert seit: 9. Apr 2005
44 Beiträge
 
Delphi 7 Personal
 
#28

Re: 2d game:ping-pong

  Alt 9. Apr 2005, 14:14
hier habt ihr was zum totlachn:
HABE DAS SCHEISS FALSCHE MAGAZIN!
ich habe das mag mit der cd version und obowhl im inhalt steht dass borland drin sit gibts keine spur davon im heft
  Mit Zitat antworten Zitat
Nils_13

Registriert seit: 15. Nov 2004
2.647 Beiträge
 
#29

Re: 2d game:ping-pong

  Alt 9. Apr 2005, 14:17
Erwartest du jetzt wirklich das wir lachen, das ist nämlich viel lustiger
  Mit Zitat antworten Zitat
Tubos

Registriert seit: 25. Feb 2004
Ort: Yspertal (Niederösterreich)
1.014 Beiträge
 
Delphi 7 Personal
 
#30

Re: 2d game:ping-pong

  Alt 9. Apr 2005, 14:17
@mangaka: Bitte mach einen neuen Thread auf wenn du eine neue Frage hast. Danke.
Lukas
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 3 von 4     123 4      


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 08:58 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