Add randomEvents based on eventTrigger

Zombie Spawning and Item Spawning
main
Jerry Aldrich 11 years ago
parent 8c406f33fe
commit e4e10b825b
  1. 18
      collisionDetection.c
  2. 3
      collisionDetection.h
  3. 2
      drawWindows.c
  4. 19
      events.c
  5. 3
      gameLoop.c
  6. 10
      weaponsSystem.c
  7. 4
      world.h

@ -21,12 +21,28 @@ struct CollisionEvent collisionDetect(int objYpos, int objXpos){
return collisionEvent; 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); struct CollisionEvent collisionEvent = collisionDetect(allEntities[0].curYpos, allEntities[0].curXpos);
if(collisionEvent.collidedWithEntity){ if(collisionEvent.collidedWithEntity){
if(!strcmp(collisionEvent.collidedWithEntity->type,"zombie")){ if(!strcmp(collisionEvent.collidedWithEntity->type,"zombie")){
collisionEvent.collidedWithEntity->isAlive=0; collisionEvent.collidedWithEntity->isAlive=0;
mvwaddch(viewportWin, allEntities[0].curYpos, allEntities[0].curXpos, ' '); mvwaddch(viewportWin, allEntities[0].curYpos, allEntities[0].curXpos, ' ');
drawGameOverWin(); drawGameOverWin();
} }
} }

@ -4,5 +4,6 @@
#include <world.h> #include <world.h>
struct CollisionEvent collisionDetect(); struct CollisionEvent collisionDetect();
void checkProjectileCollision();
void checkPlayerCollision();
#endif #endif

@ -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, 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,3,1,"Zombies Killed: %d",allEntities[0].killCount);
mvwprintw(scoreWin,4,1,"Projectiles Fired: %d",allEntities[0].projectilesFired); 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); wnoutrefresh(scoreWin);
} }

@ -1,6 +1,14 @@
#include <events.h> #include <events.h>
#include <structs.h> #include <structs.h>
#include <world.h> #include <world.h>
#include <getPos.h>
#include <time.h>
#include <stdlib.h>
#include <zombies.h>
int zombieModifer=0;
int itemModifier=0;
void addItem(char *type, int yPos, int xPos){ void addItem(char *type, int yPos, int xPos){
if(!strcmp(type,"Pistol Magazine")){ if(!strcmp(type,"Pistol Magazine")){
struct Item pistolMag = {.type="Pistol Magazine", .symbol='=', .isAlive=1, .curXpos=xPos, .curYpos=yPos}; 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++;
}
}

@ -11,6 +11,7 @@ void gameLoop(){
drawViewport(); drawViewport();
moveProjectiles(); moveProjectiles();
moveZombies(); moveZombies();
randomEvents();
doupdate(); doupdate();
int ch; int ch;
ch = getch(); ch = getch();
@ -99,6 +100,6 @@ void gameLoop(){
if (ch != ERR) {lastPressed=ch;}; if (ch != ERR) {lastPressed=ch;};
break; break;
} }
checkPlayerCollisions(); checkPlayerCollision();
} }
} }

@ -33,15 +33,7 @@ void moveProjectiles(){
} }
projectiles[i].distanceTraveled++; projectiles[i].distanceTraveled++;
mvwaddch(viewportWin, projectiles[i].curYpos, projectiles[i].curXpos, projectiles[i].symbol); mvwaddch(viewportWin, projectiles[i].curYpos, projectiles[i].curXpos, projectiles[i].symbol);
struct CollisionEvent collisionEvent = collisionDetect(projectiles[i].curYpos, projectiles[i].curXpos); checkProjectileCollision(&projectiles[i]);
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, ' ');
}
}
if(mvwinch(viewportWin,projectiles[i].prevYpos, projectiles[i].prevXpos)==projectiles[i].symbol){ if(mvwinch(viewportWin,projectiles[i].prevYpos, projectiles[i].prevXpos)==projectiles[i].symbol){
mvwaddch(viewportWin, projectiles[i].prevYpos, projectiles[i].prevXpos, ' '); mvwaddch(viewportWin, projectiles[i].prevYpos, projectiles[i].prevXpos, ' ');
} }

@ -15,4 +15,8 @@ struct Projectile projectiles[MAX_PROJECTILES];
#define INITIAL_SPAWN_NUM 10 #define INITIAL_SPAWN_NUM 10
int zombieModifier;
int itemModifier;
#endif #endif

Loading…
Cancel
Save