Move safe zone logic into getOpenPos

main
Jerry Aldrich 11 years ago
parent 7b4d6573bd
commit bd48516d32
  1. 4
      gameLoop.c
  2. 6
      getPos.c
  3. 4
      weaponsSystem.c
  4. 49
      zombies.c

@ -10,7 +10,8 @@ void gameLoop(){
drawScore();
drawViewport();
moveProjectiles();
moveZombies();
// moveZombies();
addZombie();
randomEvents();
doupdate();
int ch;
@ -101,5 +102,6 @@ void gameLoop(){
break;
}
checkPlayerCollision();
usleep(30000);
}
}

@ -7,7 +7,7 @@ int getOpenPos(){
spaceExists:
openPos.y=(rand()%(viewportWinRows-2)+1);
openPos.x=(rand()%(viewportWinCols-2)+1);
if(mvwinch(viewportWin,openPos.y,openPos.x)==' '){
if(mvwinch(viewportWin,openPos.y,openPos.x)==' ' && ((openPos.y > allEntities[0].curYpos+5 || openPos.y < allEntities[0].curYpos-5) || (openPos.x > allEntities[0].curXpos+5 || openPos.x < allEntities[0].curXpos-5))){
int i;
for(i=1;i<MAX_ENTITIES;i++){
if(allEntities[i].isAlive && allEntities[i].curYpos==openPos.y && allEntities[i].curXpos==openPos.x){
@ -15,6 +15,7 @@ int getOpenPos(){
}
else{
chooseAnother=0;
return 1;
}
}
}
@ -22,7 +23,7 @@ int getOpenPos(){
int x,y;
for(y=0;y<viewportWinRows;y++){
for(x=0;x<viewportWinCols;x++){
if(mvwinch(viewportWin,y,x)==' '){
if(mvwinch(viewportWin,y,x)==' ' && ((y > allEntities[0].curYpos+5 || y < allEntities[0].curYpos-5) || (x > allEntities[0].curXpos+5 || x < allEntities[0].curXpos-5))){
chooseAnother=1;
goto spaceExists;
}
@ -31,7 +32,6 @@ int getOpenPos(){
return 0;
}
}
return 1;
}
void getNextPos(int y, int x, int y2, int x2){

@ -42,11 +42,7 @@ void moveProjectiles(){
mvwaddch(viewportWin, projectiles[i].curYpos, projectiles[i].curXpos, ' ');
}
}
else{
mvwaddch(viewportWin, projectiles[i].curYpos, projectiles[i].curXpos, ' ');
}
}
usleep(30000);
}
void fireWeapon(struct Weapon *weaponRef, char *direction){

@ -4,43 +4,24 @@
#include <collisionDetection.h>
void addZombie(){
if(getOpenPos()){
int attempts=0;
while (attempts<=10){
if(getOpenPos()){
if((openPos.y > allEntities[0].curYpos+5 || openPos.y < allEntities[0].curYpos-5) || (openPos.x > allEntities[0].curXpos+5 || openPos.x < allEntities[0].curXpos-5)) {
attempts=0;
break;
}
else{
getOpenPos();
attempts++;
}
}
else{
attempts=0;
int i;
for(i=0;i<MAX_ENTITIES-1;i++){
if(!allEntities[i].isAlive){
struct Entity zombie;
zombie.curYpos=openPos.y;
zombie.curXpos=openPos.x;
zombie.nextYpos=openPos.y;
zombie.nextXpos=openPos.x;
zombie.type="zombie";
zombie.symbol='Z';
zombie.isAlive=1;
allEntities[i]=zombie;
mvwaddch(viewportWin, allEntities[i].curYpos, allEntities[i].curXpos, allEntities[i].symbol);
wnoutrefresh(viewportWin);
doupdate();
break;
}
}
if (attempts<10){
int i;
for(i=0;i<MAX_ENTITIES-1;i++){
if(!allEntities[i].isAlive){
struct Entity zombie;
zombie.curYpos=openPos.y;
zombie.curXpos=openPos.x;
zombie.nextYpos=openPos.y;
zombie.nextXpos=openPos.x;
zombie.type="zombie";
zombie.symbol='Z';
zombie.isAlive=1;
allEntities[i]=zombie;
mvwaddch(viewportWin, allEntities[i].curYpos, allEntities[i].curXpos, allEntities[i].symbol);
wnoutrefresh(viewportWin);
doupdate();
break;
}
}
}
}
}

Loading…
Cancel
Save