2013-10-03 3 views
0

Мое изображение спрайта не отображается в окне pygame. Это, наверное, что-то действительно простое, но я не понимаю, почему он не показывает. Я довольно новичок в программировании, поэтому, наверное, поэтому я этого не понимаю. Это что-то я сделал неправильно в самом классе? Вот мой код:Изображение спрайта не отображается в окне pygame

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) Вы фактически не создаете объект 'Player'. (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) 
Смежные вопросы