Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

1

14.07.2014, 19:36

Pong Winkel ??

Guten Abend.
Ich dachte mir ich programmiere mal zwischendurch ein kleines Pong Spiel(Clon) mit der SFML und C++.
Vorweg sage ich das ich weiss das es darüber im Internet nur so von Antworten wimmelt, doch meine englisch Kenntnisse halten sich begrenzt.
Ich verstehe nicht ganz wie ich den Abprall des Balles berechne auch wenn es immer nur 45 Crad Winkel sind. Bisher habe ich es geschafft denn Ball zwischen 2 Paddles(Schläger) zu bewegen so das sich der Ball immer
nach links und rechts bewegt. Doch leider immer nur wagerecht. Die Startposition des Balles beginnt in der Mitte des Fensters und bewegt sich dann Richtung Spieler Paddle. Wenn eine Kollison zwischen dem Paddle statt gefunden hat drehe ich denn Wert der X-Koordinate einfach um. Mehr habe ich bisher leider noch nicht geschaft. :thinking:

Also meine Frage:
Wie bekomme ich es hin denn Winkel zu berechnen ?.

Ich hoffe ihr habt da so ein paar hilfreiche Tipps.

MFG
Sceiwen

CeDoMain

Alter Hase

Beiträge: 587

Wohnort: Ilmenau

Beruf: Student für Mechatronik

  • Private Nachricht senden

2

14.07.2014, 19:54

Du meinst glaube ich die Formel: Einfallswinkel = Ausfallwinkel

Um in das Spiel mehr Dynamik hineinzubekommen, kannst du den Ball entweder etwas zufällig Abprallen lassen oder die Geschwindigkeit des Schlägers mit einberechnen. Weil es bei Pong nur waagerechte und senkrechte Flächen gibt, ist das sehr einfach mit dem Abprallen, denn du drehst einfach die X- und die Y-Geschwindigkeit um ( - ) und rechnest dann zur Y-Geschwindigkeit einen Zufallswert dazu oder die Geschwindigkeit (mal irgendeinen Faktor).

Denn wenn die Geschwindikeit Positiv ist, dann wird der Ball ja auch in positive Richtung abgelenkt oder wenn sie negativ ist in negative.

Zum Beispiel so:

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
int BallVeloX;
int BallVeloY;
int SchlägerVeloY;

void Collision(bool VerticalCollision, bool Realistic)
{
    if(VerticalCollision)
    {
        BallVeloX *= -1;
        if(!Realistic)
        {
            BallVeloY += RandomInteger(0, 2);
        }
        else
        {
            BallVeloY += SchlägerVeloY * 0.5;
        }
    }
    else
    {
        BallVeloY *= -1;
    }
}
Mit freundlichem Gruß
CeDo
Discord: #6996 | Skype: cedomain

Lass solche persönlichen Angriffe lieber bleiben, meine sind härter.

FSA

Community-Fossil

  • Private Nachricht senden

3

14.07.2014, 19:58

Entweder ich habe einen Denkfehler oder dein Code ist Schrott. Wenn der Ball von Unten nach Oben fliegt und den Schläger trifft, müsste er nach deinem Code nach unten fliegen. Im Bild rechts ist dein Code, links wie es sein müsste.
»FSA« hat folgendes Bild angehängt:
  • Err.png

Zitat

Der RCCSWU (RandomCamelCaseSomtimesWithUndersquare) Stil bricht auch mal mit den veraltet strukturierten Denkmustern und erlaubt dem Entwickler seine Kreativität zu entfalten.

CeDoMain

Alter Hase

Beiträge: 587

Wohnort: Ilmenau

Beruf: Student für Mechatronik

  • Private Nachricht senden

4

14.07.2014, 19:59

Habe den Code berichtigt! Kam mir schon etwas komisch vor beim Tippen... :D
Mit freundlichem Gruß
CeDo
Discord: #6996 | Skype: cedomain

Lass solche persönlichen Angriffe lieber bleiben, meine sind härter.

DeKugelschieber

Community-Fossil

Beiträge: 2 641

Wohnort: Rheda-Wiedenbrück

Beruf: Software-Entwickler

  • Private Nachricht senden

5

14.07.2014, 21:12

Man könnte auch den Abstand zum Zentrum des Schlägers berechnen und das auf die y Komponente der Ballrichtung packen.

Also: Einfalls = Ausfallswinkel; Ausfallwinkel.y += normalisiert(SchlägerMitte-Ball.y)*Faktor

Den Faktor kannst du ja noch variieren, damit man kein y von ~1 bekommen kann.
Dadurch lässt sich der Ball auf jeden Fall besser steuern.

6

14.07.2014, 21:15

Ich hätte nie gedacht, dass ich das mal brauche, aber hier kannste ja mal nachschauen :D

Tutorial:Pong eventl. Verbesserung?

CeDoMain

Alter Hase

Beiträge: 587

Wohnort: Ilmenau

Beruf: Student für Mechatronik

  • Private Nachricht senden

7

15.07.2014, 16:50

Du musst dir halt überlegen, wie du den Abprall erklären willst ... wenn du DeKugelschiebers Vorschlag nimmst, dann ist ein gebogener Schläger sicher relistisch. Bei meinem Vorschlag ist ein gerader Schläger passend.

Ich finds interessant, was man alles mit Pong machen kann, man kann ja auch ganz andere Formen nehmen - auch die Wände oder so könnten ja mal verformt werden! :D Oder der Schläger wird auf einer nicht-Linearen Bahn geführt...
Mit freundlichem Gruß
CeDo
Discord: #6996 | Skype: cedomain

Lass solche persönlichen Angriffe lieber bleiben, meine sind härter.

8

15.07.2014, 17:25

Ok Danke werde versuchen was daraus zu machen :D

CeDoMain

Alter Hase

Beiträge: 587

Wohnort: Ilmenau

Beruf: Student für Mechatronik

  • Private Nachricht senden

9

15.07.2014, 22:16

Schreib dann mal, wie das geworden ist!!! Ich finde das sehr interessant! ;)
Mit freundlichem Gruß
CeDo
Discord: #6996 | Skype: cedomain

Lass solche persönlichen Angriffe lieber bleiben, meine sind härter.

10

16.07.2014, 15:36

Schreib dann mal, wie das geworden ist!!! Ich finde das sehr interessant! ;)

Klar, wenn du willst kann ich dir auch denn Quellcode geben.

Link: http://www.mediafire.com/download/08710c…/Pong-Clone.rar

Ps: bin noch nicht so weit aber immerhin erfüllt es seinen Zweck :D

Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von »Sceiwen« (16.07.2014, 17:41)


Werbeanzeige