Win conditions
This commit is contained in:
parent
c67ddcc6d2
commit
d32fb76f86
7 changed files with 31 additions and 28 deletions
14
assets/map
14
assets/map
|
|
@ -1,22 +1,22 @@
|
||||||
############################
|
############################
|
||||||
# ## #
|
# ## #
|
||||||
# #### ##### ## ##### #### #
|
# #### ##### ## ##### #### #
|
||||||
#C#### ##### ## ##### ####C#
|
#C#__# #___# ## #___# #__#C#
|
||||||
# #### ##### ## ##### #### #
|
# #### ##### ## ##### #### #
|
||||||
# #
|
# #
|
||||||
# #### ## ######## ## #### #
|
# #### ## ######## ## #### #
|
||||||
# #### ## ######## ## #### #
|
# #### ## ######## ## #### #
|
||||||
# ## ## ## #
|
# ## ## ## #
|
||||||
###### ##### ## ##### ######
|
###### ##### ## ##### ######
|
||||||
###### ##### ## ##### ######
|
_____# ##### ## ##### #_____
|
||||||
###### ## ## ######
|
_____# ## ## #_____
|
||||||
###### ## #++# ## ######
|
_____# ## #++# ## #_____
|
||||||
###### ## #__# ## ######
|
###### ## #__# ## ######
|
||||||
- #GG# -
|
- #GG# -
|
||||||
###### ## #GG# ## ######
|
###### ## #GG# ## ######
|
||||||
###### ## #### ## ######
|
_____# ## #### ## #_____
|
||||||
###### ## ## ######
|
_____# ## ## #_____
|
||||||
###### ## ######## ## ######
|
_____# ## ######## ## #_____
|
||||||
###### ## ######## ## ######
|
###### ## ######## ## ######
|
||||||
# ## #
|
# ## #
|
||||||
# #### ##### ## ##### #### #
|
# #### ##### ## ##### #### #
|
||||||
|
|
|
||||||
|
|
@ -66,6 +66,7 @@ class Scorepoint : public Entity {
|
||||||
public:
|
public:
|
||||||
Scorepoint();
|
Scorepoint();
|
||||||
void draw() const override;
|
void draw() const override;
|
||||||
|
void ready() override;
|
||||||
};
|
};
|
||||||
|
|
||||||
class Ghost : public Entity {
|
class Ghost : public Entity {
|
||||||
|
|
@ -93,6 +94,7 @@ class Cherry : public Entity {
|
||||||
public:
|
public:
|
||||||
Cherry();
|
Cherry();
|
||||||
void draw() const override;
|
void draw() const override;
|
||||||
|
void ready() override;
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
|
||||||
|
|
@ -21,15 +21,15 @@ int main() {
|
||||||
while (WindowShouldClose() == false) {
|
while (WindowShouldClose() == false) {
|
||||||
|
|
||||||
if(IsKeyPressed(KEY_F1))
|
if(IsKeyPressed(KEY_F1))
|
||||||
world.debug = !world.debug;
|
get_world().debug = !get_world().debug;
|
||||||
|
|
||||||
world.process();
|
get_world().process();
|
||||||
|
|
||||||
BeginDrawing();
|
BeginDrawing();
|
||||||
|
|
||||||
ClearBackground(BLACK);
|
ClearBackground(BLACK);
|
||||||
|
|
||||||
world.draw();
|
get_world().draw();
|
||||||
|
|
||||||
EndDrawing();
|
EndDrawing();
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -93,12 +93,18 @@ void Pacman::collision(Entity* with){
|
||||||
if (score != nullptr) {
|
if (score != nullptr) {
|
||||||
score->queue_free();
|
score->queue_free();
|
||||||
get_world().points+=10;
|
get_world().points+=10;
|
||||||
|
get_world().total_scorepoints--;
|
||||||
|
if(get_world().total_scorepoints == 0)
|
||||||
|
get_world().win();
|
||||||
}
|
}
|
||||||
Cherry* cherry = dynamic_cast<Cherry*>(with);
|
Cherry* cherry = dynamic_cast<Cherry*>(with);
|
||||||
if (cherry != nullptr) {
|
if (cherry != nullptr) {
|
||||||
cherry->queue_free();
|
cherry->queue_free();
|
||||||
get_world().points+=30;
|
get_world().points+=30;
|
||||||
get_world().start_killmode();
|
get_world().start_killmode();
|
||||||
|
get_world().total_scorepoints--;
|
||||||
|
if(get_world().total_scorepoints == 0)
|
||||||
|
get_world().win();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -10,6 +10,10 @@ void Scorepoint::draw() const {
|
||||||
DrawTextureRec(this->texture.get_texture(), this->texture.full_view(), this->position, WHITE);
|
DrawTextureRec(this->texture.get_texture(), this->texture.full_view(), this->position, WHITE);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void Scorepoint::ready() {
|
||||||
|
get_world().total_scorepoints++;
|
||||||
|
}
|
||||||
|
|
||||||
Cherry::Cherry(){
|
Cherry::Cherry(){
|
||||||
texture = {get_world().get_atlas(),112,16,16,16};
|
texture = {get_world().get_atlas(),112,16,16,16};
|
||||||
}
|
}
|
||||||
|
|
@ -17,3 +21,7 @@ Cherry::Cherry(){
|
||||||
void Cherry::draw() const {
|
void Cherry::draw() const {
|
||||||
DrawTextureRec(texture.get_texture(),texture.full_view(),position,WHITE);
|
DrawTextureRec(texture.get_texture(),texture.full_view(),position,WHITE);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void Cherry::ready() {
|
||||||
|
get_world().total_scorepoints++;
|
||||||
|
}
|
||||||
|
|
|
||||||
|
|
@ -4,18 +4,6 @@
|
||||||
#include <raylib.h>
|
#include <raylib.h>
|
||||||
#include <string>
|
#include <string>
|
||||||
|
|
||||||
void init_world() {
|
|
||||||
create_world_with(1./5.);
|
|
||||||
|
|
||||||
World& world = get_world();
|
|
||||||
Vector2i window_size = get_map_size("assets/map");
|
|
||||||
|
|
||||||
world.set_size(window_size);
|
|
||||||
load_world(world,"assets/map");
|
|
||||||
|
|
||||||
world.setup();
|
|
||||||
}
|
|
||||||
|
|
||||||
World::World(){
|
World::World(){
|
||||||
this->entities = {};
|
this->entities = {};
|
||||||
this->grid = new Entity*[get_capacity()];
|
this->grid = new Entity*[get_capacity()];
|
||||||
|
|
@ -57,12 +45,10 @@ void World::process(){
|
||||||
this->seconds_per_tick-=0.025;
|
this->seconds_per_tick-=0.025;
|
||||||
if(IsKeyPressed(KEY_F3))
|
if(IsKeyPressed(KEY_F3))
|
||||||
this->seconds_per_tick+=0.025;
|
this->seconds_per_tick+=0.025;
|
||||||
|
|
||||||
if(state != LevelState::NotFinished){
|
|
||||||
if(IsKeyPressed(KEY_Q))
|
if(IsKeyPressed(KEY_Q))
|
||||||
CloseWindow();
|
CloseWindow();
|
||||||
if(IsKeyPressed(KEY_R))
|
|
||||||
init_world();
|
if(state != LevelState::NotFinished){
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -115,7 +101,7 @@ void World::draw() const {
|
||||||
else {
|
else {
|
||||||
DrawText("You lost!",16,16,24,WHITE);
|
DrawText("You lost!",16,16,24,WHITE);
|
||||||
}
|
}
|
||||||
DrawText("q to quit, r to restart",0,40,16,WHITE);
|
DrawText("q to quit",0,40,16,WHITE);
|
||||||
DrawText(TextFormat("Score: %i",this->points),16,56,16,WHITE);
|
DrawText(TextFormat("Score: %i",this->points),16,56,16,WHITE);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -33,6 +33,7 @@ class World {
|
||||||
int width = 0;
|
int width = 0;
|
||||||
int height = 0;
|
int height = 0;
|
||||||
int bound_offset = 1;
|
int bound_offset = 1;
|
||||||
|
int total_scorepoints = 0;
|
||||||
|
|
||||||
void setup(); /// Sets up game world.
|
void setup(); /// Sets up game world.
|
||||||
/// Should be called once when entites are set.
|
/// Should be called once when entites are set.
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue