Python Forum
[PyGame] Creating Map Obstacles
Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
[PyGame] Creating Map Obstacles
#9
(Jun-07-2019, 07:53 PM)Windspar Wrote: I over looked that.
speed = 3 movement = pygame.Vector2(0, 0) # If the UP key is pressed, move the player upwards if pressed[pygame.K_UP] and not pressed[pygame.K_DOWN]: if char.y != 3: movement.y -= speed # If the DOWN key is pressed, move the player downwards if pressed[pygame.K_DOWN] and not pressed[pygame.K_UP]: if char.y != 279: movement.y += speed # If the LEFT key is pressed, move the player to the left if pressed[pygame.K_LEFT] and not pressed[pygame.K_RIGHT]: if char.x != minimum_x and not unlocked: movement.x -= speed # If the RIGHT key is pressed, move the player to the right if pressed[pygame.K_RIGHT] and not pressed[pygame.K_LEFT]: if char.x != 693: movement.x += speed if movement.x != 0 or movement.y != 0: moved = char.move(movement.x, movement.y) if moved.collidelist(fences) == -1: char = moved
or
speed = 3 movement = pygame.Vector2(0, 0) # If the UP key is pressed, move the player upwards if pressed[pygame.K_UP] and not pressed[pygame.K_DOWN]: movement.y -= speed # If the DOWN key is pressed, move the player downwards if pressed[pygame.K_DOWN] and not pressed[pygame.K_UP]: movement.y += speed # If the LEFT key is pressed, move the player to the left if pressed[pygame.K_LEFT] and not pressed[pygame.K_RIGHT]: movement.x -= speed # If the RIGHT key is pressed, move the player to the right if pressed[pygame.K_RIGHT] and not pressed[pygame.K_LEFT]: movement.x += speed if movement.x != 0 or movement.y != 0: # Deflate. Where 3 pixels away from edge rect = screen.get_rect().inflate(-6, -6) moved = char.move(movement.x, movement.y) if moved.collidelist(fences) == -1 and rect.contains(moved): char = moved

It still doesn't seem to work for me for some reason.

# 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)

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

# Barrier
minimum_x = 342

# Initializes the window's title, width, and height
screen = pygame.display.set_mode((720, 320))
pygame.display.set_caption("New Game")
# Loads the background image
farm_image = pygame.image.load("farm_sprite.png").convert()
# Fence Rectangles
fences = (
    pygame.Rect(455, 65, 20, 85),
    pygame.Rect(390, 65, 85, 20),
    pygame.Rect(390, 0, 20, 85),
    pygame.Rect(395, 0, 240, 20),
    pygame.Rect(615, 0, 20, 150),
    pygame.Rect(580, 130, 40, 20),
    pygame.Rect(455, 130, 80, 20)
)

# Draw the player object onto the screen
char = pygame.Rect(507, 60, 25, 40)

# 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:

    moved = None

    # 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

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

    speed = 3
    movement = pygame.Vector2(0, 0)
    # If the UP key is pressed, move the player upwards
    if pressed[pygame.K_UP] and not pressed[pygame.K_DOWN]:
        movement.y -= speed

    # If the DOWN key is pressed, move the player downwards
    if pressed[pygame.K_DOWN] and not pressed[pygame.K_UP]:
        movement.y += speed

    # If the LEFT key is pressed, move the player to the left
    if pressed[pygame.K_LEFT] and not pressed[pygame.K_RIGHT]:
        movement.x -= speed

    # If the RIGHT key is pressed, move the player to the right
    if pressed[pygame.K_RIGHT] and not pressed[pygame.K_LEFT]:
        movement.x += speed

    if movement.x != 0 or movement.y != 0:
        # Deflate. Where 3 pixels away from edge
        rect = screen.get_rect().inflate(-6, -6)
        moved = char.move(movement.x, movement.y)
        if moved.collidelist(fences) == -1 and rect.contains(moved):
            char = moved

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

    # Puts the fences on the screen
    for fence in fences:
        pygame.draw.rect(screen, pygame.Color('red'), fence)

    pygame.draw.rect(screen, pygame.Color('red'), char)

    # 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