void GameManager::update() { _player.update(_click, _mouseX, _mouseY, _keyState, &_food); int jump = _food.update(); _background.update(jump); checkPlayerCollision(); if(jump){ float x = 0; float y = 0; _food.getPos(&x, &y); addCircle(x, y, GC::FOOD_CIRCLE_SPEED, GC::FOOD_CIRCLE_START_SIZE, GC::FOOD_CIRCLE_MAX_SIZE); } updateCircles(); }
void gameLoop(){ while(1) { secsElapsed = (float)(clock() - startTime)/CLOCKS_PER_SEC; moveProjectiles(); updateViewportWin(); if((float)(clock() - timerStart)/CLOCKS_PER_SEC > 1){ tryRandomEvent(); timerStart=clock(); } if((int)secsElapsed%10){ zombieModifier++; } moveZombies(); updateViewportWin(); updateInfoWin(); 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].prevXpos=allEntities[0].curXpos; allEntities[0].prevYpos=allEntities[0].curYpos; 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].prevXpos=allEntities[0].curXpos; allEntities[0].prevYpos=allEntities[0].curYpos; 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].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].curXpos++; }; break; } case KEY_UP:{ if(allEntities[0].weapons[allEntities[0].curWeapon].curCapacity>0 || allEntities[0].curWeapon == 0){ fireWeapon(&allEntities[0].weapons[allEntities[0].curWeapon], "up"); } break; } case KEY_LEFT:{ if(allEntities[0].weapons[allEntities[0].curWeapon].curCapacity>0 || allEntities[0].curWeapon == 0){ fireWeapon(&allEntities[0].weapons[allEntities[0].curWeapon], "left"); } break; } case KEY_DOWN:{ if(allEntities[0].weapons[allEntities[0].curWeapon].curCapacity>0 || allEntities[0].curWeapon == 0){ fireWeapon(&allEntities[0].weapons[allEntities[0].curWeapon], "down"); } break; } case KEY_RIGHT:{ if(allEntities[0].weapons[allEntities[0].curWeapon].curCapacity>0 || allEntities[0].curWeapon == 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]); } break; } case '0':{ allEntities[0].curWeapon=0; break; } case '1':{ if(allEntities[0].weapons[1].isAlive){ allEntities[0].curWeapon=1; } break; } case '2':{ if(allEntities[0].weapons[2].isAlive){ allEntities[0].curWeapon=2; } break; } case '3':{ if(allEntities[0].weapons[3].isAlive){ allEntities[0].curWeapon=3; } break; } case '4':{ if(allEntities[0].weapons[4].isAlive){ allEntities[0].curWeapon=4; } break; } default: allEntities[0].prevYpos=allEntities[0].curYpos; allEntities[0].prevXpos=allEntities[0].curXpos; break; } if(allEntities[0].weapons[allEntities[0].curWeapon].curCapacity==0 && allEntities[0].weapons[allEntities[0].curWeapon].curMags==0){ allEntities[0].curWeapon=0; } updateViewportWin(); checkPlayerCollision(); updateViewportWin(); } }