Jigsaw
Jigsaw

Reputation: 320

I have been working on a project in pygame but the player movement does not seem to work even tho no errors appear

I need to get the player movement ready,i have tried getting the code needed from other scripts but it does not seem to be working even tho no errors appear and the code seems to be allright after a couple checks.The library's i am using are sys, pygame and glob.I am following this guide but also altering it: https://pythonprogramming.altervista.org/platform-game-in-detail-part-1/?doing_wp_cron=1603309265.4902870655059814453125

Code:

from pygame.locals import *
import pygame
import sys
import glob
map1 = """wwwwwwwwwwwwwwwwwwwwwwwwwwwww
w                           w
w                           w
w                           w
w                           w
w                           
w                           d
w            p               
w                           
w                           w
w                           w
w                           w
w                           w
w                           w
w                           w
wwwwwwwwwwwwwwwwwwwwwwwwwwwww"""

#-----------------------------

door = pygame.image.load("C:/Users/cuerv/Downloads/Door.png")
door_rect = door.get_rect(center=(100, 250))

tile = pygame.image.load("C:/Users/cuerv/Downloads/Wall.png")
tile_rect = tile.get_rect(center=(100, 256))

player = pygame.image.load("C:/Users/cuerv/Downloads/Player.png")
player_rect = player.get_rect(center=(100, 256))



def init_display():
    global screen, tile, door, player
    screen = pygame.display.set_mode((480, 250))


def tiles(map1):
    global tile, door, player
    for y, line in enumerate(map1):
        #counts lines
        for x, c in enumerate(line):
            #counts caracters
            if c == "w":
                #caracter is w
                screen.blit(tile, (x * 16.18, y * 15))
            if c == "d":
                screen.blit(door, (x * 16.2, y * 15))
            if c == "p":
                screen.blit(player, (x * 16.2, y * 15))







playerx=200
playery=130




map1 = map1.splitlines()
pygame.init()
init_display()
clock = pygame.time.Clock()
while True:
    tiles(map1)
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            sys.exit()

            DISPLAYSURF.blit(sprite, (playerx, playery))

    if event.type == KEYDOWN:
        if (event.key == K_LEFT):
            playerx -= 5
        elif (event.key == K_RIGHT):
            playerx += 5
        elif (event.key == K_UP):
            playery -= 5
        elif (event.key == K_DOWN):
            playery += 5






    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            sys.exit()




    pygame.display.update()
    clock.tick(120)

Upvotes: 3

Views: 54

Answers (1)

isen
isen

Reputation: 73

It is just that you have to add an indentation block:

while True:
    tiles(map1)
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            sys.exit()

            DISPLAYSURF.blit(sprite, (playerx, playery))

        if event.type == KEYDOWN:
            if (event.key == K_LEFT):
                playerx -= 5
            elif (event.key == K_RIGHT):
                playerx += 5
            elif (event.key == K_UP):
                playery -= 5
            elif (event.key == K_DOWN):
                playery += 5

Upvotes: 1

Related Questions