One of my first programming projects. I tried to learn C and use curses...it is quite embarrassing looking back at it now :D
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 

73 lines
1.9 KiB

#include <world.h>
#include <getPos.h>
#include <screen.h>
#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;
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;
}
}
}
}
}
void moveZombies(){
int i;
for(i=1;i<MAX_ALIVE;i++){
if(allEntities[i].isAlive){
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;
allEntities[i].nextXpos = nextPos.x;
struct Entity * hitEntity = (struct Entity *)collisionDetect(allEntities[i].nextYpos, allEntities[i].nextXpos);
if(hitEntity){
if(!strcmp(hitEntity->type,"zombie")){
allEntities[i].nextYpos = allEntities[i].curYpos;
allEntities[i].nextXpos = allEntities[i].curXpos;
}
}
if(allEntities[i].nextYpos < 1 || allEntities[i].nextYpos>viewportWinRows-2){
allEntities[i].nextYpos = allEntities[i].curYpos;
}
if(allEntities[i].nextXpos < 1 || allEntities[i].nextXpos>viewportWinCols-2){
allEntities[i].nextXpos = allEntities[i].curXpos;
}
}
}
}
}