[英]Pygame Sprite won't Move but there's no errors?
我需要幫助。 我無法移動槳精靈,空閑時也沒有出現錯誤。 圖像出現在窗口上,但不會向上或向下移動。 我正在嘗試制作一個簡單的乒乓球游戲,任何提示或技巧將不勝感激。 這是代碼家伙。
import pygame
import random
from Colors3 import *
WIDTH = 700
HEIGHT = 650
FPS = 30
pygame.init()
window = pygame.display.set_mode((WIDTH, HEIGHT))
clock = pygame.time.Clock()
class PaddleB(pygame.sprite.Sprite):
def __init__(self):
pygame.sprite.Sprite.__init__(self)
self.image = pygame.image.load("BluePaddle.png")
self.image = pygame.transform.scale(self.image,(20,80))
self.rect = self.image.get_rect()
self.rect.x = 20
self.rect.y = HEIGHT / 2
self.keys = pygame.key.get_pressed()
self.vel = 5
self.speedy = 0
def draw(self):
key = pygame.key.get_pressed()
self.speedy = 0
if key[pygame.K_UP]:
self.speedy = -5
if key[pygame.K_DOWN]:
self.speedy = 5
self.rect.y += self.speedy
def Drawn():
all_sprites = pygame.sprite.Group()
paddle1 = PaddleB()
all_sprites.add(paddle1)
all_sprites.update()
all_sprites.draw(window)
pygame.display.update()
# Game loop
running = True
while running:
clock.tick(FPS)
for event in pygame.event.get():
if event.type == pygame.QUIT:
running = False
Drawn()
pygame.quit()
我稍微重新排列了您的代碼並更改了事件處理,以便↑和↓將移動槳。 添加了一些注釋以使代碼更清晰,並使初始槳位置成為窗口的中心。
我已經更新了游戲循環,以遵循本書中描述的事件處理→游戲狀態更新→顯示更新模式。
import pygame
import random
# from Colors3 import *
WIDTH = 700
HEIGHT = 650
FPS = 30
pygame.init()
window = pygame.display.set_mode((WIDTH, HEIGHT))
clock = pygame.time.Clock()
class PaddleB(pygame.sprite.Sprite):
def __init__(self):
pygame.sprite.Sprite.__init__(self)
# self.image = pygame.image.load("BluePaddle.png")
# self.image = pygame.transform.scale(self.image,(20,80))
# create an image instead of loading one.
self.image = pygame.Surface((20, 80))
self.image.fill(pygame.color.Color("blue"))
self.rect = self.image.get_rect()
# start paddle in the middle of the window, on the left
self.rect.x = 20
self.rect.y = HEIGHT / 2 - self.rect.height / 2
self.vel = 5
self.speedy = 0
def update(self):
# this will move the sprite based on its speed
self.rect.y += self.speedy
# TODO: Check limits here to prevent off screen movement.
# Setup game
all_sprites = pygame.sprite.Group()
paddle1 = PaddleB()
all_sprites.add(paddle1)
pygame.display.set_caption("Half Pong!")
# Game loop
running = True
while running:
for event in pygame.event.get():
if event.type == pygame.QUIT:
running = False
elif event.type == pygame.KEYDOWN:
if event.key == pygame.K_UP:
paddle1.speedy -= paddle1.vel
elif event.key == pygame.K_DOWN:
paddle1.speedy += paddle1.vel
elif event.type == pygame.KEYUP:
if event.key == pygame.K_UP:
paddle1.speedy += paddle1.vel
elif event.key == pygame.K_DOWN:
paddle1.speedy -= paddle1.vel
# update game elements
all_sprites.update()
# draw surface
window.fill(pygame.color.Color("grey"))
all_sprites.draw(window)
# show surface
pygame.display.update()
clock.tick(FPS)
pygame.quit()
如果您需要任何其他說明,請告訴我。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.