示例#1
0
        void buttonDown(Gosu::Button btn) 
        { 
		  if (onStartScreen)
		  {
			  onStartScreen = false;
			  level = 1;
			  player.resetPlayer();
			  loadLevel(level, true);
		  }
		  else if (player.isDead())
		  {
			  onStartScreen = true;
			  level = 0;
			  round = 1;
			  loadLevel(level, true);
		  }
		  else
		  {			
			  if (btn == Gosu::kbEscape)
				close();
			  else if ((btn == Gosu::kbReturn || btn == Gosu::kbEnter) && !transitioning)
			  {
				  if (paused)
					paused = false;
				  else
					paused = true;
			  }

			  if (!paused && !shot.active() && !player.isOnFire())
			  {
				  if (btn == Gosu::kbSpace && player.isStandingStill())
				  {
					  player.shoot(shot, enemies, environment);
				  }
				  else if (btn == Gosu::kbW)
				  {
					  player.moveGunUp();
					  player.moveGunUp();
				  }
				  else if (btn == Gosu::kbS)
				  {
					  player.moveGunDown();
					  player.moveGunDown();
				  }
				  else if (btn == Gosu::kbA)
				  {
					  player.moveGunUp();
					  player.moveGunUp();
					  player.moveGunDown();
					  player.turnLeft();
				  }
				  else if (btn == Gosu::kbD)
				  {
					  player.moveGunUp();
					  player.moveGunUp();
					  player.moveGunDown();
					  player.turnRight();
				  }
			  }
		  }
        }
示例#2
0
        void update() {
        
          if (transitioning) {
            if (difftime(time(NULL), startTime) >= 5) {
              transitioning = false;
              player.setAscending(true);
			  player.setStandingStill();
              round += 1;
              level = 1;
              loadLevel(1, true);
            }
          }
          else if (!onStartScreen && !paused) {
            player.songUpdate();
            std::list<Enemy>::iterator cur;

            // Check if the player is on a set of stairs
            if (playerOnStairs(player, up) && player.isAscending()) {
              if (level < 3)
			  {
                level += 1;
				player.setScore(player.getScore() + 5);
			  }
              loadLevel(level, true);
            }

            if (playerOnStairs(player, down) && (player.isAscending() == false)) {
              if (level > 1)
			  {
                level -= 1;
				player.setScore(player.getScore() + 5);
			  }
              else {
                time(&startTime);
                transitioning = true;
                level = -1;
              }
              
              loadLevel(level, false);
            }


            // Check for collisions
            player.checkForEnemyCollisions(enemies);
            player.checkForItemCollisions(items);
            
            if (!shot.active() && !player.isOnFire())
            {
              // Move the player
              if (input().down(Gosu::kbUp) || input().down(Gosu::gpUp))
              {
                if (canMoveDirection(player.x(), player.y(), environment, UP))
                player.moveUp();
              }
              else if (input().down(Gosu::kbDown) || input().down(Gosu::gpDown))
              {
                if (canMoveDirection(player.x(), player.y(), environment, DOWN))
                player.moveDown();
              }
              else if (input().down(Gosu::kbLeft) || input().down(Gosu::gpLeft))
              {
                if (canMoveDirection(player.x(), player.y(), environment, LEFT) && player.getCurrentWalkCycleDirection() == LEFT)
                player.moveLeft();
                else
                player.turnLeft();
              }
              else if (input().down(Gosu::kbRight) || input().down(Gosu::gpRight))
              {
                if (canMoveDirection(player.x(), player.y(), environment, RIGHT) && player.getCurrentWalkCycleDirection() == RIGHT)
                player.moveRight();
                else
                player.turnRight();
              }
            }

            // Move the player
            player.move();
            
            // Move the enemy
            cur = enemies.begin();
            while (cur != enemies.end())
            {
              cur->move(environment);
              ++cur;
            }
          }
        }