簡體   English   中英

Pygame Sprite 不會移動但沒有錯誤?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM