First commit

This commit is contained in:
2020-11-20 06:53:03 +01:00
commit 9b344da330
12 changed files with 509 additions and 0 deletions

64
loderunner.cpp Normal file
View File

@@ -0,0 +1,64 @@
#include <SDL2/SDL.h>
SDL_Event sdlEvent;
bool should_exit = false;
static Uint8 map[16][28] { { 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5 }, { 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 5, 5, 5, 5, 4, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5 }, { 2, 5, 4, 5, 5, 5, 5, 5, 5, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 5, 5, 5, 5, 5, 5, 5 }, { 0, 0, 0, 0, 0, 2, 5, 5, 5, 2, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 2, 1, 1, 1, 1, 1, 1, 1 }, { 5, 5, 5, 5, 5, 2, 5, 5, 5, 2, 5, 5, 5, 5, 5, 4, 5, 5, 5, 5, 2, 5, 5, 5, 5, 5, 5, 5 }, { 5, 5, 5, 5, 5, 2, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 2, 0, 0, 5, 5, 5, 5, 5, 5, 5 }, { 5, 5, 4, 5, 5, 2, 5, 5, 5, 5, 5, 5, 2, 5, 5, 5, 5, 5, 2, 5, 5, 3, 3, 5, 5, 5, 5, 5 }, { 0, 0, 0, 0, 2, 0, 5, 5, 5, 5, 5, 5, 2, 5, 5, 5, 5, 5, 2, 5, 5, 5, 5, 3, 3, 5, 5, 5 }, { 5, 5, 5, 5, 2, 5, 5, 5, 5, 2, 0, 0, 0, 0, 0, 0, 2, 0, 0, 5, 5, 5, 5, 5, 5, 3, 3, 4 }, { 5, 5, 5, 5, 2, 3, 3, 3, 3, 2, 5, 5, 5, 5, 5, 5, 2, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 0 }, { 5, 5, 5, 5, 2, 5, 5, 5, 5, 5, 5, 5, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 5, 5, 5, 5, 5 }, { 5, 5, 5, 5, 2, 5, 5, 5, 5, 5, 5, 5, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 5, 5, 5, 5, 5 }, { 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 5, 5, 5, 5, 5, 5, 0, 0, 0, 0, 0, 2, 0 }, { 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 2, 0, 0, 0, 2, 5, 0, 0, 0, 0, 0, 2, 0 }, { 5, 5, 5, 2, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 2, 0, 0, 0, 2, 5, 5, 5, 4, 5, 5, 2, 5 }, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } };
static Uint8 bmp[504] {0x42, 0x4D, 0xF8, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, 0x3C, 0x00, 0x00, 0x00, 0x37, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0xBA, 0x01, 0x00, 0x00, 0x12, 0x0B, 0x00, 0x00, 0x12, 0x0B, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0x4F, 0xE4, 0xFE, 0x4F, 0xFF, 0xFF, 0xFF, 0xF0, 0x27, 0xE4, 0xFE, 0x4F, 0xFF, 0xFF, 0xFF, 0xF0, 0x27, 0xE4, 0xFE, 0x4F, 0xFF, 0xFF, 0xFF, 0xF0, 0x87, 0xF1, 0xFF, 0x1F, 0xFF, 0xFF, 0xFF, 0xF0, 0xE7, 0xF9, 0xFF, 0x9F, 0xFF, 0xFF, 0xFF, 0xF0, 0xE7, 0xC9, 0xFF, 0x9F, 0xFF, 0xFF, 0xFF, 0xF0, 0xC3, 0xE1, 0xFF, 0x87, 0xFF, 0xFF, 0xFF, 0xF0, 0x90, 0xF8, 0xFF, 0x13, 0xFF, 0xFF, 0xFF, 0xF0, 0x92, 0x78, 0x7E, 0x1F, 0xFF, 0xFF, 0xFF, 0xF0, 0x9E, 0x7E, 0x7E, 0x7F, 0xFF, 0xFF, 0xFF, 0xF0, 0x9E, 0x7E, 0x7E, 0x7F, 0xFF, 0xFF, 0xFF, 0xF0, 0xFC, 0xFC, 0xFC, 0xFF, 0x1F, 0x93, 0xF9, 0xF0, 0xFC, 0xF8, 0xFC, 0xE7, 0x9F, 0x93, 0xF9, 0x30, 0x84, 0xFC, 0x3E, 0x67, 0x91, 0x93, 0xF9, 0x30, 0xF1, 0xFE, 0x3F, 0x0F, 0x93, 0xC7, 0xF9, 0x30, 0xF3, 0xF8, 0x4F, 0x9F, 0xC7, 0xCF, 0x78, 0x70, 0x93, 0x38, 0x3C, 0x87, 0xC7, 0x49, 0x79, 0xF0, 0xC8, 0xFC, 0x7E, 0x16, 0x07, 0x03, 0xF9, 0xF0, 0xF1, 0xFE, 0x7F, 0x9E, 0xC7, 0xCF, 0xE0, 0x30, 0xF8, 0xFE, 0x3F, 0x8F, 0xC0, 0xC7, 0xC8, 0x90, 0xF8, 0xFE, 0x3F, 0x8F, 0xCE, 0xC7, 0xC8, 0x90, 0xFD, 0xFF, 0x7F, 0xDF, 0xCF, 0xEF, 0xCD, 0x90, 0xFF, 0xFF, 0xF3, 0xCF, 0xFF, 0xFF, 0xFF, 0xF0, 0x30, 0x00, 0x03, 0xCF, 0xFF, 0x00, 0xFF, 0xF0, 0x30, 0x00, 0x03, 0xCF, 0xFF, 0x3C, 0xFF, 0xF0, 0x30, 0x00, 0x00, 0x0F, 0xFF, 0x3C, 0xFF, 0xF0, 0x30, 0x00, 0x03, 0xCF, 0xFF, 0x3C, 0xFF, 0xF0, 0x30, 0x00, 0x03, 0xCF, 0xFF, 0x00, 0xFF, 0xF0, 0xFF, 0xC0, 0x03, 0xCF, 0xFF, 0xFF, 0xFF, 0xF0, 0x03, 0x00, 0x03, 0xCF, 0xFF, 0xFF, 0xFF, 0xF0, 0x03, 0x00, 0x00, 0x0C, 0x00, 0xFF, 0xFF, 0xF0, 0x03, 0x00, 0x03, 0xCF, 0xFF, 0xFF, 0xFF, 0xF0, 0x03, 0x00, 0x03, 0xCF, 0xFF, 0xFF, 0xFF, 0xF0, 0x00, 0x00};
int hero[4] { 140, 77, 0, SDL_FLIP_NONE };
int cycle = 0;
int hanging = 0;
int main(int argc, char* argv[]) {
SDL_Init(SDL_INIT_EVERYTHING);
SDL_Window* sdlWindow = SDL_CreateWindow("LODERUNNER", SDL_WINDOWPOS_UNDEFINED, SDL_WINDOWPOS_UNDEFINED, 640, 400, SDL_WINDOW_SHOWN);
SDL_Renderer* sdlRenderer = SDL_CreateRenderer(sdlWindow, -1 , SDL_RENDERER_PRESENTVSYNC);
SDL_Texture* sdlTexture = SDL_CreateTextureFromSurface(sdlRenderer, SDL_LoadBMP_RW(SDL_RWFromMem(bmp, 504), 1));
SDL_RenderSetLogicalSize(sdlRenderer, 320, 200);
SDL_SetTextureBlendMode(sdlTexture, SDL_BLENDMODE_ADD);
while (!should_exit) {
while (SDL_PollEvent(&sdlEvent)) {
if (sdlEvent.type == SDL_QUIT) { should_exit = true; break; }
}
if (cycle == 2) {
hanging = 0;
cycle = 0;
const Uint8* keys = SDL_GetKeyboardState(NULL);
if (keys[SDL_SCANCODE_ESCAPE]) { should_exit = true; break; }
if ((map[(hero[1]+11)/11][hero[0]/10] > 2) && (map[(hero[1]+11)/11][(hero[0]+9)/10] > 2) && (map[(hero[1])/11][hero[0]/10] > 3) && (map[(hero[1])/11][(hero[0]+9)/10] > 3) ) { hero[2]=5; hero[1]+=1;} else { if (hero[2] == 5) hero[2] = 0;
if (keys[SDL_SCANCODE_RIGHT]) { hero[3] = SDL_FLIP_NONE; if ((map[hero[1]/11][(hero[0]+10)/10] > 1) && (map[(hero[1]+10)/11][(hero[0]+10)/10] > 1)) {hero[0]+=2;hero[2]=hero[2]>1?0:hero[2]+1; } }
if (keys[SDL_SCANCODE_LEFT]) { hero[3] = SDL_FLIP_HORIZONTAL; if ((map[hero[1]/11][(hero[0]-2)/10] > 1) && (map[(hero[1]+10)/11][(hero[0]-2)/10] > 1)) {hero[0]-=2;hero[2]=hero[2]>1?0:hero[2]+1; } }
if ((map[(hero[1])/11][hero[0]/10] == 3) || (map[(hero[1])/11][(hero[0]+9)/10] == 3)) { hanging = 1; }
if (keys[SDL_SCANCODE_UP]) {
if (map[(hero[1]+10)/11][hero[0]/10] == 2) { hero[0] = (hero[0] / 10) * 10; hero[1] -= 1; hero[2] = 3; hero[3] = hero[3] == SDL_FLIP_NONE ? SDL_FLIP_HORIZONTAL : SDL_FLIP_NONE; } else
if (map[(hero[1]+10)/11][(hero[0]+9)/10] == 2) { hero[0] = ((hero[0]+9) / 10) * 10; hero[1] -= 1; hero[2] = 3; hero[3] = hero[3] == SDL_FLIP_NONE ? SDL_FLIP_HORIZONTAL : SDL_FLIP_NONE; }
}
if (keys[SDL_SCANCODE_DOWN]) {
if (((map[(hero[1])/11][hero[0]/10] == 3) || (map[(hero[1])/11][(hero[0]+9)/10] == 3)) && (hero[1]/11*11 == hero[1])) { hero[1] += 1; } else
if (map[(hero[1]+11)/11][hero[0]/10] == 2) { hero[0] = (hero[0] / 10) * 10; hero[1] += 1; hero[2] = 3; hero[3] = hero[3] == SDL_FLIP_NONE ? SDL_FLIP_HORIZONTAL : SDL_FLIP_NONE; } else
if (map[(hero[1]+11)/11][(hero[0]+9)/10] == 2) { hero[0] = ((hero[0]+9) / 10) * 10; hero[1] += 1; hero[2] = 3; hero[3] = hero[3] == SDL_FLIP_NONE ? SDL_FLIP_HORIZONTAL : SDL_FLIP_NONE; }
}
}
} else cycle++;
SDL_SetRenderDrawColor(sdlRenderer, 24, 29, 25, 255);
SDL_RenderClear(sdlRenderer);
for (int y=0; y<16; y++) {
for (int x=0; x<28; x++) {
SDL_Rect src {(map[y][x])*10, 0, 10, 11};
SDL_Rect dst {20+x*10, y*11, 10, 11};
if (map[y][x] < 2) { SDL_SetTextureColorMod(sdlTexture, 149, 58, 75); } else { SDL_SetTextureColorMod(sdlTexture, 251, 249, 254); }
if (map[y][x] < 5) SDL_RenderCopyEx(sdlRenderer, sdlTexture, &src, &dst, 0, NULL, SDL_FLIP_NONE);
}
}
SDL_Rect src {hero[2]*10, (1+hanging)*11, 10, 11};
SDL_Rect dst {20+hero[0], hero[1]+hanging, 10, 11};
SDL_SetTextureColorMod(sdlTexture, 251, 249, 254); SDL_RenderCopyEx(sdlRenderer, sdlTexture, &src, &dst, 0, NULL, SDL_RendererFlip(hero[3]));
SDL_RenderPresent(sdlRenderer);
}
SDL_DestroyTexture(sdlTexture);
SDL_DestroyWindow(sdlWindow);
SDL_Quit();
return 0;
}