From 880ce752d4618397aa250a4e0b1623eef7089910 Mon Sep 17 00:00:00 2001 From: posweg Date: Fri, 5 May 2017 16:19:44 +0200 Subject: [PATCH] Powerup prototype and "improved" collision hadling --- .gitignore | 3 +++ Makefile | 7 +++++-- block.cpp | 7 ++++++- block.h | 7 ++++--- dt.h | 5 +++++ entity.cpp | 3 +-- entity.h | 5 +++-- main | Bin 23688 -> 23992 bytes main.cpp | 26 ++++++++++++++------------ player.cpp | 26 +++++++++++++++++++++++--- player.h | 7 ++++--- powerup.cpp | 31 +++++++++++++++++++++++++++++++ powerup.h | 21 +++++++++++++++++++++ 13 files changed, 120 insertions(+), 28 deletions(-) create mode 100644 powerup.cpp create mode 100644 powerup.h diff --git a/.gitignore b/.gitignore index fe736d0..a9e50e9 100644 --- a/.gitignore +++ b/.gitignore @@ -5,3 +5,6 @@ *.swk *.swl *.swm +*.swi +*.swh +*.swj diff --git a/Makefile b/Makefile index a1c9692..425d00a 100644 --- a/Makefile +++ b/Makefile @@ -1,6 +1,6 @@ #-*- Makefile -*- -OBJS = main.o player.o dt.o block.o entity.o camera.o texture.o +OBJS = main.o player.o dt.o block.o entity.o camera.o texture.o powerup.o CC = g++ @@ -14,7 +14,7 @@ OBJ_NAME = main all: $(OBJS) $(CC) $(OBJS) $(COMPLER_FLAGS) $(LINKER_FLAGS) -o $(OBJ_NAME) -main.o: main.cpp texture.o +main.o: main.cpp $(CC) -c main.cpp $(LINKER_FLAGS) player.o: player.cpp player.h entity.o texture.o @@ -34,3 +34,6 @@ camera.o: camera.cpp camera.h texture.o: texture.cpp texture.h $(CC) -c -lSDL2_image texture.cpp + +powerup.o: powerup.cpp powerup.h + $(CC) -c powerup.cpp $(LINKER_FLAGS) diff --git a/block.cpp b/block.cpp index 9dbcad4..f39a6c4 100644 --- a/block.cpp +++ b/block.cpp @@ -1,11 +1,14 @@ #include"block.h" -Block::Block(int x, int y, int w, int h,SDL_Renderer** render){ +Block::Block(int x, int y, int w, int h,SDL_Renderer** render, Player* player){ //set the rectangle dimensions rect = {x,y,w,h}; //Set the renderer pointer renderer = render; + + posu = player; + type = 1; } void Block::print(int cameraX){ @@ -16,4 +19,6 @@ void Block::print(int cameraX){ //Set render color and render the rectangle SDL_SetRenderDrawColor(*renderer,0,0xFF,0,0xFF); SDL_RenderFillRect(*renderer,&cameraFix); + + posu->check(rect,type); }; diff --git a/block.h b/block.h index b09dc48..90757ad 100644 --- a/block.h +++ b/block.h @@ -6,15 +6,16 @@ #include"entity.h" #include #include +#include"player.h" class Entity; class Block: public Entity{ public: - Block(int x,int y,int w,int h,SDL_Renderer** render); + Block(int x,int y,int w,int h,SDL_Renderer** render, Player* player); void print(int cameraX); - private: - SDL_Renderer** renderer; + protected: + Player* posu; }; #endif diff --git a/dt.h b/dt.h index f91419b..e208992 100644 --- a/dt.h +++ b/dt.h @@ -1,5 +1,8 @@ //Delta time class header +#ifndef __DT_H_INCLUDED__ +#define __DT_H_INCLUDED__ + #include class DeltaTime{ @@ -9,3 +12,5 @@ class DeltaTime{ private: float now, last, dt; }; + +#endif diff --git a/entity.cpp b/entity.cpp index 0d102af..e11f5f8 100644 --- a/entity.cpp +++ b/entity.cpp @@ -1,8 +1,7 @@ -//Virtual base class for entities +//Base class for entities #include"entity.h" SDL_Rect Entity::getRectangle(){ - //std::cout << rect.w << std::endl; return rect; }; diff --git a/entity.h b/entity.h index feb6c57..908c207 100644 --- a/entity.h +++ b/entity.h @@ -1,4 +1,4 @@ -//Virutal base class for entities +//Base class for entities #ifndef __ENTITY_H_INCLUDED__ #define __ENTITY_H_INCLUDED__ @@ -11,8 +11,9 @@ class Entity{ SDL_Rect getRectangle(); protected: SDL_Rect rect; + SDL_Renderer** renderer; int posX, posY, szW, szH; - + int type; }; #endif diff --git a/main b/main index d97feb2f7dcd2fa8679e21dd508205b8343bfec0..94d6ed8d38355401943918467638f6f27c6ae1f8 100755 GIT binary patch delta 9601 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 Yinc^b4Xpl=>+RdIT|!U0kW%9MKU9QGZvX%Q diff --git a/main.cpp b/main.cpp index 4ab3f90..d9a878e 100644 --- a/main.cpp +++ b/main.cpp @@ -2,8 +2,10 @@ #include #include +#include"entity.h" #include"player.h" #include"block.h" +#include"powerup.h" #include"camera.h" const int SCREEN_WIDTH = 640; @@ -48,17 +50,16 @@ int main(int argc, char* args[]){ bool quit = false; SDL_Event e; - Player posweg; Camera camera(36*sz,SCREEN_WIDTH); - - Block wallA(8*sz,SCREEN_HEIGHT-sz*5,sz*2,sz*2,&gRenderer); - Block wallB(4*sz,SCREEN_HEIGHT-sz*3,sz,sz*2,&gRenderer); - Block wallC(6*sz,SCREEN_HEIGHT-sz*3,sz,sz*2,&gRenderer); - Block ground(0,SCREEN_HEIGHT-sz,SCREEN_WIDTH,sz,&gRenderer); - Block ground2(SCREEN_WIDTH+sz*4,SCREEN_HEIGHT-sz,SCREEN_WIDTH,sz,&gRenderer); - Block powerup(13*sz,SCREEN_HEIGHT-sz*4,20,20,&gRenderer); - posweg.init(100,100,sz,sz,&gRenderer); + Player posweg(100,100,sz,sz,&gRenderer); + + Block wallA(8*sz,SCREEN_HEIGHT-sz*5,sz*2,sz*2,&gRenderer,&posweg); + Block wallB(4*sz,SCREEN_HEIGHT-sz*3,sz,sz*2,&gRenderer,&posweg); + Block wallC(6*sz,SCREEN_HEIGHT-sz*3,sz,sz*2,&gRenderer,&posweg); + Block ground(0,SCREEN_HEIGHT-sz,SCREEN_WIDTH,sz,&gRenderer,&posweg); + Block ground2(SCREEN_WIDTH+sz*4,SCREEN_HEIGHT-sz,SCREEN_WIDTH,sz,&gRenderer,&posweg); + Powerup powerup(13*sz,SCREEN_HEIGHT-sz*4,&gRenderer,&posweg); while(!quit){ while(SDL_PollEvent(&e)!=0){ @@ -80,12 +81,13 @@ int main(int argc, char* args[]){ ground2.print(camera.getPosX()); powerup.print(camera.getPosX()); - posweg.check(wallA.getRectangle()); + //Entity *ePwrUp = &powerup; + /*posweg.check(wallA.getRectangle()); posweg.check(wallB.getRectangle()); posweg.check(wallC.getRectangle()); posweg.check(ground.getRectangle()); - posweg.check(ground2.getRectangle()); - posweg.check(powerup.getRectangle()); + posweg.check(ground2.getRectangle());*/ + //posweg.check(ePwrUp); SDL_RenderPresent(gRenderer); } diff --git a/player.cpp b/player.cpp index 3eb2a47..bbf2635 100644 --- a/player.cpp +++ b/player.cpp @@ -7,6 +7,11 @@ void Player::print(int cameraX){ SDL_Rect cameraFix = rect; cameraFix.x -= cameraX; + if(power > 0){ + std::cout << power << "ye" << std::endl; + power--; + } + SDL_SetRenderDrawColor(*renderer,0xFF,0,0,0xFF); ply.render(&cameraFix,currentFrame,renderer); if(ifRunning)ply.render(&cameraFix,&plyFrame[5],renderer); @@ -20,7 +25,7 @@ void Player::print(int cameraX){ topCollision = false; }; -void Player::init(int x,int y, int w, int h, SDL_Renderer** render){ +Player::Player(int x,int y, int w, int h, SDL_Renderer** render){ posX = x; posY = y; szW = w; @@ -111,7 +116,7 @@ void Player::move(){ isRunning = false; if(currentKeyStates[SDL_SCANCODE_SPACE] and !topCollision){ velocityY = jump; - if(run!=1){ + if(currentKeyStates[SDL_SCANCODE_LSHIFT]){ isRunning = true; } } @@ -134,9 +139,10 @@ void Player::move(){ rect = {posX,posY,szW,szH}; }; -int Player::check(SDL_Rect rectA){ +int Player::check(SDL_Rect rectA, int type){ //Initialize and reset collision type int collision = 0; + //Set B rectangle variables int bX = rectA.x; @@ -151,6 +157,7 @@ int Player::check(SDL_Rect rectA){ float angle = atan2(oldPosY - posY, oldPosX - posX); //Move the player out of the rectangle + if(type == 1){ while(((movX >= bX and movX < b2X) or (movX + szW > bX and movX + szW <= b2X) or (movX < bX and movX + szW > b2X)) @@ -233,4 +240,17 @@ int Player::check(SDL_Rect rectA){ velocityX -= static_cast(velocityX); } } + } + else if(type == 2){ + if(((movX >= bX and movX < b2X) + or (movX + szW > bX and movX + szW <= b2X) + or (movX < bX and movX + szW > b2X)) + and ((movY >= bY and movY < b2Y) + or (movY + szH > bY and movY + szH <= b2Y) + or (movY < bY and movY + szH > b2Y))){ + //power = 10 / dTime.getDt(); + power = 360; + } + } + return power; }; diff --git a/player.h b/player.h index d59f8ac..ca51e12 100644 --- a/player.h +++ b/player.h @@ -1,7 +1,7 @@ //Player class header #ifndef __PLAYER_H_INCLUDED__ -#define __PLAYER_H_INLCUDED__ +#define __PLAYER_H_INCLUDED__ #include #include @@ -15,8 +15,8 @@ class Entity; class Player: public Entity{ public: void print(int cameraX); - int check(SDL_Rect rectB); - void init(int x, int y,int w, int h,SDL_Renderer** render); + int check(SDL_Rect rectA,int type); + Player(int x, int y,int w, int h,SDL_Renderer** render); private: int* coll; bool loadMedia(); @@ -32,6 +32,7 @@ class Player: public Entity{ bool isRunning = false; bool ifRunning = false; int oldPosX, oldPosY; + int power = 0; PosuTexture ply; SDL_Rect* currentFrame; diff --git a/powerup.cpp b/powerup.cpp new file mode 100644 index 0000000..efc8ace --- /dev/null +++ b/powerup.cpp @@ -0,0 +1,31 @@ +//Powerup class body + +#include"powerup.h" + +Powerup::Powerup(int x, int y, SDL_Renderer** render,Player* player){ + posX = x; + posY = y; + szW = 20; + szH = 20; + + type = 2; + + rect = {posX, posY, szW, szH}; + + renderer = render; + + posu = player; +}; + +void Powerup::print(int cameraX){ + //New SDL_Rect to make the objects follow the camera + SDL_Rect cameraFix = rect; + cameraFix.x -= cameraX; + + //Set render color and render the rectangle + if(posu->check(rect,type)==0){ + SDL_SetRenderDrawColor(*renderer,0xFF,0xFF,0,0xFF); + SDL_RenderFillRect(*renderer,&cameraFix); + } + //posu->check(rect, type); +}; diff --git a/powerup.h b/powerup.h new file mode 100644 index 0000000..bebcb7c --- /dev/null +++ b/powerup.h @@ -0,0 +1,21 @@ +//Powerup class header + +#ifndef __POWERUP_H_INCLUDED__ +#define __POWERUP_H_INCLUDED__ + +#include +#include +#include"entity.h" +#include"player.h" + +class Entity; + +class Powerup: public Entity{ + public: + Powerup(int x, int y, SDL_Renderer** render, Player* player); + void print(int cameraX); + protected: + Player* posu; +}; + +#endif