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;