Doors project
This commit is contained in:
parent
32a9b54f1a
commit
2db27358d9
@ -1,3 +1,3 @@
|
|||||||
build.sh:530634457ea9041267c05d4ced95eee1 -
|
build.sh:530634457ea9041267c05d4ced95eee1 -
|
||||||
commit.sh:d03a46e721060c22ccb146e19d27e70a -
|
commit.sh:d03a46e721060c22ccb146e19d27e70a -
|
||||||
web.sh:241ce74055952325f82f009b494df250 -
|
web.sh:3dcc2fe7e036359eedd257a864e9a1e1 -
|
||||||
|
Binary file not shown.
128
main.cpp
128
main.cpp
@ -1,36 +1,130 @@
|
|||||||
#define OLC_PGE_APPLICATION
|
#define OLC_PGE_APPLICATION
|
||||||
#include "pixelGameEngine.h"
|
#include "pixelGameEngine.h"
|
||||||
|
|
||||||
using namespace std;
|
using namespace olc;
|
||||||
|
|
||||||
class Example : public olc::PixelGameEngine
|
class Room{
|
||||||
|
public:
|
||||||
|
Room*DoorS=nullptr;
|
||||||
|
Room*DoorE=nullptr;
|
||||||
|
Room*DoorW=nullptr;
|
||||||
|
Room*DoorN=nullptr;
|
||||||
|
std::string roomName;
|
||||||
|
Room(){};
|
||||||
|
Room(std::string name):roomName(name){};
|
||||||
|
};
|
||||||
|
|
||||||
|
class DoorGame : public olc::PixelGameEngine
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
Example()
|
Room*CURRENT_ROOM;
|
||||||
|
DoorGame()
|
||||||
{
|
{
|
||||||
sAppName = "Example";
|
sAppName = "Rooms example";
|
||||||
}
|
}
|
||||||
|
|
||||||
public:
|
public:
|
||||||
bool OnUserCreate() override
|
bool OnUserCreate() override
|
||||||
{
|
{
|
||||||
SetPixelMode(olc::Pixel::ALPHA);
|
Room*WEST_ROOM=new Room("West Room");
|
||||||
ConsoleCaptureStdOut(true);
|
Room*MAIN_HANGAR=new Room("Main Hangar");
|
||||||
// Called once at the start, so create things here
|
Room*NORTH_ROOM=new Room("North Room");
|
||||||
for (int x = 0; x < ScreenWidth(); x++)
|
Room*SOUTH_ROOM=new Room("South Room");
|
||||||
for (int y = 0; y < ScreenHeight(); y++)
|
Room*EAST_HALLWAY=new Room("East Hallway");
|
||||||
Draw(x, y, olc::Pixel(rand() % 255, rand() % 255, rand()% 255));
|
Room*EAST_EXIT=new Room("East Exit");
|
||||||
for (int x=0;x<50;x++) {
|
|
||||||
for (int y=0;y<50;y++) {
|
//West Room has an east door leading to Main Hangar.
|
||||||
Draw(x, y, olc::Pixel(255, 0, 0, 128));
|
WEST_ROOM->DoorE=MAIN_HANGAR;
|
||||||
}
|
|
||||||
}
|
//The Main hangar has 4 doors each leading to other places...
|
||||||
|
MAIN_HANGAR->DoorW=WEST_ROOM;
|
||||||
|
MAIN_HANGAR->DoorS=SOUTH_ROOM;
|
||||||
|
MAIN_HANGAR->DoorE=EAST_HALLWAY;
|
||||||
|
MAIN_HANGAR->DoorN=NORTH_ROOM;
|
||||||
|
|
||||||
|
//The North room has a south door leading to Main Hangar.
|
||||||
|
NORTH_ROOM->DoorS=MAIN_HANGAR;
|
||||||
|
|
||||||
|
//The South room has a north door leading to Main Hangar.
|
||||||
|
SOUTH_ROOM->DoorN=MAIN_HANGAR;
|
||||||
|
|
||||||
|
//The East Hallway has a west door leading to Main Hangar and an east door leading to the exit.
|
||||||
|
EAST_HALLWAY->DoorW=MAIN_HANGAR;
|
||||||
|
EAST_HALLWAY->DoorE=EAST_EXIT;
|
||||||
|
|
||||||
|
//The East Exit has a west door leading to the East Hallway.
|
||||||
|
EAST_EXIT->DoorW=EAST_HALLWAY;
|
||||||
|
|
||||||
|
CURRENT_ROOM=MAIN_HANGAR; //Let's start in the Main Hangar.
|
||||||
|
TextEntryEnable(true);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void OnTextEntryComplete(const std::string&str)override{
|
||||||
|
if (str.compare("north")==0&&CURRENT_ROOM->DoorN!=nullptr) {
|
||||||
|
CURRENT_ROOM=CURRENT_ROOM->DoorN;
|
||||||
|
}
|
||||||
|
if (str.compare("east")==0&&CURRENT_ROOM->DoorE!=nullptr) {
|
||||||
|
CURRENT_ROOM=CURRENT_ROOM->DoorE;
|
||||||
|
}
|
||||||
|
if (str.compare("west")==0&&CURRENT_ROOM->DoorW!=nullptr) {
|
||||||
|
CURRENT_ROOM=CURRENT_ROOM->DoorW;
|
||||||
|
}
|
||||||
|
if (str.compare("south")==0&&CURRENT_ROOM->DoorS!=nullptr) {
|
||||||
|
CURRENT_ROOM=CURRENT_ROOM->DoorS;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
bool OnUserUpdate(float fElapsedTime) override
|
bool OnUserUpdate(float fElapsedTime) override
|
||||||
{
|
{
|
||||||
// called once per frame
|
if (!IsTextEntryEnabled()) {
|
||||||
|
TextEntryEnable(true);
|
||||||
|
}
|
||||||
|
|
||||||
|
DrawStringDecal({0,0},"You are in the "+CURRENT_ROOM->roomName+".");
|
||||||
|
|
||||||
|
vi2d doorTextOffset={0,24};
|
||||||
|
vi2d mapCenterPos={256/2-16,240-64};
|
||||||
|
for (int i=0;i<4;i++) {
|
||||||
|
switch (i) {
|
||||||
|
case 0:{
|
||||||
|
if (CURRENT_ROOM->DoorN!=nullptr) { //See if there's a door to the north.
|
||||||
|
DrawStringDecal(doorTextOffset,"You see a door to your North.");
|
||||||
|
vi2d northSquarePos={0,-16};
|
||||||
|
FillRectDecal(mapCenterPos+northSquarePos,{16,16},BLUE);
|
||||||
|
doorTextOffset.y+=16;
|
||||||
|
}
|
||||||
|
}break;
|
||||||
|
case 1:{
|
||||||
|
if (CURRENT_ROOM->DoorE!=nullptr) { //See if there's a door to the east.
|
||||||
|
DrawStringDecal(doorTextOffset,"You see a door to the East.");
|
||||||
|
vi2d eastSquarePos={16,0};
|
||||||
|
FillRectDecal(mapCenterPos+eastSquarePos,{16,16},GREEN);
|
||||||
|
doorTextOffset.y+=16;
|
||||||
|
}
|
||||||
|
}break;
|
||||||
|
case 2:{
|
||||||
|
if (CURRENT_ROOM->DoorS!=nullptr) { //See if there's a door to the south.
|
||||||
|
DrawStringDecal(doorTextOffset,"You see a door South of you.");
|
||||||
|
vi2d southSquarePos={0,16};
|
||||||
|
FillRectDecal(mapCenterPos+southSquarePos,{16,16},RED);
|
||||||
|
doorTextOffset.y+=16;
|
||||||
|
}
|
||||||
|
}break;
|
||||||
|
case 3:{
|
||||||
|
if (CURRENT_ROOM->DoorW!=nullptr) { //See if there's a door to the west.
|
||||||
|
DrawStringDecal(doorTextOffset,"You see a door on the West side.");
|
||||||
|
vi2d westSquarePos={-16,0};
|
||||||
|
FillRectDecal(mapCenterPos+westSquarePos,{16,16},YELLOW);
|
||||||
|
doorTextOffset.y+=16;
|
||||||
|
}
|
||||||
|
}break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
FillRect(mapCenterPos,{16,16});
|
||||||
|
|
||||||
|
DrawStringDecal({2,240-10},"Action: "+TextEntryGetString());
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
@ -38,7 +132,7 @@ public:
|
|||||||
|
|
||||||
int main()
|
int main()
|
||||||
{
|
{
|
||||||
Example demo;
|
DoorGame demo;
|
||||||
if (demo.Construct(256, 240, 4, 4))
|
if (demo.Construct(256, 240, 4, 4))
|
||||||
demo.Start();
|
demo.Start();
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user