2017-12-05 3 views
1

Ich versuche, ein Bild (transparentes Bild) Drehen auf den Tasten zu lassen, die ich drücken. I.E. Ich möchte den Kopf meines Spielers auf und ab drehen (er dreht von seinem Kopf), aber ich habe keine vernünftige Richtlinie, wie ich das programmieren soll. Wenn mir jemand helfen könnte, wäre ich sehr dankbar. Außerdem wollte ich, dass der Kopf sich nur dann sanft dreht, wenn ich die Tasten gedrückt halte. Code unten:Wie kann ich mein Bild mit Keys in Pygame drehen?

import pygame 

pygame.init() 

white = (255,255,255) 
BLACK = (0,0,0) 
red = (255,0,0) 


gameDisplay = pygame.display.set_mode((640,360)) 

background = pygame.image.load('background.jpg').convert() 

player = pygame.image.load('BigShagHoofdz.png') #this must be rotateable 

pygame.display.set_caption('Leslie is Lauw') 
clock = pygame.time.Clock() 


gameDisplay.blit(background, [0,0]) 
gameDisplay.blit(player, [-1,223]) 
pygame.display.update() 

FPS = 60 

direction = "Down" 

def head(): 
    if direction == "Down": 
     playerhead = player 
    if direction == "Up": 
     playerhead = pygame.transform.rotate(player, 60) 



def gameLoop(): 
    global direction 
    gameExit = False 


    while gameExit==False: 
     for event in pygame.event.get(): 
      if event.type == pygame.QUIT: 
      gameExit = True 

     for event in pygame.event.get(): 
      if event.type == pygame.QUIT: 
      gameExit = True 

      if event.key == pygame.KEYDOWN: 
       if event.key == pygame.K_UP: 
       direction = "Up" 
       elif event.key == pygame.K_DOWN: 
       direction = "Down" 

clock.tick(60) 
pygame.quit() 
quit() 

Es nur nach oben drehen sollte oder nach unten, wenn ich die Aufwärts- oder Abwärtstaste drücken, ist es vielleicht glatt gehen lassen, wenn es nach oben oder unten gehalten wird.

+0

Sie müssen 'blit()' 'innen while' in' gameloop() '' – furas

+0

innen Kopf() '' Sie global playerhead' oder 'Rückkehr playerhead' verwenden, weil Sie jetzt lokal erstellen Variablen. – furas

+0

Möchten Sie nur zwischen zwei Bildern wechseln, dem normalen und dem gedrehten? – skrx

Antwort

2

Wenn Sie nur zwischen einem normalen und einem gedrehten Bild wechseln möchten, können Sie die gedrehte Version vor der while-Schleife erstellen und wechseln Sie dann nur das Bild, wenn eine Taste gedrückt wird.

import pygame 

pygame.init() 

gameDisplay = pygame.display.set_mode((640, 360)) 
clock = pygame.time.Clock() 
# The normal image/pygame.Surface. 
player_image = pygame.Surface((30, 50), pygame.SRCALPHA) 
player_image.fill((0, 100, 200)) 
pygame.draw.circle(player_image, (0, 50, 100), (15, 20), 12) 
# The rotated image. 
player_rotated = pygame.transform.rotate(player_image, 60) 

FPS = 60 

def gameLoop(): 
    player = player_image 
    player_pos = [100, 223] 
    gameExit = False 

    while gameExit == False: 
     for event in pygame.event.get(): 
      if event.type == pygame.QUIT: 
       gameExit = True 
      elif event.type == pygame.KEYDOWN: 
       # Assign the current image to the `player` variable. 
       if event.key == pygame.K_UP: 
        player = player_image 
       elif event.key == pygame.K_DOWN: 
        player = player_rotated 

     gameDisplay.fill((30, 30, 30)) 
     gameDisplay.blit(player, player_pos) 

     pygame.display.flip() 
     clock.tick(60) 

gameLoop() 
pygame.quit() 
+0

Können Sie Ihren letzten Code und das Bild zur Frage hinzufügen? Und erklären Sie ein bisschen genauer, wie die Animation aussehen soll. – skrx