2024-12-21 14:08:37 +01:00

80 lines
1.9 KiB
C++

#include <stdio.h>
#include <stdlib.h>
class Entity : public Rectangle {
public:
Color color = BLACK;
Sprite2D sprite;
int frame = 0;
float x_velocity, y_velocity;
Entity(void) {
this->width = 20;
this->height = 20;
this->sprite.texture = &entity_texture;
this->sprite.width = this->sprite.texture->width;
this->sprite.height = this->sprite.texture->height;
}
void draw(void) {
DrawSprite2D(
this->sprite,
frame,
this->x,
this->y,
WHITE
);
}
};
Entity player; // entity is initialized before the texture is loaded
class Enemy : public Entity {
public:
bool is_agrod = false;
Enemy(void) {
this->x = 800 + (rand() % 500);
if (rand() % 2) {
this->y = SIDE_WALK1 + (rand() % SIDE_WALK1_W);
} else {
this->y = SIDE_WALK2 + (rand() % SIDE_WALK2_W);
}
this->color = RED;
this->sprite.texture = &enemy_texture;
this->sprite.width = this->sprite.texture->width;
this->sprite.height = this->sprite.texture->height;
}
};
class Obstacle : public Entity {
public:
static constexpr float speed = 1.0f;
Obstacle(void) {
this->width = 85;
this->height = 45;
this->x = -100;
this->y = -100;
this->color = BROWN;
}
void regen(void) {
const int y_area = GAME_HEIGHT - (SIDE_WALK1 + SIDE_WALK1_W) - SIDE_WALK2_W;
const double unit = (double)1 / (double)radical_number_generator.range_max;
this->x = GAME_WIDTH + 10;
this->y = (SIDE_WALK1 + SIDE_WALK1_W/2)
+ y_area * (unit * radical_number_generator())
;
this->sprite.texture = &obstacle_texture;
this->sprite.width = this->sprite.texture->width;
this->sprite.height = this->sprite.texture->height;
}
};