AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

ping-pong spiel

Ein Thema von konda · begonnen am 20. Dez 2005 · letzter Beitrag vom 22. Dez 2005
Antwort Antwort
Nils_13

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

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
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 19:58 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz