Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!
Werbeanzeige
C-/C++-Quelltext |
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 |
virtual float GetAngleToEnemy(const GameState& GS, int Me, int You) { float angle; // get vars float myAngle, youAngle, myxPos, myyPos, youxPos, youyPos; myxPos = GS.Players[Me].xPos; myyPos = GS.Players[Me].yPos; youxPos = GS.Players[You].xPos; youyPos = GS.Players[You].yPos; myAngle = GS.Players[Me].Angle; youAngle = GS.Players[You].Angle; // create normalized direction vector float myxDirection = sin(myAngle); float myyDirection = cos(myAngle); // move enemy vector into local coord-system and normalize youxPos -= myxPos; youyPos -= myyPos; Normalize(youxPos, youyPos); // get angle with dotprod angle = acos(myxDirection * youxPos + myyDirection * youyPos); return angle; } |
C-/C++-Quelltext |
|
1 2 3 4 |
if (myxPos > GS.Players[You].xPos) return angle; else return 2*Pi-angle; |
Zitat von »"Helmut"«
Hi,
@MMAnfänger
Es gibt natürlich kein Codezeilenlimit oder so. Man darf nur nicht vergessen, dass die KI für die 5 Minuten Spielzeit auch nur 5 CPU Zeitsekunden hat. Im Durchschnitt muss sie also in Echtzeit laufen. Danach wird die KI nicht mehr aufgerufen.
Quellcode |
|
1 2 3 4 5 6 7 8 9 10 |
#include <stdio.h> #include <stdarg.h> int sprintf_s(char* str, size_t str_size, const char *format, ...) { va_list ap; va_start(ap, format); int res = vsprintf(str, format, ap); va_end(ap); return res; } |
Werbeanzeige