Reputation: 320
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
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