2017-12-06 19 views
0

나는 "플레이어"가 회전하도록 노력했다. 그것은 회전 할 수 있어야하는 머리의 그림입니다. 그러나 헤드가 표시되지 않는 오류가 있습니다 (플레이어가 표시되지 않음). 이미지 (bigshaghoofdz.png)는 회전 할 수 있어야합니다. K_UP과 K_DOWN을 눌러 회전 할 수 있습니다. 360도 회전시킬 수 있습니다. 결국 그것은 눈에서 레이저를 쏘아 야합니다.회전하고있는 스파이가 보이지 않는다

import pygame 
import random 
import math 
GRAD = math.pi/180 

class Config(object): 
    fullscreen = False 
    width = 640 
    height = 360 
    fps = 60 

class Player(pygame.sprite.Sprite): 
    maxrotate = 360 
    down = (pygame.K_DOWN) 
    up = (pygame.K_UP) 
    number = 1 

    def __init__(self, startpos = (-1,223), angle=0): 
     self.number = Player.number 
     Player.number += 1 
     Player.book[self.number] = self 
     pygame.sprite.Sprite.__init__(self, self.groups) 
     self.pos = [startpos[-1], startpos[223]] 
     self.down = Player.down[self.number] 
     self.up = Player.up[self.number] 

     image = pygame.image.load('BigShagHoofdz.png') 

    def update(self, seconds): 

     pressedkeys = pygame.key.get_pressed()   

     self.turndirection = 0 
     if pressedkeys[self.down]: 
      self.turndirection -= 1 
     if pressedkeys[self.up]: 
      self.turndirection += 1 

#end classes 
#defs 

def radians_to_degrees(radians): 
    return (radians/math.pi) * 180.0 

def degrees_to_radians(degrees): 
    return degrees * (math.pi/180.0) 

def main(): 
    #game 
    pygame.init() 
    screen=pygame.display.set_mode((Config.width,Config.height)) 
    background = pygame.image.load('background.jpg') 

    background = background.convert() 
    screen.blit(background, (0,0)) 
    clock = pygame.time.Clock() 
    FPS = Config.fps 
    playtime = 0 

    Playergroup = pygame.sprite.Group() 
    allgroup = pygame.sprite.LayeredUpdates() 

    Player.groups = Playergroup, allgroup 

    mainloop = True 
    while mainloop: 
     millisecond = clock.tick(Config.fps) 

     for event in pygame.event.get(): 
      if event.type == pygame.QUIT: 
       mainloop = False 
      elif event.type == pygame.KEYDOWN: 
       if event.key == pygame.K_ESCAPE: 
        mailoop = False 

     pygame.display.set_caption("say hi") 
     allgroup.clear(screen, background) 
     allgroup.draw(screen) 
     pygame.display.flip() 
    return 0 

if __name__ == '__main__': 
    main() 

답변

0

당신은 키를 누르면됩니다 경우, 다음, 원본 이미지를 변환 self.image 속성에 할당하고 이전하는 구형의 중심으로 새로운 RECT를 얻을 각도를 증가 할 수 있습니다.

import pygame 


class Config(object): 
    fullscreen = False 
    width = 640 
    height = 360 
    fps = 60 

class Player(pygame.sprite.Sprite): 
    maxrotate = 360 
    down = (pygame.K_DOWN) 
    up = (pygame.K_UP) 

    def __init__(self, startpos=(100,223), angle=0): 
     super().__init__() 
     self.pos = list(startpos) 
     self.image = pygame.Surface((70, 70), pygame.SRCALPHA) 
     pygame.draw.circle(self.image, pygame.Color('dodgerblue'), (35, 35), 35) 
     pygame.draw.circle(self.image, pygame.Color('black'), (35, 15), 8) 
     self.orig_image = self.image 
     self.rect = self.image.get_rect(center=startpos) 
     self.angle = angle 

    def update(self, seconds): 
     pressedkeys = pygame.key.get_pressed() 
     if pressedkeys[self.down]: 
      self.angle -= 2 
      self.rotate_image() 
     if pressedkeys[self.up]: 
      self.angle += 2 
      self.rotate_image() 

    def rotate_image(self): 
     self.image = pygame.transform.rotate(self.orig_image, self.angle) 
     self.rect = self.image.get_rect(center=self.rect.center) 


def main(): 
    pygame.init() 
    screen=pygame.display.set_mode((Config.width,Config.height)) 
    clock = pygame.time.Clock() 
    FPS = Config.fps 
    allgroup = pygame.sprite.LayeredUpdates() 
    player = Player() 
    allgroup.add(player) 

    mainloop = True 
    while mainloop: 
     millisecond = clock.tick(Config.fps) 

     for event in pygame.event.get(): 
      if event.type == pygame.QUIT: 
       mainloop = False 
      elif event.type == pygame.KEYDOWN: 
       if event.key == pygame.K_ESCAPE: 
        mailoop = False 

     allgroup.update(millisecond) 

     screen.fill((50, 50, 70)) 
     allgroup.draw(screen) 
     pygame.display.flip() 


if __name__ == '__main__': 
    main() 
    pygame.quit() 
+0

고맙습니다. 내 이미지를 self.image에 추가했습니다. – Ectrizz