2 mins read

Continuing from where we left off “Maze Adventure”

Continuing from where we left off, let’s add more functionality to our “Maze Adventure” game using Python and Pygame. We’ll focus on creating the maze layout, implementing player movement, and handling collisions with the maze walls.

Step 1: Creating the Maze Layout

First, we need to define the maze layout. This can be done by creating a 2D list that represents the maze. Each cell in the list can represent a wall, an open space, or the player’s starting position. For simplicity, we’ll use a 10×8 grid, where 1 represents a wall and 0 represents an open space.

class Maze:
    def __init__(self):
        self.M = 10
        self.N = 8
        self.maze = [
            [1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
            [1, 0, 0, 0, 0, 0, 0, 0, 0, 1],
            [1, 0, 1, 1, 1, 1, 1, 1, 0, 1],
            [1, 0, 1, 0, 0, 0, 0, 1, 0, 1],
            [1, 0, 1, 0, 1, 1, 0, 1, 0, 1],
            [1, 0, 0, 0, 1, 0, 0, 0, 0, 1],
            [1, 1, 1, 1, 1, 1, 1, 1, 1, 1]
        ]

Step 2: Implementing Player Movement

Next, we’ll implement the player’s movement. We’ll use the Player class we defined earlier and link it to keyboard events. This allows the player to move around the maze using the arrow keys.

class Player:
    x = 10
    y = 10
    speed = 1

    def moveRight(self):
        self.x = self.x + self.speed

    def moveLeft(self):
        self.x = self.x - self.speed

    def moveUp(self):
        self.y = self.y - self.speed

    def moveDown(self):
        self.y = self.y + self.speed

Step 3: Handling Keyboard Input

To make the player’s movement responsive to keyboard input, we’ll use Pygame’s event system to detect when arrow keys are pressed.

pygame.event.pump()
keys = pygame.key.get_pressed()

if keys[pygame.K_RIGHT]:
    player.moveRight()
if keys[pygame.K_LEFT]:
    player.moveLeft()
if keys[pygame.K_UP]:
    player.moveUp()
if keys[pygame.K_DOWN]:
    player.moveDown()

Step 4: Collision Detection

Finally, we need to add collision detection to prevent the player from moving through walls. This involves checking the player’s new position against the maze layout before updating it.

def check_collision(maze, player):
    if maze.maze[player.y][player.x] == 1:
        return True
    return False

# Inside the game loop, after updating player position
if not check_collision(maze, player):
    # Update player position
else:
    # Do not update player position

Conclusion

By following these steps, you’ve added the core functionality to your “Maze Adventure” game. You’ve created a maze layout, implemented player movement, and handled collisions with the maze walls. This sets the foundation for further enhancements, such as adding more complex mazes, introducing enemies, or adding collectible items.

Remember, game development is an iterative process. Keep experimenting with different features and challenges to make your game more engaging and fun. Happy coding!

Leave a Reply

Your email address will not be published. Required fields are marked *