enemics ja no ixen del area de joc
This commit is contained in:
@@ -37,8 +37,16 @@ void Enemic::inicialitzar() {
|
||||
// fitxer Només inicialitzem l'estat de la instància
|
||||
|
||||
// Posició aleatòria dins de l'àrea de joc
|
||||
centre_.x = static_cast<float>((std::rand() % 580) + 30); // 30-610
|
||||
centre_.y = static_cast<float>((std::rand() % 420) + 30); // 30-450
|
||||
// Calcular rangs segurs amb radi de l'enemic
|
||||
float min_x, max_x, min_y, max_y;
|
||||
Constants::obtenir_limits_zona_segurs(Defaults::Entities::ENEMY_RADIUS,
|
||||
min_x, max_x, min_y, max_y);
|
||||
|
||||
// Spawn aleatori dins dels límits segurs
|
||||
int range_x = static_cast<int>(max_x - min_x);
|
||||
int range_y = static_cast<int>(max_y - min_y);
|
||||
centre_.x = static_cast<float>((std::rand() % range_x) + static_cast<int>(min_x));
|
||||
centre_.y = static_cast<float>((std::rand() % range_y) + static_cast<int>(min_y));
|
||||
|
||||
// Angle aleatori de moviment
|
||||
angle_ = (std::rand() % 360) * Constants::PI / 180.0f;
|
||||
@@ -91,14 +99,16 @@ void Enemic::mou(float delta_time) {
|
||||
float new_y = centre_.y + dy;
|
||||
float new_x = centre_.x + dx;
|
||||
|
||||
// Obtenir límits de la zona de joc
|
||||
// Obtenir límits segurs compensant el radi de l'enemic
|
||||
float min_x, max_x, min_y, max_y;
|
||||
Constants::obtenir_limits_zona(min_x, max_x, min_y, max_y);
|
||||
Constants::obtenir_limits_zona_segurs(Defaults::Entities::ENEMY_RADIUS,
|
||||
min_x, max_x, min_y, max_y);
|
||||
|
||||
// Lògica Pascal: Actualitza Y si dins, sinó ajusta angle aleatòriament
|
||||
// if (dy>marge_dalt) and (dy<marge_baix) then orni.centre.y:=round(Dy)
|
||||
// else orni.angle:=orni.angle+(random(256)/512)*(random(3)-1);
|
||||
if (new_y > min_y && new_y < max_y) {
|
||||
// CORRECCIÓ: Usar inequalitats inclusives (>= i <=) per evitar fugides
|
||||
if (new_y >= min_y && new_y <= max_y) {
|
||||
centre_.y = new_y;
|
||||
} else {
|
||||
// Pequeño ajuste aleatorio: (random(256)/512)*(random(3)-1)
|
||||
@@ -113,7 +123,8 @@ void Enemic::mou(float delta_time) {
|
||||
// Lògica Pascal: Actualitza X si dins, sinó ajusta angle aleatòriament
|
||||
// if (dx>marge_esq) and (dx<marge_dret) then orni.centre.x:=round(Dx)
|
||||
// else orni.angle:=orni.angle+(random(256)/512)*(random(3)-1);
|
||||
if (new_x > min_x && new_x < max_x) {
|
||||
// CORRECCIÓ: Usar inequalitats inclusives (>= i <=) per evitar fugides
|
||||
if (new_x >= min_x && new_x <= max_x) {
|
||||
centre_.x = new_x;
|
||||
} else {
|
||||
float rand1 = (static_cast<float>(std::rand() % 256) / 512.0f);
|
||||
|
||||
Reference in New Issue
Block a user