Das deutsche Python-Forum

10 Jahre Diskussionen rund um die Programmiersprache Python
Aktuelle Zeit: Samstag 2. August 2014, 05:29

Alle Zeiten sind UTC + 1 Stunde




Ein neues Thema erstellen Auf das Thema antworten  [ 2 Beiträge ] 
Autor Nachricht
 Betreff des Beitrags: Pygame - Image rotieren
BeitragVerfasst: Freitag 13. August 2010, 00:57 
User

Registriert: Mittwoch 14. Juli 2010, 02:55
Beiträge: 4
Moin.

Momentan bastele ich an einem 2D-Spiel realisiert mit Pygame, in welchem man vor allem ein kleines Raumschiff (Image) mit den Pfeiltasten steuern kann. Das Raumschiff wird durch ein Array mit vier Einträgen beschrieben: [heading, speed, pos_x, pos_y]
Bisher war es kein Problem die Bewegung des Bildes zu realisieren:
.
pos_x = pos_x + scipy.sin(heading) * speed * elapsed_time
pos_y = pos_y + scipy.cos(heading) * speed * elapsed_time
.
Highlighting by GeSHi

Damit das gut aussieht, muss sich natürlich auch das Bild des Raumschiffes entsprechend drehen. Dazu habe ich bereits hier im Forum gefunden, dass man nicht das gedrehte Bild nochmal drehen darf, sondern immer wieder das Ursprungsbild dreht. Jedoch dreht pygame mit der eingebauten rotate Funktion das Bild um die obere linke Ecke, während ich eine Drehung um die Bildmitte brauche. Gibt es dazu bereits eine Lösung mittels Pygame? Ansonsten dachte ich daran das Bild als Matrix aufzufassen und schließlich mit der Givens-Rotation zu drehen.


Nach oben
 Profil  
 
 Betreff des Beitrags: Re: Pygame - Image rotieren
BeitragVerfasst: Freitag 13. August 2010, 07:31 
User

Registriert: Montag 2. August 2010, 08:09
Beiträge: 7
Versuchs mal mit "pygame.transform.rotate" in verbindung mit "Rect.clamp"
Hier mal ein Beispiel:

  1. import pygame
  2. from pygame.locals import *
  3.  
  4. pygame.init()
  5.  
  6. res = (800,600)
  7. screen = pygame.display.set_mode(res)
  8.  
  9. image = pygame.image.load("test.png").convert()
  10. image_rect_org = image.get_rect()
  11.  
  12. images = []
  13. framenr = 0
  14.  
  15. for degrees in xrange(0,360,6):    
  16.     images.append(pygame.transform.rotate(image,degrees))
  17.  
  18. running = True
  19. timer = pygame.time.Clock()
  20.  
  21. while running:
  22.     timer.tick(40)
  23.    
  24.     for event in pygame.event.get():
  25.         if event.type == QUIT:
  26.             running = False
  27.         elif event.type == KEYDOWN:
  28.             if event.key == K_ESCAPE:
  29.                 running = False
  30.  
  31.     screen.fill((0,0,0))
  32.  
  33.     image_rect = images[framenr].get_rect().clamp(image_rect_org)
  34.     screen.blit(images[framenr],image_rect)
  35.    
  36.     if (framenr + 1) <= 59:
  37.         framenr += 1
  38.     else:
  39.         framenr = 0
  40.    
  41.     pygame.display.flip()
  42.  
  43. pygame.quit()
  44.  
Highlighting by GeSHi


Nach oben
 Profil  
 
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 2 Beiträge ] 

Alle Zeiten sind UTC + 1 Stunde


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder


Du darfst keine neuen Themen in diesem Forum erstellen.
Du darfst keine Antworten zu Themen in diesem Forum erstellen.
Du darfst deine Beiträge in diesem Forum nicht ändern.
Du darfst deine Beiträge in diesem Forum nicht löschen.

Suche nach:
Gehe zu:  
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Deutsche Übersetzung durch phpBB.de