| Autor |
Beitrag |
Prophet-
      
Beiträge: 29
Win 7
Delphi 7
|
Verfasst: Di 02.06.09 19:44
Hi Community,
mein Pacman Projekt ist schon bald fertig, das einzige was mir noch fehlt ist die KI. Könnt ihr mir Tipps geben wie man eine KI am besten programmiert, was man beachten muss und wie man es auf keinen Fall tun sollte. Hab mir überlegt, dass der Geist so lange in eine Richtung geht, bis er nicht mehr weiter kann und dann seine Richtung ändert. Da ich noch Anfänger bin, bitte die leichten Vorschläge zuerst, wenn ich die hinbekomme, dann versuch ich die schweren. Wäre euch dankbar für viele Vorschläge.
LG LB
€dit: Hier mal mein Projekt wie es bisher aussieht:
€dit2: Bisher hab ich mit der SuFu wenig hilfreiches gefunden.
Einloggen, um Attachments anzusehen!
|
|
Dude566
      
Beiträge: 1592
Erhaltene Danke: 79
W8, W7 (Chrome, FF, IE)
Delphi XE2 Pro, Eclipse Juno, VS2012
|
Verfasst: Di 02.06.09 21:51
Ich habe mir dein Projekt noch nicht angeschaut aber wenn du sagst dein Projekt wäre so gut wie fertig, wie kann es dann sein das keinerlei KI vorhanden ist?
Also ich meine so ein Programm funktioniert ja zum Beispiel nur durch Kollisionsabfragen.
Wenn du eine konkrete Frage hast kann ich dir vielleicht helfen. 
_________________ Es gibt 10 Gruppen von Menschen: diejenigen, die das Binärsystem verstehen, und die anderen.
|
|
Waldkauz
      
Beiträge: 102
|
Verfasst: Di 02.06.09 22:10
weiß nicht, aber ich würds einfach so probieren:
leg dir zunächst eine globale Variable
Delphi-Quelltext
an.
Delphi-Quelltext 1: 2: 3: 4: 5:
| Geist.Left:=Geist.Left+bewegung; if Geist.Left >= (Spielfeld.Width-Pacman.Width) then bewegung:=bewegung*(-1); if Geist.Left = Spielfeld1.Left then bewegung:=bewegung*(-1); |
so müsste es meiner Meinung nach am einfachsten sein, vorausgesetzt dein Geist ist ein Shape oder TImage
|
|
Prophet- 
      
Beiträge: 29
Win 7
Delphi 7
|
Verfasst: Mi 03.06.09 17:17
@ Dude566
Ich hab geschrieben, dass es bald fertig ist, nicht fast! Das ist ein Unterschied. Meine Frage sollte allgemein formuliert sein, da ich ein paar Tipps haben will bevor ich die KI programmiere.
@Waldkauz
Ich hab nicht umsonst mein Projekt hochgeladen. Mein Pacman wird zuerst in einem zweidimensionalen Array bewegt und danach wird erst gezeichnet. Deshalb ist dein Quellcode hier fehl am Platz, außerdem bewegen kann ich den Pacman bzw Geist auch manuell nur das will ich ja durch die KI lösen.
|
|
arj
      
Beiträge: 378
Win XP/Vista, Debian, (K)Ubuntu
Delphi 5 Prof, Delphi 7 Prof, C# (#Develop, VS 2005), Java (Eclipse), C++, QT, PHP, Python
|
Verfasst: Mi 03.06.09 18:31
Prophet- hat folgendes geschrieben : | | Deshalb ist dein Quellcode hier fehl am Platz |
Das war aber nicth sehr freundlich, immerhin hat er versucht Dir zu helfen ...
Da die Geister ja immer in Richtung Spieler laufen sollen, würde ich versuchen
genau diese Bewegung auszuführen - außer es ist eine Wand da.
Wenn Du einen zweidimensionalen diskreten Vektor erstellst, der von der Position des Geistes ausgeht
und zu der Spielerposition zeigt, gibt es 3 Fälle (und die Symmetrischen):
- (0,1) Versuchen einen Schritt nach rechts zu gehen mit dem Geist. Sollte eine Wand da sein,
dann einfach beliebig nach oben, unten, oder links gehen (je nach Möglichkeit)
- (1,1) Versuchen nach oben/rechts zu laufen, falls Wand, entsprechend nach rechts/oben. Oder andere Richtung (je nach Möglichkeit)
- (1,0) Versuchen, nach oben zu laufen. Wiederrum, falls Wand entsprechend nach links/rechts.
Wichtig ist, dass die Geister nicht "zappeln", d.h. in einem Zeitschritt nach links und im anderen
nach rechts laufen (außer du läufst mit dem Spieler laufend von links nach rechts  )
Viel Erfolg!
|
|
Prophet- 
      
Beiträge: 29
Win 7
Delphi 7
|
Verfasst: Mi 03.06.09 19:47
arj hat folgendes geschrieben : | Prophet- hat folgendes geschrieben : | | Deshalb ist dein Quellcode hier fehl am Platz |
Das war aber nicth sehr freundlich, immerhin hat er versucht Dir zu helfen ...
|
Sorry wenn ich ein bisschen schroff vorkomme, war nich so gemeint.
@ arj ich werds versuchen, danke
Gibt es noch weitere Vorschläge?
|
|
alzaimar
      
Beiträge: 2889
Erhaltene Danke: 13
W2000, XP
D6E, BDS2006A, DevExpress
|
Verfasst: Mi 03.06.09 21:15
Die Geister wollen ja den Spieler 'fressen' (oder berühren, scheint ja auszureichen und ist auch politisch korrekt). Also werden Sie sich auf den Spieler zu bewegen: Von den 4 Bewegungsmöglichkeiten werden die gestrichen, die aufgrund einer Wand nicht möglich sind. Dann wird die Bewegung genommen, die die Entfernung zum Spieler *verkürzt*. Wenn der Spieler im Supermodus ist (bzw., um wieder politisch korrekt zu sein, mit den Geistern Tee trinken will) rennen diese ja vor ihm weg. Dann wird der Schritt genommen, der die Entfernung zum Spieler *verlängert*.
Sollte kein Problem sein.
_________________ Na denn, dann. Bis dann, denn.
|
|
Dude566
      
Beiträge: 1592
Erhaltene Danke: 79
W8, W7 (Chrome, FF, IE)
Delphi XE2 Pro, Eclipse Juno, VS2012
|
Verfasst: Mi 03.06.09 21:31
_________________ Es gibt 10 Gruppen von Menschen: diejenigen, die das Binärsystem verstehen, und die anderen.
|
|
Prophet- 
      
Beiträge: 29
Win 7
Delphi 7
|
Verfasst: Do 04.06.09 15:50
Deshalb hab ich ja mein Projekt hochgeladen.
|
|
|