【问题标题】:Pygame Class Player not moving when I press key当我按键时 Pygame 类播放器不动
【发布时间】:2021-04-07 15:27:46
【问题描述】:

我创建了一个播放器类并实例化了它,但当我尝试移动它时它不起作用。 我不明白出了什么问题。 我以为问题出在函数的顺序上,但不是吗。

代码如下:

import pygame
from variabile import *

pygame.init()
screen = pygame.display.set_mode((1000,1000))

def ecranAlb():
    WHITE = (255,255,255)
    screen.fill(WHITE)

class Player():
    def __init__(self,x,y):
        self.x = x
        self.y = y
    
    def display(self):
        rect = pygame.Rect(self.x,self.y,100,100)
        pygame.draw.rect(screen,(255,255,0),rect)

    def move(self):
        keys = pygame.key.get_pressed()
        if keys[pygame.K_UP]:
            self.x = self.x + 2




running = True

while running:
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            running = False
    a = Player(100,100)
    
    ecranAlb()
    a.move()
    a.display()
    pygame.display.flip()

【问题讨论】:

    标签: python pygame


    【解决方案1】:

    您必须在应用程序循环之前创建Player 类的实例对象。当您在循环中执行此操作时,会在每一帧中生成一个位于初始位置的新对象:

    a = Player(100,100)       # <--- INSERET
    
    running = True
    while running:
        for event in pygame.event.get():
            if event.type == pygame.QUIT:
                running = False
        
        # a = Player(100,100)   <--- DELETE
        
        ecranAlb()
        a.move()
        a.display()
        pygame.display.flip()
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-11-04
      • 1970-01-01
      • 1970-01-01
      • 2020-05-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多