Python Forum
[PyGame] Creating Map Obstacles
Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
[PyGame] Creating Map Obstacles
#1
I saved the image without paying for it, however, I don't intend to use it for anything but learning how to use PyGame. I am a beginner.

When the code is executed, the rectangle object controlled by the player can't go through the fence, however, when the fence is against the top or bottom of the rectangle object, it can't move left or right, and when the fence is against the left or right of the rectangle object, it can't move up or down. How Do I fix this?

Sorry if the code isn't very organized or clear, and thank you in advance!

Map sprite found here: https://www.scirra.com/store/2d-game-gra...t-pack-184

# Allows the usage of the PyGame library
import pygame

# Initializes PyGame
pygame.init()

# RGB Colors
red = (255, 0, 0)
green = (0, 255, 0)
blue = (0, 0, 255)

# Coordinates of the rectangle (player) object
x = 507
y = 60

# Bad Coordinates (Fence)
# bad_coordinates = bad_x, bad_y = range(447, 528), 150

# Directions
up = False
down = False
left = False
right = False

# Height and width of the window
height = 320
width = 720

# Barrier
minimum_x = 342

# Initializes the window's title, width, and height
screen = pygame.display.set_mode((width, height))
pygame.display.set_caption("New Game")
# Loads the background image
farm_image = pygame.image.load("farm_sprite.png").convert()

# Keeps the while loop running
done = False

# Boolean to identify whether the player has unlocked the currently locked area
unlocked = False

# Creates a clock object to keep track of time
clock = pygame.time.Clock()

# Keeps the program running
while not done:

    # Allows the user to exit by pressing the X button without throwing an error
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            done = True

    # Fence Rectangles
    fence = [
        pygame.draw.rect(screen, red, pygame.Rect(455, 65, 20, 85)),
        pygame.draw.rect(screen, red, pygame.Rect(390, 65, 85, 20)),
        pygame.draw.rect(screen, red, pygame.Rect(390, 0, 20, 85)),
        pygame.draw.rect(screen, red, pygame.Rect(395, 0, 240, 20)),
        pygame.draw.rect(screen, red, pygame.Rect(615, 0, 20, 150)),
        pygame.draw.rect(screen, red, pygame.Rect(580, 130, 40, 20)),
        pygame.draw.rect(screen, red, pygame.Rect(455, 130, 80, 20))
    ]

    # Assigns a list of the possible pressed keys to a variable
    pressed = pygame.key.get_pressed()

    # If the UP key is pressed, move the player upwards
    if pressed[pygame.K_UP]:
        if y != 3 and (char.collidelist(fence)) == -1 or down is True:
            up = True
            down = False
            y -= 3

    # If the DOWN key is pressed, move the player downwards
    if pressed[pygame.K_DOWN]:
        if y != 279 and (char.collidelist(fence)) == -1 or up is True:
            down = True
            up = False
            y += 3

    # If the LEFT key is pressed, move the player to the left
    if pressed[pygame.K_LEFT]:
        if x != minimum_x and not unlocked and (char.collidelist(fence)) == -1 or right is True:
            left = True
            right = False
            x -= 3

        # If the area is unlocked, allow the player to move in the area, as well as create a new barrier
        """
        elif unlocked and (char.collidelist(fence)) == -1 or right is True:
            if x != 3:
                x -= 3
        """

    # If the RIGHT key is pressed, move the player to the right
    if pressed[pygame.K_RIGHT]:
        if x != 693 and (char.collidelist(fence)) == -1 or left is True:
            right = True
            left = False
            x += 3

    # Place the background image on the window
    screen.blit(farm_image, [0, 0])

    # Draw the player object onto the screen
    char = pygame.draw.rect(screen, red, pygame.Rect(x, y, 25, 40))
    
    # Update the full Surface to the screen
    pygame.display.flip()

    # Run the program at 60 frames per second
    clock.tick(60)
Reply


Messages In This Thread
Creating Map Obstacles - by cameron121901 - Jun-05-2019, 08:00 PM
RE: Creating Map Obstacles - by metulburr - Jun-05-2019, 08:40 PM
RE: Creating Map Obstacles - by cameron121901 - Jun-06-2019, 06:09 AM
RE: Creating Map Obstacles - by Windspar - Jun-06-2019, 11:06 AM
RE: Creating Map Obstacles - by cameron121901 - Jun-06-2019, 07:42 PM
RE: Creating Map Obstacles - by Windspar - Jun-06-2019, 08:45 PM
RE: Creating Map Obstacles - by cameron121901 - Jun-07-2019, 06:08 PM
RE: Creating Map Obstacles - by Windspar - Jun-07-2019, 07:53 PM
RE: Creating Map Obstacles - by cameron121901 - Jun-10-2019, 03:56 PM
RE: Creating Map Obstacles - by Windspar - Jun-10-2019, 05:43 PM

Forum Jump:

User Panel Messages

Announcements
Announcement #1 8/1/2020
Announcement #2 8/2/2020
Announcement #3 8/6/2020