2013-10-03 3 views
0

파이 게임 창에 스프라이트 이미지가 표시되지 않습니다. 아마 정말 간단 할 것 같지만, 왜 보이지 않는지 나는 이해하지 못합니다. 나는 프로그래밍에 익숙하지 않기 때문에 아마 이것을 이해할 수 없을 것이다. 그것은 내가 수업 자체에서 잘못한 것입니까? 여기 내 코드는 다음과 같습니다.파이 게임 창에 스프라이트 이미지가 표시되지 않습니다.

import pygame, sys 
from pygame.locals import * 

windowwidth = 600 
windowheight = 600 
WALLWIDTH = 30 
WALLHEIGHT = 30 
PLAYERWIDTH = 20 
PLAYERHEIGHT = 20 

BLACK = (0, 0, 0) 
WHITE = (255, 255, 255) 
RED = (255, 0, 0) 
LIMEGREEN = (50, 205, 50) 

class Player(pygame.sprite.Sprite): 

    def __init__(self, x, y): 
     pygame.sprite.Sprite.__init__(self) 

     self.image = pygame.image.load('Green circle png.png') 
     self.rect = self.image.get_rect() 
     self.rect.x = x 
     self.rect.y = y 

    def changespeed(self, x, y): 
     self.change_x = x 
     self.change_y = y 

    def update_pos(self, x, y): 
     old_x_pos = self.rect.x 
     new_x_pos = old_x_pos + self.change_x 
     self.rect.x = new_x_pos 

     old_y_pos = self.rect.y 
     new_y_pos = old_y_pos + self.change_y 
     self.rect.x = new_y_pos 

def main(): 

    pygame.init() 

    thescreen = pygame.display.set_mode((windowwidth, windowheight)) 
    pygame.display.set_caption('Maze Game') 
    thescreen.fill((BLACK)) 

    mainclock = pygame.time.Clock() 

    running = True 
    while running == True: 
     for event in pygame.event.get(): 
      if event.type == QUIT: 
       running = False 
      if event.type == KEYDOWN: 
       if (event.key == K_UP or event.key == K_w): 
        Player.changespeed = (-3, 0) 
       elif (event.key == K_DOWN or event.key == K_s): 
        Player.changespeed = (3, 0) 
       elif (event.key == K_LEFT or event.key == K_a): 
        Player.changespeed = (0, -3) 
       elif (event.key == K_RIGHT or event.key == K_d): 
        Player.changespeed = (0, 3) 
      if event.type == KEYUP: 
       if (event.key == K_UP or event.key == K_w): 
        Player.changespeed = (0, 0) 
       elif (event.key == K_DOWN or event.key == K_s): 
        Player.changespeed = (0, 0) 
       elif (event.key == K_LEFT or event.key == K_a): 
        Player.changespeed = (0, 0) 
       elif (event.key == K_RIGHT or event.key == K_d): 
        Player.changespeed = (0, 0) 


     mainclock.tick(60) 
     pygame.display.update() 
    pygame.quit() 

if __name__ == '__main__': 
    main() 
+0

(i) 실제로 '플레이어'개체를 만들지 마십시오. (ii) 그랬더라도 플레이어를 그리는 코드가 없습니다! –

+0

고마워! :) 내가 잘못 갔는지 궁금해! – MafiaCure

답변

1

플레이어를 화면에 그려야합니다. 그리기 위해 코드를 호출하십시오 (렌더링 업데이트 그룹에서 가장 쉽게 수행 할 수 있지만 단순히 블리 트할 수도 있습니다). 아마도 업데이트 함수를 호출하기를 원하지만, 필자는이를 예제에 포함시키지 않을 것이다. 다음은 할 수있는 일입니다.

players = pygame.sprite.RenderUpdates() 
players.add(Player(200,200)) 
def mainloop(): 
    while running == True: 
     pygame.display.update(players.draw(thescreen)) 
     for event in pygame.event.get(): 
      if event.type == QUIT: 
       running = False 
      if event.type == KEYDOWN: 
       if (event.key == K_UP or event.key == K_w): 
        Player.changespeed = (-3, 0) 
       elif (event.key == K_DOWN or event.key == K_s): 
        Player.changespeed = (3, 0) 
       elif (event.key == K_LEFT or event.key == K_a): 
        Player.changespeed = (0, -3) 
       elif (event.key == K_RIGHT or event.key == K_d): 
        Player.changespeed = (0, 3) 
      if event.type == KEYUP: 
       if (event.key == K_UP or event.key == K_w): 
        Player.changespeed = (0, 0) 
       elif (event.key == K_DOWN or event.key == K_s): 
        Player.changespeed = (0, 0) 
       elif (event.key == K_LEFT or event.key == K_a): 
        Player.changespeed = (0, 0) 
       elif (event.key == K_RIGHT or event.key == K_d): 
        Player.changespeed = (0, 0) 
관련 문제