From e4e10b825b46d11207cc86fc90b94a2b63b5d5e0 Mon Sep 17 00:00:00 2001 From: Jerry Aldrich Date: Tue, 7 Apr 2015 21:21:11 -0500 Subject: [PATCH] Add randomEvents based on eventTrigger Zombie Spawning and Item Spawning --- collisionDetection.c | 18 +++++++++++++++++- collisionDetection.h | 3 ++- drawWindows.c | 2 ++ events.c | 19 +++++++++++++++++++ gameLoop.c | 3 ++- weaponsSystem.c | 10 +--------- world.h | 4 ++++ 7 files changed, 47 insertions(+), 12 deletions(-) diff --git a/collisionDetection.c b/collisionDetection.c index ba68ec3..8f0dfc5 100644 --- a/collisionDetection.c +++ b/collisionDetection.c @@ -21,12 +21,28 @@ struct CollisionEvent collisionDetect(int objYpos, int objXpos){ return collisionEvent; } -void checkPlayerCollisions(){ +void checkProjectileCollision(struct Projectile *projectileRef ){ + struct CollisionEvent collisionEvent = collisionDetect(projectileRef->curYpos, projectileRef->curXpos); + if(collisionEvent.collidedWithEntity){ + if(!strcmp(collisionEvent.collidedWithEntity->type,"zombie")){ + projectileRef->isAlive=0; + collisionEvent.collidedWithEntity->isAlive=0; + allEntities[0].killCount++; + if (allEntities[0].killCount != 0 && allEntities[0].killCount%10==0){ + itemModifier++; + } + mvwaddch(viewportWin, collisionEvent.collidedWithEntity->curYpos, collisionEvent.collidedWithEntity->curXpos, ' '); + } + } +} + +void checkPlayerCollision(){ struct CollisionEvent collisionEvent = collisionDetect(allEntities[0].curYpos, allEntities[0].curXpos); if(collisionEvent.collidedWithEntity){ if(!strcmp(collisionEvent.collidedWithEntity->type,"zombie")){ collisionEvent.collidedWithEntity->isAlive=0; mvwaddch(viewportWin, allEntities[0].curYpos, allEntities[0].curXpos, ' '); + drawGameOverWin(); } } diff --git a/collisionDetection.h b/collisionDetection.h index 889863a..e3b2809 100644 --- a/collisionDetection.h +++ b/collisionDetection.h @@ -4,5 +4,6 @@ #include struct CollisionEvent collisionDetect(); - +void checkProjectileCollision(); +void checkPlayerCollision(); #endif diff --git a/drawWindows.c b/drawWindows.c index b8ce094..6515376 100644 --- a/drawWindows.c +++ b/drawWindows.c @@ -9,6 +9,8 @@ void drawScore(){ mvwprintw(scoreWin, 2, 1, "Ammo: %d/%d:%d",allEntities[0].weapons[allEntities[0].curWeapon].curCapacity,allEntities[0].weapons[allEntities[0].curWeapon].maxCapacity,allEntities[0].weapons[allEntities[0].curWeapon].curMags); mvwprintw(scoreWin,3,1,"Zombies Killed: %d",allEntities[0].killCount); mvwprintw(scoreWin,4,1,"Projectiles Fired: %d",allEntities[0].projectilesFired); + mvwprintw(scoreWin,5,1,"Zombie Modifier: %d",zombieModifier); + mvwprintw(scoreWin,6,1,"Item Modifier: %d",itemModifier); wnoutrefresh(scoreWin); } diff --git a/events.c b/events.c index 6cb6e5e..0b5f104 100644 --- a/events.c +++ b/events.c @@ -1,6 +1,14 @@ #include #include #include +#include +#include +#include +#include + +int zombieModifer=0; +int itemModifier=0; + void addItem(char *type, int yPos, int xPos){ if(!strcmp(type,"Pistol Magazine")){ struct Item pistolMag = {.type="Pistol Magazine", .symbol='=', .isAlive=1, .curXpos=xPos, .curYpos=yPos}; @@ -13,3 +21,14 @@ void addItem(char *type, int yPos, int xPos){ } } } +void randomEvents(){ + int eventTrigger = rand()%1000+1; + if (eventTrigger < 2+itemModifier){ + getOpenPos(); + addItem("Pistol Magazine", openPos.y, openPos.x); + } + if (eventTrigger < 10+zombieModifier){ + addZombie(); + zombieModifier++; + } +} diff --git a/gameLoop.c b/gameLoop.c index b678bb1..c68b1ff 100644 --- a/gameLoop.c +++ b/gameLoop.c @@ -11,6 +11,7 @@ void gameLoop(){ drawViewport(); moveProjectiles(); moveZombies(); + randomEvents(); doupdate(); int ch; ch = getch(); @@ -99,6 +100,6 @@ void gameLoop(){ if (ch != ERR) {lastPressed=ch;}; break; } - checkPlayerCollisions(); + checkPlayerCollision(); } } diff --git a/weaponsSystem.c b/weaponsSystem.c index be2ea88..0960def 100644 --- a/weaponsSystem.c +++ b/weaponsSystem.c @@ -33,15 +33,7 @@ void moveProjectiles(){ } projectiles[i].distanceTraveled++; mvwaddch(viewportWin, projectiles[i].curYpos, projectiles[i].curXpos, projectiles[i].symbol); - struct CollisionEvent collisionEvent = collisionDetect(projectiles[i].curYpos, projectiles[i].curXpos); - if(collisionEvent.collidedWithEntity){ - if(!strcmp(collisionEvent.collidedWithEntity->type,"zombie")){ - projectiles[i].isAlive=0; - collisionEvent.collidedWithEntity->isAlive=0; - allEntities[0].killCount++; - mvwaddch(viewportWin, collisionEvent.collidedWithEntity->curYpos, collisionEvent.collidedWithEntity->curXpos, ' '); - } - } + checkProjectileCollision(&projectiles[i]); if(mvwinch(viewportWin,projectiles[i].prevYpos, projectiles[i].prevXpos)==projectiles[i].symbol){ mvwaddch(viewportWin, projectiles[i].prevYpos, projectiles[i].prevXpos, ' '); } diff --git a/world.h b/world.h index 0de6d38..70a4b5b 100644 --- a/world.h +++ b/world.h @@ -15,4 +15,8 @@ struct Projectile projectiles[MAX_PROJECTILES]; #define INITIAL_SPAWN_NUM 10 + +int zombieModifier; +int itemModifier; + #endif