Einzelnen Beitrag anzeigen

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, 22: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