AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Multimedia Delphi ballbewegung in breakout spiel
Thema durchsuchen
Ansicht
Themen-Optionen

ballbewegung in breakout spiel

Ein Thema von Ricoo · begonnen am 17. Jun 2008 · letzter Beitrag vom 1. Jul 2008
Antwort Antwort
Seite 2 von 2     12   
Gandalfus

Registriert seit: 19. Apr 2003
407 Beiträge
 
Delphi 2006 Professional
 
#11

Re: ballbewegung in breakout spiel

  Alt 23. Jun 2008, 13:44
du solltest garkeine festen werte nehmen sondern timebased movement. Also was addiert wird ist von der vergangenen Zeit und einer festgelegten Geschwindigkeit abhängig. Nur die Richtung ist fest. In dem verlinkten Artikel ist das gut beschrieben.

Beispiel:

Delphi-Quellcode:
PosX: double;
PosY: double;

speedX: double;
speedY: double;

newPosX:=speedX * vergangene_Zeit + alte_PosX;
newPosY:=speedY * vergangene_Zeit + alte_PosY;

der Speed Vektor gibt die richtung vor und der Betrag(also länge des Vektor) die Geschwindigkeit .
Besucht doch mal meine Homepage
  Mit Zitat antworten Zitat
mimi

Registriert seit: 1. Dez 2002
Ort: Oldenburg(Oldenburg)
2.008 Beiträge
 
FreePascal / Lazarus
 
#12

Re: ballbewegung in breakout spiel

  Alt 23. Jun 2008, 23:49
Ich habe das jetzt bei mir so gelöst:
Delphi-Quellcode:
var
  px,py:Integer;
begin
  if BallMove then begin
    if b_t +1 >=20 then begin
      b_t:=0;

      if Hori = cLeft then
        px:=Ball.Left-p_Hori.x
      else
        px:=Ball.Left+p_Hori.x;

      if Verti = cDown then
        py:=Ball.top+P_Verti.y
      else
        py:=Ball.top-P_Verti.y;

      if Engine.SpriteManger.N_Collision(px,py,ball,false,false) <> NIL then begin
        Hori:=not Hori;
        Verti:=not Verti;
        P_Verti:=Point(0,random(10)+1);
        p_Hori:=Point(random(10)+1,0);
        if Hori = cLeft then
          px:=Ball.Left-p_Hori.x
        else
          px:=Ball.Left+p_Hori.x;

        if Verti = cDown then
          py:=Ball.top+P_Verti.y
        else
          py:=Ball.top-P_Verti.y;
      end;

      ball.Left:=px; ball.Top:=py;
      ball.DrawSprite;
    end
    else
      inc(b_t);
  end;
Dieser Code wird in einem Timer ausgeführt. Darum habe ich eine zeitschleife verwendet.
Das Prinzip klappt eigentlich recht gut. Es sind Integer zahlen. Das reicht. Der ball fliegt jetzt nicht mehr vorhersehbar. Bei allen anderen BreakOut Varianten die ich erstellt habe, flog der ball eigentlich immer vorhersehbar
p_Hori. und p_Verti sind im Moment TPoints, aber ich glaube das ändere ich noch in Integer.
(Ich nutzte meine eigene Engine, hier und nicht die Andorra)
Michael Springwald
MFG
Michael Springwald,
Bitte nur Deutsche Links angeben Danke (benutzte überwiegend Lazarus)
  Mit Zitat antworten Zitat
Gandalfus

Registriert seit: 19. Apr 2003
407 Beiträge
 
Delphi 2006 Professional
 
#13

Re: ballbewegung in breakout spiel

  Alt 25. Jun 2008, 14:12
Zitat:
Darum habe ich eine zeitschleife verwendet.
was meinst du damit?
Du solltest wirklich mal timebased movement versuchen.

btw.: vermutlich eignen sich hier Polarkoordinaten bessere als die Kartesischen. Damit wäre die Berechnung Ausfallswinkel=Einfallswinkel leichter.
Besucht doch mal meine Homepage
  Mit Zitat antworten Zitat
mimi

Registriert seit: 1. Dez 2002
Ort: Oldenburg(Oldenburg)
2.008 Beiträge
 
FreePascal / Lazarus
 
#14

Re: ballbewegung in breakout spiel

  Alt 25. Jun 2008, 14:37
Damit sich der Ball von alle bewegt nutzte ich ein Timer. Dieser steht bei mir auf 3 MS.
Damit der Ball nicht zu schnell fliegt verwende ich eine "Zeitschleife" so nenne ich das, damit der ball nur noch alle 20 MS(?) aufgerufen wird.

In dieser Procedure könnte ich aber noch andere sachen machen z.b. eine Zeit anzeige. Damit kann ich nicht beim Timer nicht pauschal sagen rufe das Event alle 20ms(?) auf.

Zitat:
Du solltest wirklich mal timebased movement versuchen.
Das habe ich auch noch vor. Nur ganz verstanden habe ich das bisher noch nicht.
z.b. kann ich eine Standard Geschwindigkeit angeben ?

Zitat:
btw.: vermutlich eignen sich hier Polarkoordinaten bessere als die Kartesischen. Damit wäre die Berechnung Ausfallswinkel=Einfallswinkel leichter.
Leider bin ich nicht so gut in Mahte. Mit Polarkoordinaten meinst du bestimmt ein Rundes "Positions System" oder ?
Damit habe ich noch keine Erfahrung. Ich bin froh das es so eigentlich ganz gut läuft. Abgesehen von den ecken, wo der ball lieben gerne eine weile verweilt *G*
Michael Springwald
MFG
Michael Springwald,
Bitte nur Deutsche Links angeben Danke (benutzte überwiegend Lazarus)
  Mit Zitat antworten Zitat
Ricoo

Registriert seit: 10. Jul 2007
35 Beiträge
 
#15

Re: ballbewegung in breakout spiel

  Alt 1. Jul 2008, 22:54
danke für eure hilfe.. das sollte allemal reichen =D
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 2     12   


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 20:37 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