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.
 
 

107 lines
2.6 KiB

#include <world.h>
#include <screen.h>
#include <collisionDetection.h>
#include <events.h>
#include <getPos.h>
#include <weaponsSystem.h>
void gameLoop(){
int lastPressed;
while(1) {
drawScore();
drawViewport();
moveProjectiles();
moveZombies();
randomEvents();
doupdate();
int ch;
ch = getch();
switch(ch){
case 'w':
case 'W':{
if(allEntities[0].curYpos > 1){
allEntities[0].nextYpos--;
if(allEntities[0].nextYpos < 0){
allEntities[0].nextYpos = 0;
}
}
break;
}
case 's':
case 'S':{
if(allEntities[0].curYpos < viewportWinRows - 2){
allEntities[0].nextYpos++;
if(allEntities[0].nextYpos > viewportWinRows-1){
allEntities[0].nextYpos = viewportWinRows-1;
}
}
break;
}
case 'a':
case 'A':{
if(allEntities[0].curXpos > 1){
allEntities[0].nextXpos--;
if(allEntities[0].nextXpos < 0){
allEntities[0].nextXpos = 0;
}
}
break;
}
case 'd':
case 'D':{
if(allEntities[0].curXpos < scrCols-2){
allEntities[0].nextXpos++;
if(allEntities[0].nextXpos > viewportWinCols-1){
allEntities[0].nextXpos = viewportWinCols-1;
}
}
break;
}
case 'z':
case 'Z':{
struct OpenPos openPos = getOpenPos();
addZombie(openPos.y,openPos.x);
break;
}
case '=':{
struct OpenPos openPos = getOpenPos();
addItem("Pistol Magazine",openPos.y,openPos.x);
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);
}
}