gpt4 book ai didi

python - 无法将 Sprite 绘制到屏幕

转载 作者:行者123 更新时间:2023-12-05 06:46:15 39 4
gpt4 key购买 nike

我开始创建我的第一个 pygame 游戏,它使用多个模块(.py 文件)更容易了解代码,所以我们开始吧。

主要.py

import pygame,sys
from Player import *
from groups import *
from constants import *
from Events import *

pygame.init()
screen = pygame.display.set_mode(size)
player = Player()
player.add_to_group()

while True:
player.draw(screen)
event = Event()

播放器.py

import pygame
from groups import *


class Player(pygame.sprite.Sprite):
def __init__(self):
pygame.sprite.Sprite.__init__(self)
self.image = pygame.Surface([30,30])
self.image.fill([255,0,0])
self.rect = self.image.get_rect()

def move_player(self):
key = pygame.key.get_pressed()
if key[pygame.K_DOWN]:
self.rect.y += 1
elif key[pygame.K_UP]:
self.rect.y -= 1
elif key[pygame.K_RIGHT]:
self.rect.x += 1
elif key[pygame.K_LEFT]:
self.rect.x -= 1

def add_to_group(self):
all_sprite_list.add(self)

def remove_from_group(self):
all_sprite_list.remove(self)

def draw(self,surface):
surface.blit(self.image,(0,0))

组.py

import pygame
all_sprite_list = pygame.sprite.Group()

常量.py

import pygame

size = width,heighth = 700,400

事件.py

import pygame,sys

class Event(object):
def __init__(self):
for event in pygame.event.get():
if event.type == pygame.QUIT:
sys.exit()

结果应该是左上角代表玩家的红色方 block 。但无论我这样做,我都不会收到任何错误,但它只会显示一个空白的黑色窗口。

我试图修复它好几次(比如使用 .draw 来绘制整个“all_sprite_list”)但没有任何效果。

最佳答案

您需要更新翻转显示:

while True:
player.draw(screen)
event = Event()
pygame.display.update()

我还建议您在主循环中处理事件,或者至少不要在 init 方法中处理事件,也许您可​​以创建 Events 对象并始终在同一个对象中调用方法。

顺序应该是:

  1. 处理事件以更新游戏状态
  2. 清理背景screen.fill()
  3. 画画
  4. 更新显示
  5. 使用时钟保持 fps 速率。

关于python - 无法将 Sprite 绘制到屏幕,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17551324/

39 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com