From 2ae1f27204f0f3040ff3b258affd7025bce8cbe8 Mon Sep 17 00:00:00 2001 From: Luke Bratch Date: Fri, 26 Nov 2010 13:31:11 +0000 Subject: Implement player x/y-coordinate boundaries --- Level.cpp | 26 +++++++++++++++++++++++--- 1 file changed, 23 insertions(+), 3 deletions(-) (limited to 'Level.cpp') diff --git a/Level.cpp b/Level.cpp index f704c79..c70181a 100644 --- a/Level.cpp +++ b/Level.cpp @@ -39,12 +39,32 @@ void Level::changeLevel(int levelNo) { } void Level::move() { + int newX, newY; + // Apply gravity player.incYVel(GRAVITY); - // Player movements - player.setX(player.getX() + player.getXVel()); - player.setY(player.getY() + player.getYVel()); + // Player x-axis movement + newX = player.getX() + player.getXVel(); + // Don't let player go off either end of the screen + if (newX >= 0 && newX <= SCREEN_WIDTH - MARCUS_WIDTH) { + player.setX(newX); + } + + // Player y-axis movement + newY = player.getY() + player.getYVel(); + // Don't let player fall below bottom of screen + if (newY <= SCREEN_HEIGHT - MARCUS_HEIGHT) { + player.setY(newY); + } else { + // If player was going to fall off, fit snugly to edge + while (newY > SCREEN_HEIGHT - MARCUS_HEIGHT) { + newY--; + } + player.setY(newY); + // Reset velocity + player.setYVel(0); + } player.orient(); } -- cgit v1.2.3