ich habe mich neulich mit Pygame befasst und bin dabei dem Tutorial von "KidsCanCode" auf YouTube (https://www.youtube.com/playlist?list=P ... m9NhsW0Urw) gefolgt.
An der Stelle, an der man einen Sprite über die Pfeiltasten steuerbar machen möchte, ist mir aufgefallen, dass sich das Fenster, in dem sich das Spiel öffnet, immer im Hintergrund befindet. Klicke ich es an, verschwindet es wieder hinter anderen Programmfenstern und selbst auf einem leeren Desktop wird mir das Fenster als inaktiv / nicht vordergründig angezeigt.
So kann ich natürlich nicht mit dem Spiel interagieren. Ich weiß zwar nicht, ob das ein Python-spezifisches Problem ist, oder ob der Fehler an einer ganz anderen Stelle liegt, aber hier ist trotzdem der Code:
Code: Alles auswählen
# Pygame template - skeleton for a new pygame project
import pygame
import random
WIDTH = 600
HEIGHT = 480
FPS = 30
# define colors
WHITE = (255, 255, 255)
BLACK = (0, 0, 0)
RED = (255, 0, 0)
GREEN = (0, 255, 0)
BLUE = (0, 0, 255)
class Player(pygame.sprite.Sprite):
# sprite for the Player
def __init__(self):
pygame.sprite.Sprite.__init__(self)
self.image = pygame.Surface((50, 50))
self.image.fill(GREEN)
self.rect = self.image.get_rect()
self.rect.centerx = WIDTH / 2
self.rect.bottom = HEIGHT - 10
self.speedx = 0
def update(self):
self.speedx = 0
keystate = pygame.key.get_pressed()
if keystate[pygame.K_LEFT]:
self.speedx = -5
if keystate[pygame.K_RIGHT]:
self.speedx = 5
self.rect.x += self.speedx
if self.rect.right > WIDTH:
self.rect.right = WIDTH
if self.rect.left < 0:
self.rect.right = 0
# initialize pygame and create window
pygame.init()
pygame.mixer.init()
screen = pygame.display.set_mode((WIDTH, HEIGHT))
pygame.display.set_caption("My Game")
clock = pygame.time.Clock()
all_sprites = pygame.sprite.Group()
player = Player()
all_sprites.add(player)
# Game loop
running = True
while running:
# keep loop runnig at the right speed
clock.tick(FPS)
# Process input (events)
for event in pygame.event.get():
# check for closing window
if event.type == pygame.QUIT:
running = False
# Update
all_sprites.update()
# Draw / render
screen.fill(BLACK)
all_sprites.draw(screen)
# *after* drawing everything, flip the display
pygame.display.flip()
pygame.quit()
Falls ihr Informationen zu meinem System braucht: macOS 10.12.4, Python 3.5.1, Anaconda 4.1.0
Vielen Dank
Gruß