KI funktioniert nich

Kimble

Erfahrenes Mitglied
hi,
ich bin grad dabei fuer mein kleines Spiel (OpenGL) ne Ki zu programmieren. Dazu hab ich zuerst ein kleines Testprogramm geschrieben. Der Bot laeuft auch dahin, wo ich will, nur wenn er an dem Punkt angekommen ist, reagiert das Programm nicht mehr.
Hier ist mal der Code:

Code:
float player_x=1,player_y=1;

glPointSize(3.0);
glColor3f(0.5,0.5,0.0);
glBegin(GL_POINTS);
        glVertex3f(player_x,player_y,0.0);
	glVertex3f(bot_x,bot_y,0.0);
glEnd();

// nur zur besseren Sicht
glBegin(GL_LINES);
	glVertex3f(player_x,player_y,0.0);
	glVertex3f(bot_x,bot_y,0.0);
glEnd();

// Bot bewegt sich bis zum Player
do{
        bot_x+=0.01;
}while(bot_x>player_x);

do{
	bot_y+=0.01;
}while(bot_y>player_y);

Bitte helft mir!!! :(
 
kommt hinter den beiden schleifen noch irgendwas? oder hast du die stelle mal mit dem debugger untersucht? vielleicht stimmt ja irgendwas mit den werten nicht genau.
 
hinter den beiden Schleifen kommt nichts mehr, im Debugger kommt nur:
Code:
E:\bot-test\Lesson1.cpp(79) : warning C4305: '+=' : Verkuerzung von 'const double' in 'float'
E:\bot-test\Lesson1.cpp(83) : warning C4305: '+=' : Verkuerzung von 'const double' in 'float'
E:\bot-test\Lesson1.cpp(428) : warning C4305: '+=' : Verkuerzung von 'const double' in 'float'
E:\bot-test\Lesson1.cpp(433) : warning C4305: '-=' : Verkuerzung von 'const double' in 'float'
E:\bot-test\Lesson1.cpp(438) : warning C4305: '-=' : Verkuerzung von 'const double' in 'float'
E:\bot-test\Lesson1.cpp(443) : warning C4305: '+=' : Verkuerzung von 'const double' in 'float'
was ja eigentlich relativ egal ist im Bezug darauf, ob sich das Programm aufhängt oder nicht.
 
moin

bei den warnungen wird die erste warnung in zeile 79 angezeigt.
wenn das die zeile "bot_x+=0.01;" kann es sein das es zu problemen kommt wenn "bot_x und "0.01" unterschiedliche typen haben!!

wenn der compiler aus der 0.01 eine 0 macht und der player und der bot auf den selben koordinaten sind könnte es doch sein das er sich aufhängt!?! ver such doch mal was anderes als 0.01! ich hab aber keine ahnung won OPENGL also is es nur ne vermutung!!


mfg umbrasaxum
 
so, ich hab jetzt ungefähr 1 Tag gebraucht um zu kapiern, dass ich den falschen Algorythmus nehm :rolleyes: .

hier jetzt die Lösung, die funktioniert (für alle, die das gleiche Problem haben):
Code:
/* y=mx+b
    m=y/x            // b kann man weglassen
    m=(y2-y1)/(x2-x1)
*/

float m;      // Steigung
m=(player_y-bot_y)/(player_x-bot_x);
for(float i=bot_x; i<=player_x; i++) {
    bot_x+=0.01;
    bot_y+=(m/100);
};
 

Neue Beiträge

Zurück