AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Multimedia Delphi Nicht einfallswinkel = ausfallswinkel bei Pong
Thema durchsuchen
Ansicht
Themen-Optionen

Nicht einfallswinkel = ausfallswinkel bei Pong

Ein Thema von NMR · begonnen am 1. Feb 2006 · letzter Beitrag vom 2. Feb 2006
Antwort Antwort
NMR

Registriert seit: 1. Feb 2006
Ort: Beckum
19 Beiträge
 
#1

Nicht einfallswinkel = ausfallswinkel bei Pong

  Alt 1. Feb 2006, 16:12
Hi
ich habe mal ne frage
wie schaff ich das bei dem dem Spiel pong das der einfallswinkel nicht gleich ausfallswinkel ist?
Vll. mit random nur wie?
ein teil meinses Delphi Quelltextextes..
SCHON MAL DANKE!!!

Delphi-Quellcode:
procedure TForm1.Timer1Timer(Sender: TObject);

begin

(...)
      if (Ball.Left < 0) then begin
        scorep2 := scorep2 + 1;
        Ball.Left := 320 ;
        xspeed := 1;
        yspeed := 2;
         exit;

  end;

      if (Ball.Left > 800) then begin
        scorep1 := scorep1 + 1;
        Ball.Left := 320 ;
        xspeed := -1;
        yspeed := 2;
         exit;
end;

   if yspeed = 0 then yspeed := 2;
   if xspeed = 0 then xspeed := 5;
      Ball.Top := Ball.Top + yspeed;
      Ball.Left := Ball.Left + xspeed;
   if (Ball.Top > 500)
     or (Ball.Top <= 0)
       then yspeed := -yspeed;

   if (Ball.Left < shape1.Left + 22)
     and (Ball.Top > shape1.Top)
     and (Ball.Top < shape1.Top + 90)
      then xspeed := + speed;

   if (Ball.Left > shape2.Left - 22)
      and (Ball.Top > shape2.Top)
      and (Ball.Top < shape2.Top + 90)
        then xspeed := - speed;

   if (shape2.Top + 28 > Ball.Top)
       and (shape2.Top > 0)
         then shape2.Top := shape2.Top - dif;

   if (shape2.Top + 28 < Ball.Top)
       and (shape2.Top < 444)
         then shape2.Top := shape2.Top + dif;

(...)
     
end;
  Mit Zitat antworten Zitat
Benutzerbild von JamesTKirk
JamesTKirk

Registriert seit: 9. Sep 2004
Ort: München
604 Beiträge
 
FreePascal / Lazarus
 
#2

Re: Nicht einfallswinkel = ausfallswinkel bei Pong

  Alt 1. Feb 2006, 16:55
Ich an deiner Stelle würde die Verschiebung des Balles mit Sinus und Kosinus erledigen... Braucht man allerdings an kleinen Umweg:

Delphi-Quellcode:
var x,y,angle:Single; //globale Variablen
//Der Winkel ist im Bogenmaß anzugeben...

procedure TForm1.Timer1OnTimer(...);
(...)
begin
(...)
  x:=x+cos(angle);
  y:=y+sin(angle);

  Ball.Top:=Trunc(y); //Es geht auch Round(y)
  Ball.Left:=Trunc(x);
(...)
end;
Und die Sache mit dem Abprallwinkel machst du abhängig davon, wie weit der Ball von der Mitte des Schlägers entfernt aufkommt... zB:

Delphi-Quellcode:
//wir sind in der Timer Prozedur
//Als Beispiel: der Ball kommt von links an den rechten Schläger
  if Ball.Left+Ball.Width=Shape2.Left then begin //Ball trifft Schläger
   if (Ball.Top+Ball.Height>=Shape2.Top) and (Ball.Top<=Shape2.Top+Shape2.Height) then begin
    //Ball ist auf Höhe des Schlägers
    
    //Berechnung des neuen Winkels
    angle:=angle+pi/2*((Shape.Top+Shape.Height/2)-(Ball.Top+Ball.Height/2))/10;
    //Ist jetzt nur ein Beispiel...
   end;
  end;

  //Hier dann die Positionsberechnung von oben
So müsste es in groben Zügen funktionieren... Habs jetzt grad net ausgetestet, du musst aber vermutlich ein bisschen mit den Zahlen rumspielen
Falls du Sin(x) und Cos(x) nicht finden kannst, binde die Math Unit ein...
Sven
[Free Pascal Compiler Entwickler]
this post is printed on 100% recycled electrons
  Mit Zitat antworten Zitat
NMR

Registriert seit: 1. Feb 2006
Ort: Beckum
19 Beiträge
 
#3

Re: Nicht einfallswinkel = ausfallswinkel bei Pong

  Alt 1. Feb 2006, 21:03
jo danke schön!!!

würd am liebsten in dem stück vll was ändern mit random(..)

Delphi-Quellcode:
if yspeed = 0 then yspeed := 2;
   if xspeed = 0 then xspeed := 5;
      Ball.Top := Ball.Top + yspeed;
      Ball.Left := Ball.Left + xspeed;
   if (Ball.Top > 500)
     or (Ball.Top <= 0)
       then yspeed := -yspeed;
  Mit Zitat antworten Zitat
NMR

Registriert seit: 1. Feb 2006
Ort: Beckum
19 Beiträge
 
#4

Re: Nicht einfallswinkel = ausfallswinkel bei Pong

  Alt 2. Feb 2006, 19:33
Jp besten dank nochmal hat geklappt wie ich es wollte
  Mit Zitat antworten Zitat
Benutzerbild von JamesTKirk
JamesTKirk

Registriert seit: 9. Sep 2004
Ort: München
604 Beiträge
 
FreePascal / Lazarus
 
#5

Re: Nicht einfallswinkel = ausfallswinkel bei Pong

  Alt 2. Feb 2006, 20:12
Dann ist ja alles bestens Viel Erfolg noch bei dem Klassiker
Sven
[Free Pascal Compiler Entwickler]
this post is printed on 100% recycled electrons
  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 23:21 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