我开始创建我的第一个使用多个模块(.py文件)的pygame游戏更容易 理解代码所以我们走了。
main.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()
Player.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))
groups.py
import pygame
all_sprite_list = pygame.sprite.Group()
constants.py
import pygame
size = width,heighth = 700,400
Events.py
import pygame,sys
class Event(object):
def __init__(self):
for event in pygame.event.get():
if event.type == pygame.QUIT:
sys.exit()
结果应该是左上角的红色方块,代表玩家。 但不管我做了什么,我都没有得到任何错误,但它只是显示一个空白的黑色窗口。
我尝试多次修复它(比如使用.draw绘制整个“all_sprite_list”) 但没有任何效果。
答案 0 :(得分:0)
您需要update
或flip
显示:
while True:
player.draw(screen)
event = Event()
pygame.display.update()
我还建议您在主循环中处理事件,或者至少不在init方法中处理事件,或许您可以创建Events对象并始终在同一对象中调用方法。
订单应该是:
screen.fill()