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.
 
 

97 lines
3.1 KiB

#include <world.h>
#include <collisionDetection.h>
#include <events.h>
#include <getPos.h>
#include <weaponsSystem.h>
void gameLoop(){
int lastPressed;
while(1) {
updateInfoWin();
updateViewportWin();
moveProjectiles();
moveZombies();
randomEvents();
doupdate();
int ch;
ch = getch();
switch(ch){
case 'w':
case 'W':{
struct CollisionEvent collisionEvent = collisionDetect(allEntities[0].curYpos-1,allEntities[0].curXpos);
if(!collisionEvent.collidedWithUnPassableChar && !collisionEvent.collidedWithBoundary){
allEntities[0].prevYpos=allEntities[0].curYpos;
allEntities[0].prevXpos=allEntities[0].curXpos;
allEntities[0].curYpos--;
};
break;
}
case 's':
case 'S':{
struct CollisionEvent collisionEvent = collisionDetect(allEntities[0].curYpos+1,allEntities[0].curXpos);
if(!collisionEvent.collidedWithUnPassableChar && !collisionEvent.collidedWithBoundary){
allEntities[0].prevYpos=allEntities[0].curYpos;
allEntities[0].prevXpos=allEntities[0].curXpos;
allEntities[0].curYpos++;
};
break;
}
case 'a':
case 'A':{
struct CollisionEvent collisionEvent = collisionDetect(allEntities[0].curYpos,allEntities[0].curXpos-1);
if(!collisionEvent.collidedWithUnPassableChar && !collisionEvent.collidedWithBoundary){
allEntities[0].prevYpos=allEntities[0].curYpos;
allEntities[0].prevXpos=allEntities[0].curXpos;
allEntities[0].prevXpos=allEntities[0].curXpos;
allEntities[0].curXpos--;
};
break;
}
case 'd':
case 'D':{
struct CollisionEvent collisionEvent = collisionDetect(allEntities[0].curYpos,allEntities[0].curXpos+1);
if(!collisionEvent.collidedWithUnPassableChar && !collisionEvent.collidedWithBoundary){
allEntities[0].prevYpos=allEntities[0].curYpos;
allEntities[0].prevXpos=allEntities[0].curXpos;
allEntities[0].prevXpos=allEntities[0].curXpos;
allEntities[0].curXpos++;
};
break;
}
case KEY_UP:{
if(allEntities[0].weapons[allEntities[0].curWeapon].curCapacity>0){
fireWeapon(&allEntities[0].weapons[allEntities[0].curWeapon], "up");
}
break;
}
case KEY_LEFT:{
if(allEntities[0].weapons[allEntities[0].curWeapon].curCapacity>0){
fireWeapon(&allEntities[0].weapons[allEntities[0].curWeapon], "left");
}
break;
}
case KEY_DOWN:{
if(allEntities[0].weapons[allEntities[0].curWeapon].curCapacity>0){
fireWeapon(&allEntities[0].weapons[allEntities[0].curWeapon], "down");
}
break;
}
case KEY_RIGHT:{
if(allEntities[0].weapons[allEntities[0].curWeapon].curCapacity>0){
fireWeapon(&allEntities[0].weapons[allEntities[0].curWeapon], "right");
}
break;
}
case 'r':
case 'R':{
if(allEntities[0].weapons[allEntities[0].curWeapon].curMags > 0 && allEntities[0].weapons[allEntities[0].curWeapon].curCapacity < allEntities[0].weapons[allEntities[0].curWeapon].maxCapacity ){
reload(&allEntities[0].weapons[allEntities[0].curWeapon]);
}
}
default:
if (ch != ERR) {lastPressed=ch;};
break;
}
checkPlayerCollision();
usleep(30000);
}
}