#include #include #include #include #include void gameLoop(){ int lastPressed; while(1) { drawScore(); drawViewport(); 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); } }