From e94936ec991afae919492105f1f0f0fe33575fe0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?P=C3=B2sweg?= Date: Fri, 16 Jun 2017 17:24:22 +0200 Subject: [PATCH] C::B , menu and better organization Project adapted to Code::Blocks and Windows, new main menu and a better organization, putting all the source files in a directory and the entity source files in other one inside the source directory. New icon for the final executable. --- .gitignore | 14 +++- main | Bin 23972 -> 0 bytes camera.cpp => source/camera.cpp | 0 camera.h => source/camera.h | 2 +- core.cpp => source/core.cpp | 17 +++-- core.h => source/core.h | 15 ++-- dt.cpp => source/dt.cpp | 0 dt.h => source/dt.h | 4 +- block.cpp => source/entity/block.cpp | 0 block.h => source/entity/block.h | 2 +- entity.cpp => source/entity/entity.cpp | 0 entity.h => source/entity/entity.h | 2 +- player.cpp => source/entity/player.cpp | 24 ++++--- player.h => source/entity/player.h | 10 +-- powerup.cpp => source/entity/powerup.cpp | 0 powerup.h => source/entity/powerup.h | 2 +- source/icon.ico | Bin 0 -> 370070 bytes source/icon.rc | 6 ++ main.cpp => source/main.cpp | 0 source/menu.cpp | 86 +++++++++++++++++++++++ source/menu.h | 10 +++ texture.cpp => source/texture.cpp | 26 ++++--- texture.h => source/texture.h | 11 +-- textures/title.png | Bin 0 -> 49622 bytes 24 files changed, 178 insertions(+), 53 deletions(-) delete mode 100755 main rename camera.cpp => source/camera.cpp (100%) rename camera.h => source/camera.h (91%) rename core.cpp => source/core.cpp (91%) rename core.h => source/core.h (73%) rename dt.cpp => source/dt.cpp (100%) rename dt.h => source/dt.h (76%) rename block.cpp => source/entity/block.cpp (100%) rename block.h => source/entity/block.h (94%) rename entity.cpp => source/entity/entity.cpp (100%) rename entity.h => source/entity/entity.h (92%) rename player.cpp => source/entity/player.cpp (97%) rename player.h => source/entity/player.h (87%) rename powerup.cpp => source/entity/powerup.cpp (100%) rename powerup.h => source/entity/powerup.h (93%) create mode 100644 source/icon.ico create mode 100644 source/icon.rc rename main.cpp => source/main.cpp (100%) create mode 100644 source/menu.cpp create mode 100644 source/menu.h rename texture.cpp => source/texture.cpp (73%) rename texture.h => source/texture.h (80%) create mode 100644 textures/title.png diff --git a/.gitignore b/.gitignore index 5b45ac6..ddf7b24 100644 --- a/.gitignore +++ b/.gitignore @@ -59,5 +59,15 @@ reated by https://www.gitignore.io/api/vim,c++,linux Session.vim # temporary .netrwhist -# auto-generated tag files -tags + +### CodeBlocks ### +# specific to CodeBlocks IDE +*.cbp +*.layout +*.depend + +# generated directories +bin/ +obj/ + +# auto-generated tag files \ No newline at end of file diff --git a/main b/main deleted file mode 100755 index c3ea9f8573deb7e43a02b3b837c1faaff4f8c0de..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 23972 zcmeHve|%KcweOx}0;8r$&{U~nnQBC6aZDgasI(nO4g?7}CIM3`j>BZa3?!MD%s}u0 zh8sd1Lo`>d+FN^zPiws`ZEef7z9+pm{E%Qj)*CJLB?T2L>R{3u+Z6NeOP%}u?tRY8 znUe&q?~nJ7C!d|Q*IsL{z4qE`|2${*om$0Go6RPSCqrZkVtM!29mRl;*CN@rAPvbf00@D+3|}b`f`R!(o}wT9 zst`wCv^yC3k!fd!kmZt&s2Bl#1T+Q*=nT}0WiSMR2T?Xd8E^)J=6NepTXU5VH9xjH z7#;yHgF(L$bg++mC?Ca(O3=;vEkIrd<_8d0*N4_!U0-`ueW)?o>S_tQ<|!KUlD=%! zYW!FApiCzM^X4PacBFf6{n@q8esNaSL))HsV}Iu%|uWqH_9kK47K=f5C$9w%~VI@T)BNdR9PxDF0Opz21T+EchQS`QI^w0aBjF z!v9|u`j0L6bPN6iYko_4OKEuhVR?61@P!uqgeCuCi~J@-7@!m3+m`&lG0|CGnFYVl zBJT!Ed9zLYPQ>?F=#QJ|l>d86`92ffiTF+n{!2^w*>K`LedyD8^2EhrCh&@v4Ez%D z8YhyK5*4MS0OuVp+K5%Y@ z6>YBb`2)hcyn3a#HqabcA8LsNnyXiq)`uGd)xLH00m)n19PmW~)q&PXv^lV}Ioy!U z=w06sZuGW9e9aNBS9q`A) zmo@t~mxk-ZX;RWy6;c{*+9IWROAo(n!S-`UntVD+^<#n@J}l% z(l*JQ#B`)8Qs1(Cd%fN{cjztz1zxAD#w@R1j&@76qYo>nEz!L`qhBs|%rKiINjp5DK?=QH?+` zT}IW}yS}y6+Z1SS2{-!cLy;}sO@&J9bY{K$RV)5}Lti7?0_vlauJ;3BqZJA7>c-7* z3-qIwXhVQRzuub5Z$RVKh8n%mmO!oWve)@Hdi}wT-a22X9tr+dpBJvu%0A>}M!jP; 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 diff --git a/camera.cpp b/source/camera.cpp similarity index 100% rename from camera.cpp rename to source/camera.cpp diff --git a/camera.h b/source/camera.h similarity index 91% rename from camera.h rename to source/camera.h index 70e2f49..a88dc73 100644 --- a/camera.h +++ b/source/camera.h @@ -3,7 +3,7 @@ #ifndef __CAMERA_H_INCLUDED__ #define __CAMERA_H_INCLUDED__ -#include"player.h" +#include"entity/player.h" class Camera{ public: diff --git a/core.cpp b/source/core.cpp similarity index 91% rename from core.cpp rename to source/core.cpp index 4df2d03..4da476c 100644 --- a/core.cpp +++ b/source/core.cpp @@ -7,7 +7,7 @@ void Core::init(){ gWindow = SDL_CreateWindow("Platform Test!",SDL_WINDOWPOS_CENTERED,SDL_WINDOWPOS_CENTERED,SCREEN_WIDTH,SCREEN_HEIGHT,SDL_WINDOW_SHOWN); gRenderer = SDL_CreateRenderer(gWindow,-1,SDL_RENDERER_ACCELERATED | SDL_RENDERER_PRESENTVSYNC); SDL_SetRenderDrawColor(gRenderer,0xFF,0xFF,0xFF,0xFF); - + sz = SCREEN_WIDTH/16; } @@ -23,7 +23,7 @@ void Core::close(){ int Core::coreInit(){ init(); - bool quit = false; + /*bool quit = false; SDL_Event e; while(!quit){ @@ -37,15 +37,18 @@ int Core::coreInit(){ SDL_RenderPresent(gRenderer); + }*/ + + if(menu(gRenderer) == 1){ + map1(); } - map1(); close(); return 0; }; void Core::map1(){ - Player posweg(&gRenderer); + Player posweg(&gRenderer); bool quit = false; SDL_Event e; @@ -61,8 +64,8 @@ void Core::map1(){ Camera camera(36*sz,SCREEN_WIDTH); - posweg.print(100,100,camera.getPosX()); - + posweg.print(40,8*sz ,camera.getPosX()); + camera.update(posweg.getRectangle().x,posweg.getRectangle().y); Block wallA(8*sz,7*sz,sz*2,sz*2,&gRenderer,&posweg,camera.getPosX()); Block wallB(4*sz,9*sz,sz,sz*2,&gRenderer,&posweg,camera.getPosX()); @@ -74,5 +77,5 @@ void Core::map1(){ SDL_RenderPresent(gRenderer); } - + }; diff --git a/core.h b/source/core.h similarity index 73% rename from core.h rename to source/core.h index 19a462a..cb74b9d 100644 --- a/core.h +++ b/source/core.h @@ -4,12 +4,13 @@ #define __CORE_H_INCLUDED__ #include -#include -#include"entity.h" -#include"player.h" -#include"block.h" -#include"powerup.h" +#include +#include"entity/entity.h" +#include"entity/player.h" +#include"entity/block.h" +#include"entity/powerup.h" #include"camera.h" +#include"menu.h" class Core{ public: @@ -17,7 +18,7 @@ class Core{ private: void init(); void close(); - + void map1(); const int SCREEN_WIDTH = 640; @@ -26,7 +27,7 @@ class Core{ SDL_Window* gWindow = NULL; SDL_Renderer* gRenderer = NULL; - + //Player posweg(&gRenderer); }; diff --git a/dt.cpp b/source/dt.cpp similarity index 100% rename from dt.cpp rename to source/dt.cpp diff --git a/dt.h b/source/dt.h similarity index 76% rename from dt.h rename to source/dt.h index e208992..7ebefad 100644 --- a/dt.h +++ b/source/dt.h @@ -1,9 +1,9 @@ -//Delta time class header +//Delta time class header< #ifndef __DT_H_INCLUDED__ #define __DT_H_INCLUDED__ -#include +#include class DeltaTime{ public: diff --git a/block.cpp b/source/entity/block.cpp similarity index 100% rename from block.cpp rename to source/entity/block.cpp diff --git a/block.h b/source/entity/block.h similarity index 94% rename from block.h rename to source/entity/block.h index c244115..1afed18 100644 --- a/block.h +++ b/source/entity/block.h @@ -4,7 +4,7 @@ #define __BLOCK_H_INCLUDED__ #include"entity.h" -#include +#include #include #include"player.h" diff --git a/entity.cpp b/source/entity/entity.cpp similarity index 100% rename from entity.cpp rename to source/entity/entity.cpp diff --git a/entity.h b/source/entity/entity.h similarity index 92% rename from entity.h rename to source/entity/entity.h index 908c207..ea20aac 100644 --- a/entity.h +++ b/source/entity/entity.h @@ -3,7 +3,7 @@ #ifndef __ENTITY_H_INCLUDED__ #define __ENTITY_H_INCLUDED__ -#include +#include #include class Entity{ diff --git a/player.cpp b/source/entity/player.cpp similarity index 97% rename from player.cpp rename to source/entity/player.cpp index eb11190..f6c6e33 100644 --- a/player.cpp +++ b/source/entity/player.cpp @@ -2,7 +2,7 @@ #include"player.h" -void Player::print(int x,int y,int cameraX){ +void Player::print(int x,int y,int cameraX){ if(first == true){ first = false; posX = x; @@ -10,7 +10,7 @@ void Player::print(int x,int y,int cameraX){ } oldPosX = posX; - oldPosY = posY; + oldPosY = posY; rect.x = posX; rect.y = posY; @@ -41,6 +41,8 @@ Player::Player(SDL_Renderer** render){ ply.setRenderer(renderer); loadMedia(); //first = true; + + ground = false; }; void Player::loadMedia(){ @@ -69,10 +71,10 @@ int Player::intVelX(){ void Player::move(){ //float dt = dTime.getDt(); float dt = 0.016; - - //Set keyboard variable + + //Set keyboard variable const Uint8* currentKeyStates = SDL_GetKeyboardState(NULL); - + //Intializing variables int direction = 0; //1 = right, 0 = idle/both, -1 = left int dur = 4; //Divide transition time @@ -115,7 +117,7 @@ void Player::move(){ if(intVelX() > 0) velocityX = 0; } else if(velocityX <= 1 or velocityX >= -1) velocityX = 0; - + //Jump and gravity logic if(ground){ isRunning = false; @@ -129,14 +131,14 @@ void Player::move(){ else{ if(isRunning == false) run = 1; } - + if(run!=1) ifRunning = true; //Get the position and update the velY with gravity velocityY -= gravity * dt; float x = velocityX * dt * run; float y = velocityY * dt; - + //Convert and set new int position posX += static_cast(x); posY -= static_cast(y+0.5); @@ -154,7 +156,7 @@ int Player::check(SDL_Rect rectA, int type){ //Float-ize the position float movX = posX, movY = posY; - + //Move the player out of the rectangle if(type == 1){ while(((movX >= bX and movX < b2X) @@ -167,7 +169,7 @@ int Player::check(SDL_Rect rectA, int type){ movY -= (posY - oldPosY)/2; collision = 1; } - + //Correct possible position issues if(collision == 1){ //Vertical adjustement @@ -200,7 +202,7 @@ int Player::check(SDL_Rect rectA, int type){ //Set and int-ize the position*/ posX = static_cast(movX); posY = static_cast(movY); - + //Check collsion type and reset velocities //Vertical collisions if((posX >= bX and posX < b2X) diff --git a/player.h b/source/entity/player.h similarity index 87% rename from player.h rename to source/entity/player.h index 250d2fd..052a386 100644 --- a/player.h +++ b/source/entity/player.h @@ -1,14 +1,14 @@ -//Player class header +//Player class header< #ifndef __PLAYER_H_INCLUDED__ #define __PLAYER_H_INCLUDED__ -#include +#include #include #include -#include"dt.h" +#include"../dt.h" #include"entity.h" -#include"texture.h" +#include"../texture.h" class Entity; @@ -34,7 +34,7 @@ class Player: public Entity{ bool first; int power = 0; - PosuTexture ply; + Texture ply; SDL_Rect plyFrame[3]; SDL_Rect plyRun; }; diff --git a/powerup.cpp b/source/entity/powerup.cpp similarity index 100% rename from powerup.cpp rename to source/entity/powerup.cpp diff --git a/powerup.h b/source/entity/powerup.h similarity index 93% rename from powerup.h rename to source/entity/powerup.h index 41187c0..88a718d 100644 --- a/powerup.h +++ b/source/entity/powerup.h @@ -3,7 +3,7 @@ #ifndef __POWERUP_H_INCLUDED__ #define __POWERUP_H_INCLUDED__ -#include +#include #include #include"entity.h" #include"player.h" diff --git a/source/icon.ico b/source/icon.ico new file mode 100644 index 0000000000000000000000000000000000000000..9c6e878c92ffe8b96fd81c8fcf39fdc63816c715 GIT binary patch literal 370070 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 x: " << button[i].x + << " y: " << button[i].y + << " w: " << button[i].w + << " h: " << button[i].h + << std::endl; + } + + int select = 0; + bool wait = 0; + const Uint8* currentKeyStates = SDL_GetKeyboardState(NULL); + + std::cout << std::endl << "Entering main loop..." << std::endl; + + while(!quit){ + while(SDL_PollEvent(&e)!=0){ + if(e.type == SDL_QUIT){ + quit = true; + } + } + SDL_SetRenderDrawColor(renderer,100,200,200,0xFF); + SDL_RenderClear(renderer); + + int dir = 0; + if(currentKeyStates[SDL_SCANCODE_UP]) dir--; + if(currentKeyStates[SDL_SCANCODE_DOWN])dir++; + + if(dir != 0){ + if(!wait) select += dir; + wait = true; + } + else wait = false; + + if(select >= buttonNum) select = 0; + if(select < 0) select = buttonNum-1; + + txLogo.render(&logo); + + for(int i = 0; i < buttonNum; i++){ + if(static_cast(select) == i){ + SDL_SetRenderDrawColor(renderer,80,80,80,0xFF); + if(currentKeyStates[SDL_SCANCODE_SPACE]) SDL_SetRenderDrawColor(renderer,200,200,200,0xFF); + } + else SDL_SetRenderDrawColor(renderer,128,128,128,0xFF); + + SDL_RenderFillRect(renderer,&button[i]); + } + if(currentKeyStates[SDL_SCANCODE_SPACE]){ + if(select == 0) return 1; + else if(select == 2) break; + } + + SDL_RenderPresent(renderer); + } + + return 0; +} diff --git a/source/menu.h b/source/menu.h new file mode 100644 index 0000000..b6a235e --- /dev/null +++ b/source/menu.h @@ -0,0 +1,10 @@ +#ifndef MENU_H +#define MENU_H + +#include +#include +#include"texture.h" + +int menu(SDL_Renderer* render); + +#endif // MENU_H diff --git a/texture.cpp b/source/texture.cpp similarity index 73% rename from texture.cpp rename to source/texture.cpp index c4a8800..15f8747 100644 --- a/texture.cpp +++ b/source/texture.cpp @@ -1,6 +1,6 @@ #include"texture.h" -PosuTexture::PosuTexture(){ +Texture::Texture(){ //Initialize variables szW = 0; szH = 0; @@ -9,19 +9,19 @@ PosuTexture::PosuTexture(){ //Set renderer }; -void PosuTexture::setRenderer(SDL_Renderer** render){ +void Texture::setRenderer(SDL_Renderer** render){ renderer = render; }; -PosuTexture::~PosuTexture(){ +Texture::~Texture(){ //Deallocate //free(); }; -void PosuTexture::loadTexture(std::string path){ +void Texture::loadTexture(std::string path){ //Get rid of preexisting texture free(); - + //Load image at specified path SDL_Surface* loadedSurface = IMG_Load( path.c_str() ); @@ -47,7 +47,7 @@ void PosuTexture::loadTexture(std::string path){ } }; -void PosuTexture::free(){ +void Texture::free(){ //Free texture if it exists if(texture != NULL){ SDL_DestroyTexture(texture); @@ -57,8 +57,8 @@ void PosuTexture::free(){ } }; -void PosuTexture::render(SDL_Rect* quad,SDL_Rect* frame){ -//void PosuTexture::render(SDL_Rect* quad){ +void Texture::render(SDL_Rect* quad,SDL_Rect* frame){ +//void Texture::render(SDL_Rect* quad){ //Set clip rendering dimensions /*if(frame != NULL){ quad.w = frame->w; @@ -71,10 +71,16 @@ void PosuTexture::render(SDL_Rect* quad,SDL_Rect* frame){ //std::cout << "ye" << std::endl; }; -int PosuTexture::getWidth(){ +void Texture::render(SDL_Rect* quad){ + SDL_Rect frame = {0,0,quad->w,quad->h}; + + SDL_RenderCopy(*renderer,texture,&frame,quad); +}; + +int Texture::getWidth(){ return szW; }; -int PosuTexture::getHeight(){ +int Texture::getHeight(){ return szH; }; diff --git a/texture.h b/source/texture.h similarity index 80% rename from texture.h rename to source/texture.h index 6e5919f..0cd1ffd 100644 --- a/texture.h +++ b/source/texture.h @@ -3,18 +3,19 @@ #ifndef __TEXTURE_H_INCLUDED__ #define __TEXTURE_H_INCLUDED__ -#include -#include +#include +#include #include #include -class PosuTexture{ +class Texture{ public: - PosuTexture(); - ~PosuTexture(); + Texture(); + ~Texture(); void loadTexture(std::string path); void free(); void render(SDL_Rect* quad,SDL_Rect* frame); + void render(SDL_Rect* quad); //void render(SDL_Rect* quad); int getWidth(); int getHeight(); diff --git a/textures/title.png b/textures/title.png new file mode 100644 index 0000000000000000000000000000000000000000..faad291a1a44fa2793ba575f22d2ec3fb175a2da GIT binary patch literal 49622 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 literal 0 HcmV?d00001