2017-02-05 8 views
0

私はゲームをしています。このゲームでは、ゲームウィンドウに表示するには黄色い矩形が必要ですが、黄色の長方形が表示されませんでした。私はPlayer()クラスの四角形を描いています。誰でも助けてくれますか?スプライトが私の画面に表示されない理由を理解できない

main.py

# IMPORTS 
import pygame 
from config import * 
from sprites import * 

# GAME 
class Game(): 
    def __init__(self): 
     # INIT PYGAME 
     pygame.init() 
     pygame.mixer.init() 

     pygame.display.set_caption(TITLE) 

     self.screen = pygame.display.set_mode((WIDTH, HEIGHT)) 
     self.clock = pygame.time.Clock() 
     self.running = True 

    # NEW GAME 
    def new(self): 
     self.allSprites = pygame.sprite.Group() 
     self.player = Player() 
     self.allSprites.add(self.player) 
     self.run() 

    # RUN GAME 
    def run(self): 
     self.playing = True 

     while self.playing: 
      self.clock.tick(FPS) 

      self.events() 
      self.update() 
      self.draw() 
      self.animate() 
      self.collision() 

    # DRAW 
    def draw(self): 
     self.screen.fill(WHITE) 

     pygame.display.update() 

    # ANIMATE 
    def animate(self): 
     pass 

    # DETECT COLLISION 
    def collision(self): 
     pass 

    # CHECK FOR EVENTS 
    def events(self): 
     for event in pygame.event.get(): 
      if event.type == pygame.QUIT: 
       if self.playing: 
        self.playing = False 

       self.running = False 

    # UPDATE GAME 
    def update(self): 
     self.allSprites.update() 

    # GAME OVER 
    def gameOver(self): 
     pass 

    # START SCREEN 
    def startScreen(self): 
     pass 

    # END SCREEN 
    def endScreen(self): 
     pass 

game = Game() 
game.startScreen() 

while game.running: 
    game.new() 
    game.gameOver() 

pygame.quit() 
quit() 

sprites.py

import pygame 
from config import * 

class Player(pygame.sprite.Sprite): 
    def __init__(self): 
     pygame.sprite.Sprite.__init__(self) 

     self.img = pygame.Surface((30, 40)) 
     self.img.fill(YELLOW) 
     self.rect = self.img.get_rect() 
     self.vx = 0; 
     self.vy = 0; 

     def update(self): 
      self.vx = 0 

      keys = pygame.key.get_pressed() 
      if keys[pygame.K_LEFT]: 
       self.vx -= 5 
      if keys[pygame.K_RIGHT]: 
       self.vx += 5 
      if keys[pygame.K_UP]: 
       self.vy -= 5 
      if keys[pygame.K_DOWN]: 
       self.vy += 5 

      self.rect.x += self.vx 
      self.rect.y += self.vy 

config.py

# IMPORTS 
import pygame 

# ENTIRE GAME VARIABLES 
TITLE = "Sky Jumper" 
WIDTH = 480 
HEIGHT = 600 
FPS = 60 

# COLORS 
WHITE = (255, 255, 255) 
BLACK = (0, 0, 0) 
YELLOW = (255, 255, 0) 
+0

'print()'を実行すると、コードのどの部分が実行されているのか、そしてあなたが持っているものがわかります。 – furas

+0

あなたは 'self.allSprites.draw()'や 'self.player.draw()'を持っていないので描画しません。 – furas

+0

BTW: 'self.allSprites.draw()'は、スプライトが 'self.rect'と' self.image'を持っていて、 'self.img' – furas

答えて

2

あなたは、すべてのプレーヤーを描画していません。だけ抽選ゲームのdrawメソッドで何が起こっので、この追加してみてくださいされています。それはのinit法の下にインデントているためまた

def draw(self): 
    self.screen.fill(WHITE) 
    self.allSprites.draw(self.screen) 
    pygame.display.update() 

は、ところで、プレイヤーのupdate()メソッドが実行されません。

関連する問題