Files
OHLGames/pacman.cpp
2020-11-24 18:58:03 +01:00

75 lines
13 KiB
C++

#include <SDL2/SDL.h>
class Pacman { public: SDL_Point pos {104, 184}; Uint8 anim_frame {0}; int orient {-1}; };
SDL_Renderer* sdlRenderer;
SDL_Texture* sdlTexture;
SDL_Event sdlEvent;
bool should_exit = false;
Uint8 bmp[576] { 0x42, 0x4D, 0x40, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x02, 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, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF8, 0x3F, 0xFF, 0xFF, 0xF8, 0x3F, 0xFF, 0xFF, 0xE0, 0x3F, 0xFF, 0xFF, 0xE0, 0x0F, 0xE7, 0xCF, 0xC0, 0x7F, 0xFF, 0xFF, 0xC0, 0x07, 0xC7, 0xC7, 0xC0, 0xFF, 0xFF, 0xFF, 0xC0, 0x07, 0xC3, 0x87, 0x81, 0xFF, 0x9F, 0xF3, 0x80, 0x1F, 0x83, 0x83, 0x83, 0xFF, 0x8F, 0xE3, 0x80, 0xFF, 0x83, 0x83, 0x87, 0xFF, 0x87, 0xC3, 0x87, 0xFF, 0x81, 0x03, 0x83, 0xFF, 0x83, 0x83, 0x80, 0xFF, 0x81, 0x03, 0x81, 0xFF, 0x81, 0x03, 0x80, 0x1F, 0x80, 0x03, 0xC0, 0xFF, 0xC0, 0x07, 0xC0, 0x07, 0xC0, 0x07, 0xC0, 0x7F, 0xC0, 0x07, 0xC0, 0x07, 0xC0, 0x07, 0xE0, 0x3F, 0xE0, 0x0F, 0xE0, 0x0F, 0xE0, 0x0F, 0xF8, 0x3F, 0xF8, 0x3F, 0xF8, 0x3F, 0xF8, 0x3F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xCE, 0x73, 0xB9, 0x9D, 0xFF, 0xFF, 0xE7, 0xFF, 0x84, 0x21, 0x91, 0x89, 0xF8, 0x3F, 0xC3, 0xFF, 0x80, 0x01, 0x80, 0x01, 0xE0, 0x0F, 0xC3, 0xFF, 0x80, 0x01, 0x80, 0x01, 0xC0, 0x07, 0xC3, 0xD9, 0x80, 0x01, 0x80, 0x01, 0xC0, 0x07, 0xE7, 0xE6, 0x80, 0x01, 0x80, 0x01, 0x80, 0x03, 0xFF, 0xFF, 0x80, 0x01, 0x80, 0x01, 0x80, 0x03, 0x6F, 0xF6, 0xFF, 0xFF, 0x80, 0x01, 0x80, 0x03, 0x6F, 0xF6, 0xFF, 0xFF, 0xC0, 0x03, 0x80, 0x03, 0x6F, 0xF6, 0xFF, 0xFF, 0xC0, 0x03, 0x80, 0x03, 0x77, 0xEE, 0xFF, 0xFF, 0xC0, 0x03, 0xC0, 0x07, 0x78, 0x1E, 0xFF, 0xFF, 0xE0, 0x07, 0xC0, 0x07, 0x7F, 0xFE, 0xFF, 0xFF, 0xF0, 0x0F, 0xE0, 0x0F, 0x7F, 0xFE, 0xFF, 0xFF, 0xFC, 0x3F, 0xF8, 0x3F, 0x7F, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF6, 0x00, 0x00, 0x6F, 0xFF, 0xFF, 0x7F, 0xFE, 0xF7, 0xFE, 0x7F, 0xEF, 0xFF, 0xFF, 0x7F, 0xFE, 0xF7, 0xFE, 0x7F, 0xEF, 0xFF, 0xFF, 0x7F, 0xFE, 0xF0, 0x00, 0x00, 0x0F, 0xFF, 0xFF, 0x78, 0x1E, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0x0F, 0x77, 0xEE, 0xFF, 0xFF, 0xFF, 0xFF, 0xF7, 0xEF, 0x6F, 0xF6, 0xFF, 0xFF, 0xFF, 0xFF, 0xF7, 0xEF, 0x6F, 0xF6, 0xFF, 0xFF, 0xFF, 0xFF, 0xF6, 0x6F, 0x6F, 0xF6, 0xFF, 0xF7, 0xEF, 0xF0, 0x00, 0xFF, 0xFF, 0x0F, 0xFF, 0xF7, 0xEF, 0xCF, 0xFF, 0xFF, 0xFF, 0xF3, 0xFF, 0xF7, 0xEF, 0xBF, 0xFF, 0xFF, 0xFF, 0xFD, 0xFF, 0xEF, 0xF7, 0xB8, 0x00, 0xF8, 0x1F, 0x1D, 0x3F, 0x1F, 0xF8, 0x77, 0xFF, 0xF7, 0xEF, 0xEE, 0xDF, 0xFF, 0xFF, 0x6F, 0xFF, 0xEF, 0xF7, 0xF6, 0xEF, 0xFF, 0xFF, 0x6F, 0xFF, 0xEF, 0xF7, 0xF6, 0xEF, 0xFF, 0xFF, 0x6F, 0xFF, 0xEF, 0xF7, 0xF6, 0xF7, 0xEF, 0xF6, 0xF7, 0xFF, 0xEF, 0xFF, 0xFF, 0xF7, 0xEF, 0xF6, 0xF7, 0xFF, 0xEF, 0xFF, 0xFF, 0xF7, 0xEF, 0xF6, 0xFB, 0xFF, 0xDF, 0xFF, 0xFF, 0xF7, 0xEF, 0xF6, 0xFC, 0x00, 0x3F, 0xFF, 0xFF, 0xF7, 0xEF, 0xF6, 0xFF, 0xFF, 0xFF, 0xFC, 0x00, 0xF7, 0xEF, 0xF6, 0xFF, 0xFF, 0xFF, 0xFB, 0xFF, 0xF7, 0xEF, 0xF6, 0xFF, 0xFF, 0xFF, 0xF7, 0xFF, 0xF7, 0xEF, 0xF6, 0xFF, 0xFF, 0xFF, 0xF7, 0xFF, 0xFF, 0xC3, 0x6F, 0xFF, 0xF7, 0xEF, 0xF6, 0x6F, 0xFF, 0x81, 0x6F, 0xFF, 0xF7, 0xEF, 0xF6, 0x6F, 0xFF, 0x00, 0x6F, 0xFF, 0xF7, 0xEF, 0xF6, 0x6F, 0xE7, 0x00, 0x77, 0xFF, 0xEF, 0xF7, 0xEE, 0x6F, 0xE7, 0x00, 0xB8, 0x00, 0x1F, 0xF8, 0x1D, 0x6F, 0xFF, 0x00, 0xBF, 0xFF, 0xFF, 0xFF, 0xFD, 0x6F, 0xFF, 0x81, 0xCF, 0xFF, 0xFF, 0xFF, 0xF3, 0x6F, 0xFF, 0xC3, 0xF0, 0x00, 0x00, 0x00, 0x0F, 0x6F, 0x00, 0x00 };
Uint8 map[868] { 0x41, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x43, 0x44, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x45, 0x46, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x47, 0x48, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x49, 0x46, 0x3F, 0x4A, 0x4B, 0x4B, 0x4C, 0x3F, 0x4A, 0x4B, 0x4B, 0x4B, 0x4C, 0x3F, 0x47, 0x48, 0x3F, 0x4A, 0x4B, 0x4B, 0x4B, 0x4C, 0x3F, 0x4A, 0x4B, 0x4B, 0x4C, 0x3F, 0x49, 0x46, 0x40, 0x47, 0x3E, 0x3E, 0x48, 0x3F, 0x47, 0x3E, 0x3E, 0x3E, 0x48, 0x3F, 0x47, 0x48, 0x3F, 0x47, 0x3E, 0x3E, 0x3E, 0x48, 0x3F, 0x47, 0x3E, 0x3E, 0x48, 0x40, 0x49, 0x46, 0x3F, 0x4D, 0x4E, 0x4E, 0x4F, 0x3F, 0x4D, 0x4E, 0x4E, 0x4E, 0x4F, 0x3F, 0x4D, 0x4F, 0x3F, 0x4D, 0x4E, 0x4E, 0x4E, 0x4F, 0x3F, 0x4D, 0x4E, 0x4E, 0x4F, 0x3F, 0x49, 0x46, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x49, 0x46, 0x3F, 0x4A, 0x4B, 0x4B, 0x4C, 0x3F, 0x4A, 0x4C, 0x3F, 0x4A, 0x4B, 0x4B, 0x4B, 0x4B, 0x4B, 0x4B, 0x4C, 0x3F, 0x4A, 0x4C, 0x3F, 0x4A, 0x4B, 0x4B, 0x4C, 0x3F, 0x49, 0x46, 0x3F, 0x4D, 0x4E, 0x4E, 0x4F, 0x3F, 0x47, 0x48, 0x3F, 0x4D, 0x4E, 0x4E, 0x50, 0x51, 0x4E, 0x4E, 0x4F, 0x3F, 0x47, 0x48, 0x3F, 0x4D, 0x4E, 0x4E, 0x4F, 0x3F, 0x49, 0x46, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x47, 0x48, 0x3F, 0x3F, 0x3F, 0x3F, 0x47, 0x48, 0x3F, 0x3F, 0x3F, 0x3F, 0x47, 0x48, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x49, 0x52, 0x53, 0x53, 0x53, 0x53, 0x4C, 0x3F, 0x47, 0x54, 0x4B, 0x4B, 0x4C, 0x3F, 0x47, 0x48, 0x3F, 0x4A, 0x4B, 0x4B, 0x55, 0x48, 0x3F, 0x4A, 0x53, 0x53, 0x53, 0x53, 0x56, 0x3E, 0x3E, 0x3E, 0x3E, 0x3E, 0x46, 0x3F, 0x47, 0x51, 0x4E, 0x4E, 0x4F, 0x3E, 0x4D, 0x4F, 0x3E, 0x4D, 0x4E, 0x4E, 0x50, 0x48, 0x3F, 0x49, 0x3E, 0x3E, 0x3E, 0x3E, 0x3E, 0x3E, 0x3E, 0x3E, 0x3E, 0x3E, 0x46, 0x3F, 0x47, 0x48, 0x3E, 0x3E, 0x3E, 0x3E, 0x3E, 0x3E, 0x3E, 0x3E, 0x3E, 0x3E, 0x47, 0x48, 0x3F, 0x49, 0x3E, 0x3E, 0x3E, 0x3E, 0x3E, 0x3E, 0x3E, 0x3E, 0x3E, 0x3E, 0x46, 0x3F, 0x47, 0x48, 0x3E, 0x57, 0x53, 0x58, 0x3E, 0x3E, 0x59, 0x53, 0x5A, 0x3E, 0x47, 0x48, 0x3F, 0x49, 0x3E, 0x3E, 0x3E, 0x3E, 0x3E, 0x42, 0x42, 0x42, 0x42, 0x42, 0x4F, 0x3F, 0x4D, 0x4F, 0x3E, 0x49, 0x3E, 0x3E, 0x3E, 0x3E, 0x3E, 0x3E, 0x46, 0x3E, 0x4D, 0x4F, 0x3F, 0x4D, 0x42, 0x42, 0x42, 0x42, 0x42, 0x3E, 0x3E, 0x3E, 0x3E, 0x3E, 0x3E, 0x3F, 0x3E, 0x3E, 0x3E, 0x49, 0x3E, 0x3E, 0x3E, 0x3E, 0x3E, 0x3E, 0x46, 0x3E, 0x3E, 0x3E, 0x3F, 0x3E, 0x3E, 0x3E, 0x3E, 0x3E, 0x3E, 0x53, 0x53, 0x53, 0x53, 0x53, 0x4C, 0x3F, 0x4A, 0x4C, 0x3E, 0x49, 0x3E, 0x3E, 0x3E, 0x3E, 0x3E, 0x3E, 0x46, 0x3E, 0x4A, 0x4C, 0x3F, 0x4A, 0x53, 0x53, 0x53, 0x53, 0x53, 0x3E, 0x3E, 0x3E, 0x3E, 0x3E, 0x46, 0x3F, 0x47, 0x48, 0x3E, 0x5B, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x5C, 0x3E, 0x47, 0x48, 0x3F, 0x49, 0x3E, 0x3E, 0x3E, 0x3E, 0x3E, 0x3E, 0x3E, 0x3E, 0x3E, 0x3E, 0x46, 0x3F, 0x47, 0x48, 0x3E, 0x3E, 0x3E, 0x3E, 0x3E, 0x3E, 0x3E, 0x3E, 0x3E, 0x3E, 0x47, 0x48, 0x3F, 0x49, 0x3E, 0x3E, 0x3E, 0x3E, 0x3E, 0x3E, 0x3E, 0x3E, 0x3E, 0x3E, 0x46, 0x3F, 0x47, 0x48, 0x3E, 0x4A, 0x4B, 0x4B, 0x4B, 0x4B, 0x4B, 0x4B, 0x4C, 0x3E, 0x47, 0x48, 0x3F, 0x49, 0x3E, 0x3E, 0x3E, 0x3E, 0x3E, 0x41, 0x42, 0x42, 0x42, 0x42, 0x4F, 0x3F, 0x4D, 0x4F, 0x3E, 0x4D, 0x4E, 0x4E, 0x50, 0x51, 0x4E, 0x4E, 0x4F, 0x3E, 0x4D, 0x4F, 0x3F, 0x4D, 0x42, 0x42, 0x42, 0x42, 0x45, 0x46, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x47, 0x48, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x49, 0x46, 0x3F, 0x4A, 0x4B, 0x4B, 0x4C, 0x3F, 0x4A, 0x4B, 0x4B, 0x4B, 0x4C, 0x3F, 0x47, 0x48, 0x3F, 0x4A, 0x4B, 0x4B, 0x4B, 0x4C, 0x3F, 0x4A, 0x4B, 0x4B, 0x4C, 0x3F, 0x49, 0x46, 0x3F, 0x4D, 0x4E, 0x50, 0x48, 0x3F, 0x4D, 0x4E, 0x4E, 0x4E, 0x4F, 0x3F, 0x4D, 0x4F, 0x3F, 0x4D, 0x4E, 0x4E, 0x4E, 0x4F, 0x3F, 0x47, 0x51, 0x4E, 0x4F, 0x3F, 0x49, 0x46, 0x40, 0x3F, 0x3F, 0x47, 0x48, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3E, 0x3E, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x47, 0x48, 0x3F, 0x3F, 0x40, 0x49, 0x5D, 0x4B, 0x4C, 0x3F, 0x47, 0x48, 0x3F, 0x4A, 0x4C, 0x3F, 0x4A, 0x4B, 0x4B, 0x4B, 0x4B, 0x4B, 0x4B, 0x4C, 0x3F, 0x4A, 0x4C, 0x3F, 0x47, 0x48, 0x3F, 0x4A, 0x4B, 0x5E, 0x5F, 0x4E, 0x4F, 0x3F, 0x4D, 0x4F, 0x3F, 0x47, 0x48, 0x3F, 0x4D, 0x4E, 0x4E, 0x50, 0x51, 0x4E, 0x4E, 0x4F, 0x3F, 0x47, 0x48, 0x3F, 0x4D, 0x4F, 0x3F, 0x4D, 0x4E, 0x60, 0x46, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x47, 0x48, 0x3F, 0x3F, 0x3F, 0x3F, 0x47, 0x48, 0x3F, 0x3F, 0x3F, 0x3F, 0x47, 0x48, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x49, 0x46, 0x3F, 0x4A, 0x4B, 0x4B, 0x4B, 0x4B, 0x55, 0x54, 0x4B, 0x4B, 0x4C, 0x3F, 0x47, 0x48, 0x3F, 0x4A, 0x4B, 0x4B, 0x55, 0x54, 0x4B, 0x4B, 0x4B, 0x4B, 0x4C, 0x3F, 0x49, 0x46, 0x3F, 0x4D, 0x4E, 0x4E, 0x4E, 0x4E, 0x4E, 0x4E, 0x4E, 0x4E, 0x4F, 0x3F, 0x4D, 0x4F, 0x3F, 0x4D, 0x4E, 0x4E, 0x4E, 0x4E, 0x4E, 0x4E, 0x4E, 0x4E, 0x4F, 0x3F, 0x49, 0x46, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x49, 0x52, 0x53, 0x53, 0x53, 0x53, 0x53, 0x53, 0x53, 0x53, 0x53, 0x53, 0x53, 0x53, 0x53, 0x53, 0x53, 0x53, 0x53, 0x53, 0x53, 0x53, 0x53, 0x53, 0x53, 0x53, 0x53, 0x53, 0x56 }; //"ABBBBBBBBBBBBCDBBBBBBBBBBBBEF????????????GH????????????IF?JKKL?JKKKL?GH?JKKKL?JKKL?IF@G>>H?G>>>H?GH?G>>>H?G>>H@IF?MNNO?MNNNO?MO?MNNNO?MNNO?IF??????????????????????????IF?JKKL?JL?JKKKKKKL?JL?JKKL?IF?MNNO?GH?MNNPQNNO?GH?MNNO?IF??????GH????GH????GH??????IRSSSSL?GTKKL?GH?JKKUH?JSSSSV>>>>>F?GQNNO>MO>MNNPH?I>>>>>>>>>>F?GH>>>>>>>>>>GH?I>>>>>>>>>>F?GH>WSX>>YSZ>GH?I>>>>>BBBBBO?MO>I>>>>>>F>MO?MBBBBB>>>>>>?>>>I>>>>>>F>>>?>>>>>>SSSSSL?JL>I>>>>>>F>JL?JSSSSS>>>>>F?GH>[BBBBBB\>GH?I>>>>>>>>>>F?GH>>>>>>>>>>GH?I>>>>>>>>>>F?GH>JKKKKKKL>GH?I>>>>>ABBBBO?MO>MNNPQNNO>MO?MBBBBEF????????????GH????????????IF?JKKL?JKKKL?GH?JKKKL?JKKL?IF?MNPH?MNNNO?MO?MNNNO?GQNO?IF@??GH???????>>???????GH??@I]KL?GH?JL?JKKKKKKL?JL?GH?JK^_NO?MO?GH?MNNPQNNO?GH?MO?MN`F??????GH????GH????GH??????IF?JKKKKUTKKL?GH?JKKUTKKKKL?IF?MNNNNNNNNO?MO?MNNNNNNNNO?IF??????????????????????????IRSSSSSSSSSSSSSSSSSSSSSSSSSSV" };
Uint8 pac_anims[2][4] { {11, 14, 12, 14}, {11, 15, 13, 15} };
Pacman pacman;
int main(int argc, char* argv[]) {
SDL_Init(SDL_INIT_EVERYTHING);
SDL_Window* sdlWindow = SDL_CreateWindow("PACMAN", SDL_WINDOWPOS_UNDEFINED, SDL_WINDOWPOS_UNDEFINED, 448, 576, SDL_WINDOW_SHOWN);
sdlRenderer = SDL_CreateRenderer(sdlWindow, -1, SDL_RENDERER_PRESENTVSYNC);
SDL_RenderSetLogicalSize(sdlRenderer, 224, 288);
sdlTexture = SDL_CreateTextureFromSurface(sdlRenderer, SDL_LoadBMP_RW(SDL_RWFromMem(bmp, 576), 1));
while(!should_exit) {
while(SDL_PollEvent(&sdlEvent)) {
if (sdlEvent.type == SDL_QUIT) { should_exit = true; break; }
}
const Uint8* keys = SDL_GetKeyboardState(NULL);
int want_orient = -1;
if (keys[SDL_SCANCODE_RIGHT]) want_orient = 0;
if (keys[SDL_SCANCODE_DOWN]) want_orient = 1;
if (keys[SDL_SCANCODE_LEFT]) want_orient = 2;
if (keys[SDL_SCANCODE_UP]) want_orient = 3;
if (pacman.orient > -1) pacman.anim_frame++;
if (pacman.anim_frame == 8 || pacman.anim_frame == 0) {
pacman.anim_frame = 0;
switch (want_orient) {
case 0: if (map[((pacman.pos.x+8)/8)+((pacman.pos.y)/8)*28] < 65) pacman.orient = want_orient; break;
case 1: if (map[((pacman.pos.x)/8)+((pacman.pos.y+8)/8)*28] < 65) pacman.orient = want_orient; break;
case 2: if (map[((pacman.pos.x-1)/8)+((pacman.pos.y)/8)*28] < 65) pacman.orient = want_orient; break;
case 3: if (map[((pacman.pos.x)/8)+((pacman.pos.y-1)/8)*28] < 65) pacman.orient = want_orient; break;
}
if (pacman.orient != want_orient) {
switch (pacman.orient) {
case 0: if (map[((pacman.pos.x+8)/8)+((pacman.pos.y)/8)*28] >= 65) pacman.orient = -1; break;
case 1: if (map[((pacman.pos.x)/8)+((pacman.pos.y+8)/8)*28] >= 65) pacman.orient = -1; break;
case 2: if (map[((pacman.pos.x-1)/8)+((pacman.pos.y)/8)*28] >= 65) pacman.orient = -1; break;
case 3: if (map[((pacman.pos.x)/8)+((pacman.pos.y-1)/8)*28] >= 65) pacman.orient = -1; break;
}
}
}
switch (pacman.orient) {
case 0: pacman.pos.x++; break;
case 1: pacman.pos.y++; break;
case 2: pacman.pos.x--; break;
case 3: pacman.pos.y--; break;
}
map[((pacman.pos.x)/8)+((pacman.pos.y)/8)*28] = 62;
SDL_SetRenderDrawColor(sdlRenderer, 0, 0, 0, 255);
SDL_RenderClear(sdlRenderer);
int x=0, y=24;
for (int i=0; i<868; i++) {
if (map[i] > 62) {
SDL_Rect src { 8*((map[i]-63)%8), 8*((map[i]-63)/8), 8, 8 }, dst { x, y, 8, 8 };
if (map[i]>64) { SDL_SetTextureColorMod(sdlTexture, 33, 33, 222); } else { SDL_SetTextureColorMod(sdlTexture, 255, 184, 151); }
SDL_RenderCopy(sdlRenderer, sdlTexture, &src, &dst);
}
x+=8; if (x==224) { x=0; y+=8; }
}
int orient = pacman.orient == -1 ? 0 : pacman.orient;
SDL_Rect src { 16*(pac_anims[orient%2][pacman.anim_frame/2]%4), 16*(pac_anims[orient%2][pacman.anim_frame/2]/4), 16, 16 }, dst { pacman.pos.x-4, pacman.pos.y+20, 16, 16 };
SDL_SetTextureColorMod(sdlTexture, 255, 255, 0);
SDL_RenderCopyEx(sdlRenderer, sdlTexture, &src, &dst, 0, NULL, pacman.orient == 2 ? SDL_FLIP_HORIZONTAL : pacman.orient == 3 ? SDL_FLIP_VERTICAL : SDL_FLIP_NONE );
SDL_RenderPresent(sdlRenderer);
}
SDL_Quit();
return 0;
}