add basic level gen blblblbl
This commit is contained in:
parent
0abeeaa835
commit
12721e6021
|
@ -10,7 +10,9 @@ find_package(LibProf 2.1 REQUIRED)
|
|||
|
||||
set(SOURCES
|
||||
src/main.cpp
|
||||
src/generator.cpp
|
||||
src/generator/gen1.cpp
|
||||
src/generator/gen2.cpp
|
||||
src/generator/gen3.cpp
|
||||
src/level.cpp)
|
||||
set(ASSETS)
|
||||
|
||||
|
|
Binary file not shown.
After Width: | Height: | Size: 2.9 KiB |
|
@ -0,0 +1,40 @@
|
|||
#ifndef GENERATOR
|
||||
# define GENERATOR
|
||||
|
||||
struct level;
|
||||
typedef struct level level_t;
|
||||
|
||||
struct generator
|
||||
{
|
||||
virtual void generate(level_t *) = 0;
|
||||
virtual ~generator() = default;
|
||||
};
|
||||
|
||||
struct gen1 : public generator
|
||||
{
|
||||
gen1();
|
||||
void generate(level_t *) override;
|
||||
~gen1() override = default;
|
||||
|
||||
int last_pos;
|
||||
};
|
||||
|
||||
struct gen2 : public generator
|
||||
{
|
||||
gen2();
|
||||
void generate(level_t *) override;
|
||||
~gen2() override = default;
|
||||
|
||||
int last_pos;
|
||||
};
|
||||
|
||||
struct gen3 : public generator
|
||||
{
|
||||
gen3();
|
||||
void generate(level_t *) override;
|
||||
~gen3() override = default;
|
||||
|
||||
int last_pos[3];
|
||||
};
|
||||
|
||||
#endif /* GENERATOR */
|
|
@ -1,4 +1,5 @@
|
|||
#include "bosonx.h"
|
||||
#include "../generator.h"
|
||||
#include "../level.h"
|
||||
|
||||
gen1::gen1() : last_pos{0} { }
|
||||
|
|
@ -0,0 +1,25 @@
|
|||
#include "../generator.h"
|
||||
#include "../level.h"
|
||||
|
||||
#include <stdlib.h>
|
||||
|
||||
gen2::gen2() : last_pos{0} { srand(123456); }
|
||||
|
||||
void gen2::generate(level_t *level)
|
||||
{
|
||||
struct section section;
|
||||
|
||||
this->last_pos += (rand() % 3) - 1;
|
||||
if (this->last_pos < 0)
|
||||
this->last_pos = PLATFORM_COUNT - 1;
|
||||
if (this->last_pos >= PLATFORM_COUNT)
|
||||
this->last_pos = 0;
|
||||
|
||||
for (int i = 0; i < PLATFORM_COUNT; ++i) {
|
||||
section.platforms[i].type = PLATFORM_EMPTY;
|
||||
if (i == this->last_pos)
|
||||
section.platforms[i].type = PLATFORM_WHITE;
|
||||
}
|
||||
|
||||
level->section_buffer.push_back(section);
|
||||
}
|
|
@ -0,0 +1,31 @@
|
|||
#include "../generator.h"
|
||||
#include "../level.h"
|
||||
|
||||
#include <stdlib.h>
|
||||
|
||||
gen3::gen3() : last_pos{0, 1, 2} { srand(123456); }
|
||||
|
||||
void gen3::generate(level_t *level)
|
||||
{
|
||||
struct section section;
|
||||
|
||||
for (int i = 0; i < 3; ++i) {
|
||||
this->last_pos[i] += (rand() % 3) - 1;
|
||||
if (this->last_pos[i] < 0)
|
||||
this->last_pos[i] = PLATFORM_COUNT - 1;
|
||||
if (this->last_pos[i] >= PLATFORM_COUNT)
|
||||
this->last_pos[i] = 0;
|
||||
}
|
||||
|
||||
for (int i = 0; i < PLATFORM_COUNT; ++i) {
|
||||
section.platforms[i].type = PLATFORM_EMPTY;
|
||||
if (i == this->last_pos[0]
|
||||
|| i == this->last_pos[1]
|
||||
|| i == this->last_pos[2]
|
||||
) {
|
||||
section.platforms[i].type = PLATFORM_WHITE;
|
||||
}
|
||||
}
|
||||
|
||||
level->section_buffer.push_back(section);
|
||||
}
|
|
@ -1,4 +1,5 @@
|
|||
#include "bosonx.h"
|
||||
#include "level.h"
|
||||
#include "generator.h"
|
||||
#include <gint/display.h>
|
||||
|
||||
level_t level_create(int level)
|
||||
|
@ -6,6 +7,12 @@ level_t level_create(int level)
|
|||
level_t l;
|
||||
|
||||
switch(level) {
|
||||
case 2:
|
||||
l.gen = std::make_unique<struct gen2>();
|
||||
break;
|
||||
case 3:
|
||||
l.gen = std::make_unique<struct gen3>();
|
||||
break;
|
||||
default:
|
||||
l.gen = std::make_unique<struct gen1>();
|
||||
}
|
||||
|
@ -34,7 +41,13 @@ void level_display(level_t *level)
|
|||
dsize("@", NULL, &w, &h);
|
||||
|
||||
sx = (DWIDTH - (PLATFORM_COUNT * w)) / 2;
|
||||
sy = (DHEIGHT - (PLATFORM_COUNT * h)) / 2;
|
||||
sy = (DHEIGHT - (5 * h)) / 2;
|
||||
|
||||
drect_border(
|
||||
sx, sy,
|
||||
sx + (PLATFORM_COUNT * w), sy + (5 * h),
|
||||
C_NONE, 2, C_BLACK
|
||||
);
|
||||
|
||||
for (int i = 4; i >= 0; --i) {
|
||||
for (int j = 0; j < PLATFORM_COUNT; ++j) {
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
#ifndef __BOSONX__
|
||||
# define __BOSONX__
|
||||
#ifndef LEVEL
|
||||
# define LEVEL
|
||||
|
||||
#include <vector>
|
||||
#include <memory>
|
||||
|
@ -26,30 +26,12 @@ struct section {
|
|||
//...
|
||||
};
|
||||
|
||||
struct generator;
|
||||
|
||||
struct level;
|
||||
typedef struct level level_t;
|
||||
|
||||
struct generator
|
||||
{
|
||||
virtual void generate(level_t *) = 0;
|
||||
virtual ~generator() = default;
|
||||
};
|
||||
|
||||
struct gen1 : public generator
|
||||
{
|
||||
gen1();
|
||||
void generate(level_t *) override;
|
||||
~gen1() override = default;
|
||||
|
||||
int last_pos;
|
||||
};
|
||||
|
||||
|
||||
struct level {
|
||||
typedef struct level {
|
||||
std::vector<struct section> section_buffer;
|
||||
std::unique_ptr<struct generator> gen;
|
||||
};
|
||||
} level_t;
|
||||
|
||||
|
||||
|
||||
|
@ -58,4 +40,4 @@ extern level_t level_create(int level);
|
|||
extern void level_display(level_t *level);
|
||||
extern void level_advance(level_t *level);
|
||||
|
||||
#endif /* __BOSONX__ */
|
||||
#endif /* LEVEL */
|
|
@ -1,4 +1,5 @@
|
|||
#include "bosonx.h"
|
||||
#include "level.h"
|
||||
#include "generator.h"
|
||||
#include <gint/keyboard.h>
|
||||
#include <gint/display.h>
|
||||
|
||||
|
@ -19,6 +20,9 @@ int main(void)
|
|||
if(keydown(KEY_EXE)) {
|
||||
level_advance(&level);
|
||||
}
|
||||
if (keydown(KEY_F1)) level = level_create(1);
|
||||
if (keydown(KEY_F2)) level = level_create(2);
|
||||
if (keydown(KEY_F3)) level = level_create(3);
|
||||
}
|
||||
|
||||
return 0;
|
||||
|
|
Loading…
Reference in New Issue