|
|
|
@ -9,28 +9,56 @@ public: |
|
|
|
|
Example() |
|
|
|
|
{ |
|
|
|
|
sAppName = "Example"; |
|
|
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
public: |
|
|
|
|
vector<int> data; |
|
|
|
|
int TILE_WIDTH=16; |
|
|
|
|
int TILE_HEIGHT=16; |
|
|
|
|
|
|
|
|
|
int tileOffsetX=0; |
|
|
|
|
int tileOffsetY=0; |
|
|
|
|
int TV_WIDTH=TILE_WIDTH*8; |
|
|
|
|
int TV_HEIGHT=TILE_HEIGHT*7; |
|
|
|
|
int MAP_WIDTH=256; |
|
|
|
|
int MAP_HEIGHT=240; |
|
|
|
|
|
|
|
|
|
int TV_POSX=256/4; |
|
|
|
|
int TV_POSY=240/4; |
|
|
|
|
bool OnUserCreate() override |
|
|
|
|
{ |
|
|
|
|
SetPixelMode(olc::Pixel::ALPHA); |
|
|
|
|
ConsoleCaptureStdOut(true); |
|
|
|
|
// Called once at the start, so create things here
|
|
|
|
|
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));
|
|
|
|
|
for (int x=0;x<50;x++) { |
|
|
|
|
for (int y=0;y<50;y++) { |
|
|
|
|
Draw(x, y, olc::Pixel(255, 0, 0, 128));
|
|
|
|
|
} |
|
|
|
|
for (int i=0;i<256*240;i++) { |
|
|
|
|
data.push_back(rand()%255); |
|
|
|
|
} |
|
|
|
|
return true; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
bool OnUserUpdate(float fElapsedTime) override |
|
|
|
|
{ |
|
|
|
|
// called once per frame
|
|
|
|
|
|
|
|
|
|
if (GetKey(olc::RIGHT).bPressed) { |
|
|
|
|
tileOffsetX=std::clamp(tileOffsetX+1,0,MAP_WIDTH); |
|
|
|
|
} |
|
|
|
|
if (GetKey(olc::LEFT).bPressed) { |
|
|
|
|
tileOffsetX=std::clamp(tileOffsetX-1,0,MAP_WIDTH); |
|
|
|
|
} |
|
|
|
|
if (GetKey(olc::UP).bPressed) { |
|
|
|
|
tileOffsetY=std::clamp(tileOffsetY-1,0,MAP_HEIGHT); |
|
|
|
|
} |
|
|
|
|
if (GetKey(olc::DOWN).bPressed) { |
|
|
|
|
tileOffsetY=std::clamp(tileOffsetY+1,0,MAP_HEIGHT); |
|
|
|
|
} |
|
|
|
|
for (int x=0;x<TV_WIDTH/TILE_WIDTH;x++) { |
|
|
|
|
for (int y=0;y<TV_HEIGHT/TILE_HEIGHT;y++) { |
|
|
|
|
int tileID=data[(tileOffsetY+y)*MAP_WIDTH+tileOffsetX+x]; |
|
|
|
|
FillRect({x*TILE_WIDTH+TV_POSX,y*TILE_HEIGHT+TV_POSY},{TILE_WIDTH,TILE_HEIGHT},olc::Pixel(tileID,tileID,tileID,255)); |
|
|
|
|
DrawStringDecal({x*TILE_WIDTH+TV_POSX,y*TILE_HEIGHT+TV_POSY},to_string(tileID),(tileID<128)?olc::WHITE:olc::BLACK,{0.5,0.5}); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
return true; |
|
|
|
|
} |
|
|
|
|
}; |
|
|
|
|