Jun-05-2019, 08:00 PM
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
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)