80 lines
2.0 KiB
80 lines
2.0 KiB
#define OLC_PGE_APPLICATION
|
|
#include "olcPixelGameEngine.h"
|
|
#include "PGEX_SMX.h"
|
|
using namespace olc;
|
|
|
|
class SMX_PGE : public olc::PixelGameEngine
|
|
{
|
|
PGEX_SMX smx;
|
|
bool paused = false;
|
|
int mode = 0;
|
|
vf2d playerPos = { 0,0 };
|
|
public:
|
|
SMX_PGE()
|
|
{
|
|
sAppName = "SMX PGE";
|
|
}
|
|
|
|
public:
|
|
bool OnUserCreate() override
|
|
{
|
|
SetPixelMode([](const int x,const int y,const Pixel&col,const Pixel&prev){
|
|
|
|
return col;
|
|
});
|
|
// Called once at the start, so create things here
|
|
return true;
|
|
}
|
|
|
|
bool OnUserUpdate(float fElapsedTime) override
|
|
{
|
|
if (GetKey(RIGHT).bPressed) {
|
|
mode = (mode + 1) % 3;
|
|
}
|
|
switch (mode) {
|
|
case 0: {
|
|
if (GetKey(SPACE).bPressed) {
|
|
paused = !paused;
|
|
}
|
|
// called once per frame
|
|
if (!paused) {
|
|
for (int x = 0; x < ScreenWidth(); x++)
|
|
for (int y = 0; y < ScreenHeight(); y++)
|
|
Draw(x, y, olc::Pixel(rand() % 255, rand() % 255, rand() % 255));
|
|
}
|
|
}break;
|
|
case 1: {
|
|
Clear(DARK_CYAN);
|
|
DrawRect({ 1,1 }, { 9,18 }, RED);
|
|
}break;
|
|
case 2: {
|
|
Clear(VERY_DARK_BLUE);
|
|
FillCircle(playerPos, 3,VERY_DARK_GREY);
|
|
DrawCircle(playerPos, 3);
|
|
if (GetKey(W).bHeld) {
|
|
playerPos.y -= 5*fElapsedTime;
|
|
}
|
|
if (GetKey(A).bHeld) {
|
|
playerPos.x -= 5 * fElapsedTime;
|
|
}
|
|
if (GetKey(S).bHeld) {
|
|
playerPos.y += 5 * fElapsedTime;
|
|
}
|
|
if (GetKey(D).bHeld) {
|
|
playerPos.x += 5 * fElapsedTime;
|
|
}
|
|
}break;
|
|
}
|
|
return true;
|
|
}
|
|
};
|
|
|
|
|
|
int main()
|
|
{
|
|
SMX_PGE demo;
|
|
if (demo.Construct(12, 21, 50, 50))
|
|
demo.Start();
|
|
|
|
return 0;
|
|
}
|
|
|