diff --git a/collisionDetection.c b/collisionDetection.c index e756a52..a1426df 100644 --- a/collisionDetection.c +++ b/collisionDetection.c @@ -4,7 +4,7 @@ struct CollisionEvent collisionDetect(int objYpos, int objXpos){ int i; for(i=1; itype,"zombie")){ + allEntities[0].isAlive=0; updateViewportWin(); sleep(1); drawGameOverWin(); diff --git a/drawWindows.c b/drawWindows.c index 04abda6..ebfbe16 100644 --- a/drawWindows.c +++ b/drawWindows.c @@ -23,19 +23,30 @@ void updateViewportWin(){ else if(!allProjectiles[i].isAlive && mvwinch(viewportWin,allProjectiles[i].curYpos,allProjectiles[i].curXpos)==allProjectiles[i].symbol){ mvwaddch(viewportWin, allProjectiles[i].curYpos, allProjectiles[i].curXpos, ' '); } - if(mvwinch(viewportWin,allProjectiles[i].prevYpos, allProjectiles[i].prevXpos)==allProjectiles[i].symbol){ + if(allProjectiles[i].isAlive && mvwinch(viewportWin,allProjectiles[i].prevYpos, allProjectiles[i].prevXpos)==allProjectiles[i].symbol){ mvwaddch(viewportWin, allProjectiles[i].prevYpos, allProjectiles[i].prevXpos, ' '); } + else if(!allProjectiles[i].isAlive && mvwinch(viewportWin,allProjectiles[i].prevYpos,allProjectiles[i].prevXpos)==allProjectiles[i].symbol){ + mvwaddch(viewportWin, allProjectiles[i].prevYpos, allProjectiles[i].prevXpos, ' '); + } } for(i=0; i #include #include + void gameLoop(){ - int lastPressed; while(1) { - updateInfoWin(); - updateViewportWin(); moveProjectiles(); - moveZombies(); randomEvents(); + moveZombies(); + updateInfoWin(); + updateViewportWin(); doupdate(); int ch; ch = getch(); @@ -19,8 +19,8 @@ void gameLoop(){ case 'W':{ struct CollisionEvent collisionEvent = collisionDetect(allEntities[0].curYpos-1,allEntities[0].curXpos); if(!collisionEvent.collidedWithUnPassableChar && !collisionEvent.collidedWithBoundary){ - allEntities[0].prevYpos=allEntities[0].curYpos; allEntities[0].prevXpos=allEntities[0].curXpos; + allEntities[0].prevYpos=allEntities[0].curYpos; allEntities[0].curYpos--; }; break; @@ -29,8 +29,8 @@ void gameLoop(){ case 'S':{ struct CollisionEvent collisionEvent = collisionDetect(allEntities[0].curYpos+1,allEntities[0].curXpos); if(!collisionEvent.collidedWithUnPassableChar && !collisionEvent.collidedWithBoundary){ - allEntities[0].prevYpos=allEntities[0].curYpos; allEntities[0].prevXpos=allEntities[0].curXpos; + allEntities[0].prevYpos=allEntities[0].curYpos; allEntities[0].curYpos++; }; break; @@ -41,7 +41,6 @@ void gameLoop(){ if(!collisionEvent.collidedWithUnPassableChar && !collisionEvent.collidedWithBoundary){ allEntities[0].prevYpos=allEntities[0].curYpos; allEntities[0].prevXpos=allEntities[0].curXpos; - allEntities[0].prevXpos=allEntities[0].curXpos; allEntities[0].curXpos--; }; break; @@ -52,7 +51,6 @@ void gameLoop(){ if(!collisionEvent.collidedWithUnPassableChar && !collisionEvent.collidedWithBoundary){ allEntities[0].prevYpos=allEntities[0].curYpos; allEntities[0].prevXpos=allEntities[0].curXpos; - allEntities[0].prevXpos=allEntities[0].curXpos; allEntities[0].curXpos++; }; break; @@ -88,10 +86,13 @@ void gameLoop(){ } } default: - if (ch != ERR) {lastPressed=ch;}; + allEntities[0].prevYpos=allEntities[0].curYpos; + allEntities[0].prevXpos=allEntities[0].curXpos; break; } checkPlayerCollision(); usleep(30000); + updateInfoWin(); + updateViewportWin(); } } diff --git a/initializeWorld.c b/initializeWorld.c index ad5cbdf..afa395e 100644 --- a/initializeWorld.c +++ b/initializeWorld.c @@ -15,7 +15,7 @@ void initializeWorld() { keypad(stdscr, TRUE); noecho(); - struct Entity player = {.type="player",.symbol='@', .curYpos=1, .curXpos=1, .prevYpos=1, .prevXpos=1 ,.isAlive=1}; + struct Entity player = {.type="player", .symbol='@', .isAlive=1}; struct Weapon pistol = {.type="Pistol", .isAlive=1, .range=3, .maxCapacity=12, .curCapacity=12, .symbols="-\\|/-\\|/"}; passableChars="#"; diff --git a/zombies.c b/zombies.c index ed84822..5b752d3 100644 --- a/zombies.c +++ b/zombies.c @@ -25,6 +25,8 @@ void addZombie(int y, int x){ void moveZombies(){ int i; for(i=1;i