Add No-Spawn zone around player

main
Jerry Aldrich 11 years ago
parent dda3e11477
commit f2bea0209b
  1. 1
      drawWindows.c
  2. 2
      gameLoop.c
  3. 13
      initializeWorld.c
  4. 4
      makefile
  5. 7
      world.h
  6. 21
      zombies.c

@ -1,6 +1,7 @@
#include <world.h> #include <world.h>
#include <screen.h> #include <screen.h>
#include <stdlib.h> #include <stdlib.h>
void drawScore(){ void drawScore(){
werase(scoreWin); werase(scoreWin);
box(scoreWin, 0, 0); box(scoreWin, 0, 0);

@ -1,12 +1,12 @@
#include <world.h> #include <world.h>
#include <screen.h> #include <screen.h>
#include <collisionDetection.h> #include <collisionDetection.h>
void gameLoop(){ void gameLoop(){
int lastPressed; int lastPressed;
while(1) { while(1) {
drawScore(); drawScore();
drawViewport(); drawViewport();
//addZombie();
moveProjectiles(); moveProjectiles();
moveZombies(); moveZombies();
doupdate(); doupdate();

@ -20,12 +20,6 @@ void initializeWorld() {
getmaxyx(viewportWin,viewportWinRows,viewportWinCols); getmaxyx(viewportWin,viewportWinRows,viewportWinCols);
scoreWin=newwin(10,scrCols,scrRows-10,0); scoreWin=newwin(10,scrCols,scrRows-10,0);
int initialSpawn=(viewportWinRows*viewportWinCols)/100;
int i;
for(i=0;i<initialSpawn;i++){
addZombie();
}
allEntities[0]=player; allEntities[0]=player;
allEntities[0].curYpos=(rand()%(viewportWinRows-2))+1; allEntities[0].curYpos=(rand()%(viewportWinRows-2))+1;
allEntities[0].curXpos=(rand()%(viewportWinCols-2))+1; allEntities[0].curXpos=(rand()%(viewportWinCols-2))+1;
@ -34,6 +28,11 @@ void initializeWorld() {
allEntities[0].weapons[0]=pistol; allEntities[0].weapons[0]=pistol;
allEntities[0].curWeapon=0; allEntities[0].curWeapon=0;
drawScore();
drawViewport();
int i;
for(i=0;i<INITIAL_SPAWN_NUM;i++){
addZombie();
}
} }

@ -1,7 +1,7 @@
CFLAGS=-I. -lncurses -lm CFLAGS=-I. -lncurses -lm
nZombies: all:
gcc -o nZombies *.c $(CFLAGS) gcc -o nZombies *.c $(CFLAGS)
clean: clean:
@rm *.o nZombies @rm nZombies

@ -1,10 +1,15 @@
#ifndef _INITIALIZE_WORLD #ifndef _INITIALIZE_WORLD
#define _INITIALIZE_WORLD #define _INITIALIZE_WORLD
#define MAX_ALIVE 1000 #define MAX_ALIVE 10000
#include <structs.h> #include <structs.h>
#include <screen.h>
struct Entity allEntities[MAX_ALIVE]; struct Entity allEntities[MAX_ALIVE];
#define INITIAL_SPAWN_NUM 10
void initializeWorld(); void initializeWorld();
#endif #endif

@ -4,6 +4,24 @@
void addZombie(){ void addZombie(){
if(getOpenPos()){ 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;
break;
}
}
if (attempts<10){
int i; int i;
for(i=0;i<MAX_ALIVE-1;i++){ for(i=0;i<MAX_ALIVE-1;i++){
if(!allEntities[i].isAlive){ if(!allEntities[i].isAlive){
@ -23,13 +41,14 @@ void addZombie(){
} }
} }
} }
}
} }
void moveZombies(){ void moveZombies(){
int i; int i;
for(i=1;i<MAX_ALIVE;i++){ for(i=1;i<MAX_ALIVE;i++){
if(allEntities[i].isAlive){ if(allEntities[i].isAlive){
int moveCheck = rand()%10000; int moveCheck = rand()%2000;
if(moveCheck==1){ if(moveCheck==1){
getNextPos(allEntities[i].curYpos,allEntities[i].curXpos,allEntities[0].curYpos,allEntities[0].curXpos); getNextPos(allEntities[i].curYpos,allEntities[i].curXpos,allEntities[0].curYpos,allEntities[0].curXpos);
allEntities[i].nextYpos = nextPos.y; allEntities[i].nextYpos = nextPos.y;

Loading…
Cancel
Save