2013-07-09 76 views
2

我開始創建我的第一個使用多個模塊(.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

您需要updateflip顯示:

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

此外,我建議你處理事件在主迴路或至少不會在init方法,prehaps您可以創建活動對象,然後調用一個方法總是在同一個對象中。

的順序應該是:

  1. 處理事件,更新遊戲狀態
  2. 乾淨的背景screen.fill()
  3. 繪製
  4. 更新顯示
  5. 使用時鐘保持fps的速率。
+0

謝謝你提醒我這些事情,我完全忘記了他們:D乾杯 –