From 05c656550eeb281b5ebef1c66e36fb3dc183a160 Mon Sep 17 00:00:00 2001 From: antoinemeyer5 <antoine.meyer54@gmail.com> Date: Thu, 23 Jun 2022 12:06:34 +0200 Subject: [PATCH] concatenation code collisions --- travail_de_groupe/chef_oeuvre/src/player.c | 108 ++++++++++----------- 1 file changed, 50 insertions(+), 58 deletions(-) diff --git a/travail_de_groupe/chef_oeuvre/src/player.c b/travail_de_groupe/chef_oeuvre/src/player.c index c2c2271..a722ebb 100644 --- a/travail_de_groupe/chef_oeuvre/src/player.c +++ b/travail_de_groupe/chef_oeuvre/src/player.c @@ -42,6 +42,15 @@ int checkCollisionsTypeGround(int dot1, int dot2, int typeGround){ return coll; } +int collisionsCaseSolid(int dot1, int dot2){ + return checkCollisionsTypeGround(dot1, dot2, TREE) + || checkCollisionsTypeGround(dot1, dot2, WATER); +} + +/*int collisionsWindow(){ + +}*/ + void checkCollisionsFire(int dot1, int dot2){ if(player.invisible==0 && (dot1==1 || dot2==1) && player.currentHP>0){ player.currentHP = player.currentHP - 1; @@ -50,88 +59,60 @@ void checkCollisionsFire(int dot1, int dot2){ } } -int collisionsLeftPlayer(){ +int collisionsLeftPlayer(int dot1, int dot2){ int collisionWindow = 0; - int collisionTree = 0; - int collisionWater = 0; - int dotTopLeft = giveCaseBelowPosition(player.x, player.y); - int dotDownLeft = giveCaseBelowPosition(player.x, player.y+player.h); - int fireTopLeft = searchFire(fireList, getPositionXInMap(player.x), getPositionYInMap(player.y)); - int fireDownLeft = searchFire(fireList, getPositionXInMap(player.x), getPositionYInMap(player.y+player.h)); + int collisionCaseSolid = 0; //collision window if(player.x <= 0){ collisionWindow = 1; } //collisions - collisionTree = checkCollisionsTypeGround(dotTopLeft, dotDownLeft, TREE); - collisionWater = checkCollisionsTypeGround(dotTopLeft, dotDownLeft, WATER); - checkCollisionsFire(fireTopLeft, fireDownLeft); - - return collisionWindow || collisionTree || collisionWater; + collisionCaseSolid = collisionsCaseSolid(dot1, dot2); + return collisionWindow || collisionCaseSolid; } -int collisionsRightPlayer(){ +int collisionsRightPlayer(int dot1, int dot2){ int collisionWindow = 0; - int collisionTree = 0; - int collisionWater = 0; - int dotTopRight = giveCaseBelowPosition(player.x+player.w, player.y); - int dotDownRight = giveCaseBelowPosition(player.x+player.w, player.y+player.h); - int fireTopRight = searchFire(fireList, getPositionXInMap(player.x+player.w), getPositionYInMap(player.y)); - int fireDownRight = searchFire(fireList, getPositionXInMap(player.x+player.w), getPositionYInMap(player.y+player.h)); + int collisionCaseSolid = 0; //collision window if(player.x + player.w >= MAPSIZE * CELLSIZE){ collisionWindow = 1; } //collisions - collisionTree = checkCollisionsTypeGround(dotTopRight, dotDownRight, TREE); - collisionWater = checkCollisionsTypeGround(dotTopRight, dotDownRight, WATER); - checkCollisionsFire(fireTopRight, fireDownRight); - return collisionWindow || collisionTree || collisionWater; + collisionCaseSolid = collisionsCaseSolid(dot1, dot2); + return collisionWindow || collisionCaseSolid; } int collisionsUpPlayer(int dot1, int dot2){ int collisionWindow = 0; - int collisionTree = 0; - int collisionWater = 0; + int collisionCaseSolid = 0; //collision window if(player.y <= 0){ collisionWindow = 1; } - //collisions - collisionTree = checkCollisionsTypeGround(dot1, dot2, TREE); - collisionWater = checkCollisionsTypeGround(dot1, dot2, WATER); - return collisionWindow || collisionTree || collisionWater; + //collisions solide like tree or water or rock(in the future) + collisionCaseSolid = collisionsCaseSolid(dot1, dot2); + return collisionWindow || collisionCaseSolid; } -int collisionsDownPlayer(){ +int collisionsDownPlayer(int dot1, int dot2){ int collisionWindow = 0; - int collisionTree = 0; - int collisionWater = 0; - int dotDownRight = giveCaseBelowPosition(player.x+player.w, player.y+player.h); - int dotDownLeft = giveCaseBelowPosition(player.x, player.y+player.h); - int fireDownRight = searchFire(fireList, getPositionXInMap(player.x+player.w), getPositionYInMap(player.y+player.h)); - int fireDownLeft = searchFire(fireList, getPositionXInMap(player.x), getPositionYInMap(player.y+player.h)); + int collisionCaseSolid = 0; //collision window if(player.y + player.h >= MAPSIZE * CELLSIZE){ collisionWindow = 1; } //collisions - collisionTree = checkCollisionsTypeGround(dotDownRight, dotDownLeft, TREE); - collisionWater = checkCollisionsTypeGround(dotDownRight, dotDownLeft, WATER); - checkCollisionsFire(fireDownRight, fireDownLeft); - return collisionWindow || collisionTree || collisionWater; + collisionCaseSolid = collisionsCaseSolid(dot1, dot2); + return collisionWindow || collisionCaseSolid; } void moveRightPlayer(){ - if(!collisionsRightPlayer()){ - player.x = player.x + player.speed; - } + player.x = player.x + player.speed; } void moveLeftPlayer(){ - if(!collisionsLeftPlayer()){ - player.x = player.x - player.speed; - } + player.x = player.x - player.speed; } void moveUpPlayer(){ @@ -139,16 +120,18 @@ void moveUpPlayer(){ } void moveDownPlayer(){ - if(!collisionsDownPlayer()){ - player.y = player.y + player.speed; - } + player.y = player.y + player.speed; } void manageMovement(){ int dotTopRight = giveCaseBelowPosition(player.x+player.w, player.y); int dotTopLeft = giveCaseBelowPosition(player.x, player.y); + int dotDownRight = giveCaseBelowPosition(player.x+player.w, player.y+player.h); + int dotDownLeft = giveCaseBelowPosition(player.x, player.y+player.h); int fireTopRight = searchFire(fireList, getPositionXInMap(player.x+player.w), getPositionYInMap(player.y)); int fireTopLeft = searchFire(fireList, getPositionXInMap(player.x), getPositionYInMap(player.y)); + int fireDownRight = searchFire(fireList, getPositionXInMap(player.x+player.w), getPositionYInMap(player.y+player.h)); + int fireDownLeft = searchFire(fireList, getPositionXInMap(player.x), getPositionYInMap(player.y+player.h)); if(keys[PLAYER_UP]){ if(!collisionsUpPlayer(dotTopRight, dotTopLeft)){ @@ -159,19 +142,28 @@ void manageMovement(){ } } else if(keys[PLAYER_DOWN]){ - moveDownPlayer(); - player.isMoving = 1; - player.direction = PLAYER_DOWN; + if(!collisionsDownPlayer(dotDownRight, dotDownLeft)){ + moveDownPlayer(); + checkCollisionsFire(fireDownRight, fireDownLeft); + player.isMoving = 1; + player.direction = PLAYER_DOWN; + } } else if(keys[PLAYER_LEFT]){ - moveLeftPlayer(); - player.isMoving = 1; - player.direction = PLAYER_LEFT; + if(!collisionsLeftPlayer(dotTopLeft, dotDownLeft)){ + moveLeftPlayer(); + checkCollisionsFire(fireTopLeft, fireDownLeft); + player.isMoving = 1; + player.direction = PLAYER_LEFT; + } } else if(keys[PLAYER_RIGHT]){ - moveRightPlayer(); - player.isMoving = 1; - player.direction = PLAYER_RIGHT; + if(!collisionsRightPlayer(dotTopRight, dotDownRight)){ + moveRightPlayer(); + checkCollisionsFire(fireTopRight, fireDownRight); + player.isMoving = 1; + player.direction = PLAYER_RIGHT; + } } else player.isMoving = 0; // -- GitLab