Thema: Delphi ping-pong spiel

Einzelnen Beitrag anzeigen

Nils_13

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

Re: ping-pong spiel

  Alt 20. Dez 2005, 13:56
Hi !

[EDIT]Herzlich Willkommen in der dp ![/EDIT]

Das ist eine Möglichkeit eine KI zu programmieren:
Delphi-Quellcode:
procedure TForm1.ki;
var schritt: integer;
begin
  // enemy = 'gegnerischer Balken'
  schritt := 1;
  if ball.Top > enemy.Top then enemy.Top := enemy.Top+schritt;
  if ball.Top < enemy.Top then enemy.Top := enemy.Top-schritt;
end;
Delphi-Quellcode:
procedure TForm1.tTimer(Sender: TObject);
var toleranz : integer; // umgebung um den balken herum in pixeln
begin
  // player = Spilerbalken
  toleranz := ball.Width div 2;
  if (ball.top > player1.top -1-toleranz) and (ball.top < player1.top + player1.height +1+toleranz) and (ball.left = player1.left+player1.width) then xspeed := -xspeed;
end;
Eine schlechte Methode eine Kollisionserkennung zu programmieren ist diese, aber sie funktioniert bei bestimmten Vorraussetzungen:
  • Form muss 352 Pixel breit sein
  • Form muss 380 Pixel hoch sein
  • Player Left muss 0 entsprechen
  • Gegner Left muss 328 entsprechen
Ohne diese Vorrausetzungen kann es zu allenmöglichen Fehlern kommen, teilweise nur Fehler, so dass der Ball durch den Spieler durchläuft und dann ganz links oder rechts abprallt ... . Aber nun zum Code:
Delphi-Quellcode:
//Ballkollision
if (Abs(ball.Left - enemy.left) <= 5) and (Abs(ball.Top - enemy.Top) <= 5) then xspeed:= -xspeed;
if (ball.top > player1.top -1-toleranz) and (ball.top < player1.top + player1.height +1+toleranz) and (ball.left = player1.left+player1.width) then xspeed := -xspeed;

//Kollisionserkennung
if ball.Left<0 then
begin

end;

if ball.Left>345 then
begin

end;

if ball.Left<0 then xspeed := -xspeed;

if ball.Top<0 then yspeed := -yspeed;
if ball.Left>346 then xspeed := -xspeed;
if ball.Top>346 then yspeed := -yspeed;
  Mit Zitat antworten Zitat