Ejemplo n.º 1
0
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();
	
}
Ejemplo n.º 2
0
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();
	}
}