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. 51
      zombies.c

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

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

@ -20,12 +20,6 @@ void initializeWorld() {
getmaxyx(viewportWin,viewportWinRows,viewportWinCols);
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].curYpos=(rand()%(viewportWinRows-2))+1;
allEntities[0].curXpos=(rand()%(viewportWinCols-2))+1;
@ -34,6 +28,11 @@ void initializeWorld() {
allEntities[0].weapons[0]=pistol;
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
nZombies:
all:
gcc -o nZombies *.c $(CFLAGS)
clean:
@rm *.o nZombies
@rm nZombies

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

@ -4,24 +4,43 @@
void addZombie(){
if(getOpenPos()){
int i;
for(i=0;i<MAX_ALIVE-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();
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;
for(i=0;i<MAX_ALIVE-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;
}
}
}
}
}
@ -29,7 +48,7 @@ void moveZombies(){
int i;
for(i=1;i<MAX_ALIVE;i++){
if(allEntities[i].isAlive){
int moveCheck = rand()%10000;
int moveCheck = rand()%2000;
if(moveCheck==1){
getNextPos(allEntities[i].curYpos,allEntities[i].curXpos,allEntities[0].curYpos,allEntities[0].curXpos);
allEntities[i].nextYpos = nextPos.y;

Loading…
Cancel
Save