From b0030425a498caf0f7ab53ac50eb677325e17002 Mon Sep 17 00:00:00 2001 From: Joseph Ferano Date: Sun, 17 Sep 2023 21:27:02 +0700 Subject: [PATCH] First commit --- .gitignore | 2 + Makefile | 22 ++++++++++ font.png | Bin 0 -> 8770 bytes main.cpp | 122 +++++++++++++++++++++++++++++++++++++++++++++++++++++ 4 files changed, 146 insertions(+) create mode 100644 .gitignore create mode 100644 Makefile create mode 100644 font.png create mode 100644 main.cpp diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..034db26 --- /dev/null +++ b/.gitignore @@ -0,0 +1,2 @@ +/rust-version/ +/main diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..007152e --- /dev/null +++ b/Makefile @@ -0,0 +1,22 @@ +#OBJS specifies which files to compile as part of the project +OBJS = main.cpp + +#CC specifies which compiler we're using +CC = g++ + +#COMPILER_FLAGS specifies the additional compilation options we're using +# -w suppresses all warnings +COMPILER_FLAGS = -w + +#LINKER_FLAGS specifies the libraries we're linking against +LINKER_FLAGS = -lSDL2 -lSDL2_image + +#OBJ_NAME specifies the name of our exectuable +OBJ_NAME = main + +run: all + ./$(OBJ_NAME) + +#This is the target that compiles our executable +all : $(OBJS) + $(CC) $(OBJS) $(COMPILER_FLAGS) $(LINKER_FLAGS) -o $(OBJ_NAME) diff --git a/font.png b/font.png new file mode 100644 index 0000000000000000000000000000000000000000..c51c78873ce243a756977e7833784390c42b3ac1 GIT binary patch literal 8770 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 C@%@_s literal 0 HcmV?d00001 diff --git a/main.cpp b/main.cpp new file mode 100644 index 0000000..0b79081 --- /dev/null +++ b/main.cpp @@ -0,0 +1,122 @@ +#include +#include +#include +#include +#include +#include + +using namespace std; + +//Screen dimension constants +const int SCREEN_WIDTH = 1024; +const int SCREEN_HEIGHT = 768; + +enum KeyPressSurfaces +{ + KEY_PRESS_SURFACE_DEFAULT, + KEY_PRESS_SURFACE_UP, + KEY_PRESS_SURFACE_DOWN, + KEY_PRESS_SURFACE_LEFT, + KEY_PRESS_SURFACE_RIGHT, + KEY_PRESS_SURFACE_TOTAL +}; + +int main(int argc, char *argv[]) { + SDL_Window* window = NULL; + + if (SDL_Init(SDL_INIT_EVERYTHING) < 0) { + printf("error initializing SDL: %s\n", SDL_GetError()); + return 1; + } + + window = SDL_CreateWindow( "SDL Tutorial", + SDL_WINDOWPOS_UNDEFINED, + SDL_WINDOWPOS_UNDEFINED, + SCREEN_WIDTH, + SCREEN_HEIGHT, + SDL_WINDOW_SHOWN ); + if (window == NULL) { + printf( "Window could not be created! SDL_Error: %s\n", SDL_GetError() ); + return 1; + } + + SDL_Renderer* renderer = + SDL_CreateRenderer(window, -1, SDL_RENDERER_ACCELERATED); + + + SDL_Surface* imageSurface = IMG_Load("font.png"); + if (imageSurface == NULL) { + cout << "Could not find spritesheet" << endl; + return 1; + } + + // SDL_Surface* screenSurface = NULL; + // //Get window surface + // screenSurface = SDL_GetWindowSurface( window ); + + //Fill the surface white + // auto rgbMap = SDL_MapRGB( screenSurface->format, 0x82, 0xA3, 0xFF); + + int test = 0; + SDL_Event e; + bool quit = false; + int keyPressed = -1; + while (quit == false) { + while (SDL_PollEvent( &e)) { + if (e.type == SDL_QUIT) { + quit = true; + } + else if (e.type == SDL_KEYDOWN) { + char key = e.key.keysym.sym; + if (key >= (char)'!' || key <= (char)'~') { + keyPressed = key; + } + // switch (e.key.keysym.sym) { + // case SDLK_ + // } + } + } + + // SDL_FillRect( screenSurface, NULL, rgbMap); + + SDL_Rect srcrect; + SDL_Rect dstrect; + + + if (keyPressed > 0) { + srcrect.x = (keyPressed % 16) * 70; + srcrect.y = (keyPressed / 16) * 80; + } else { + srcrect.x = 0; + srcrect.y = 0; + } + + srcrect.w = 80; + srcrect.h = 80; + + dstrect.x = SCREEN_WIDTH/2 - 40; + dstrect.y = SCREEN_HEIGHT/2 - 40; + dstrect.w = 10; + dstrect.h = 10; + + // SDL_BlitSurface(imageSurface, &srcrect, screenSurface, &dstrect); + + //Update the surface + // SDL_UpdateWindowSurface( window ); + + SDL_SetRenderDrawColor(renderer, 130, 163, 255, 1); + SDL_RenderClear(renderer); + + SDL_RenderPresent(renderer); + } + + + //Hack to get window to stay up + // SDL_FreeSurface(screenSurface); + SDL_FreeSurface(imageSurface); + SDL_DestroyWindow( window ); + + //Quit SDL subsystems + SDL_Quit(); + return 0; +}