ich bin gerade dabei ein Spielfeld zu erstellen und ein Objekt einfach zu bewegen i. diesem Spielfeld. Alles soweit gut.
Nur möchte ich daß das Objekt sich nicht durchlaufend bewegt bei gedrückter Taste, sondern erst dann wieder einen bestimmten Schritt nach vorne macht, wen. die Taste nochmals gedrückt wird.
Die Spielfigur soll sich quasi jedesmal um 50 px in eine Richtung bewegen, aber nicht fortlaufend bei gedrückter Taste.
Hier mal der Code:
Code: Alles auswählen
import pygame
import sys
pygame.init()
#hintergrundbild laden
background = pygame.image.load("graphics/background.jpg")
#Grösse des Spielfeldes definieren
screen = pygame.display.set_mode([800,600])
clock = pygame.time.Clock()
#SPielname in der Statusleiste
pygame.display.set_caption("Frogger")
def draw():
screen.blit(background, (0,0))
pygame.draw.rect(screen, (0,0,0), (x,y,bright, wight))
pygame.display.update()
#Objekteigenschaften
x = 300
y = 550
speed = 20
bright = 40
wight = 40
leftWall = pygame.draw.rect(screen, (0,0,0), (0,0, 2, 600), 0)
rightWall = pygame.draw.rect(screen, (0,0,0), (799,0, 2, 600), 0)
go = True
while go:
for event in pygame.event.get():
if event.type == pygame.QUIT:
sys.exit()
playerRect = pygame.Rect(x,y,40,40)
pressed = pygame.key.get_pressed()
if pressed[pygame.K_UP]:
y -= speed
if pressed[pygame.K_RIGHT] and not playerRect.colliderect(rightWall):
x += speed
if pressed[pygame.K_DOWN]:
y += speed
if pressed[pygame.K_LEFT] and not playerRect.colliderect(leftWall):
x -= speed
draw()
clock.tick(60)
Ich habe es mit einer bool-Variable versucht, weis aber nicht ob der Ansatz richtig ist.
Code: Alles auswählen
....
wasPressed = True
....
if pressed[pygame.K_UP] and wasPressed:
y -= speed
wasPressed = False
Wäre super wenn jemand einen Tip hätte.
Vielen dank im voraus.