dies ist mein erster Post, als absoluter Python-Anfänger und gleich eine Frage.....
ich möchte mich an einem Programm versuchen, sagen wir mal blöde im Darkorbit-Style ich habe in der Mitte meines Bildschirms ein Raumschiff, das sich zum Mauszeiger hin drehen soll, bzw, der Hintergrund soll sich nachher so verschieben, das es aussieht, als würde das schiff darüberfliegen.....aber das ist noch in der Ferne.
ich bin eigentlich eher umsteiger von der Sprache Blitzmax zu Python....
mein Problem, und ja ich habe schon gegoogelt und irgendwie nicht das gefunden, wonach ich suche....
ich habe ein Spritesheet mit 10 frames in der Reihe und 6 in einer Spalte, sprich 60 frames....
ich lade den Hintergrund und die Sprites ein, platziere das oder die Sprites in der Mitte, bis hierhin soweit gut....
jetzt dreht sich das frame mit dem mauszeiger, zwar noch ncht so, wie es soll, aber erstmal Nebensache....
das Sprite ist trotz allem irgendwie nicht richtig zentriert, beim drehen "eiert" es herum, wie bekomm ich das weg ??
hier mal mein Test-Code.....
Code: Alles auswählen
import pygame
import math
# Initialisieren Sie Pygame und erstellen Sie ein Fenster
pygame.init()
screen = pygame.display.set_mode((800, 600))
fps = 60
bg_x = 0 #variable für den background
bg_y = 0 #variable für den background
background = pygame.image.load("c:\midimaster/spacebg3_green.jpg")
# Laden Sie das Spritesheet als Bild und extrahieren Sie das erste sprite
spritesheet = pygame.image.load("c:\midimaster/ship.png")
sprite_width = spritesheet.get_width() // 10
sprite_height = spritesheet.get_height() // 6
sprite = spritesheet.subsurface(pygame.Rect(0, 0, sprite_width, sprite_height))
clock = pygame.time.Clock()
def rotieren_zentrieren(x, y, bild, gradangabe):
# rotieren und in einem neuen "surface" speichern
rotiert = pygame.transform.rotate(spritesheet, angle)
# Bestimmen der neuen Abmessungen (nach Rotation ändern sich diese!)
groesse = rotiert.get_rect()
# Viereck zur Kontrolle zeichnen
def ship_rotate():
mouse_x, mouse_y = pygame.mouse.get_pos()
sprite_x = 400
sprite_y = 300
angle = math.degrees(math.atan2(mouse_y - sprite_y, mouse_x - sprite_x))
rotated_sprite = pygame.transform.rotate(sprite, angle)
screen.blit(rotated_sprite, (sprite_x - sprite_width // 2, sprite_y - sprite_height // 2))
running = True
while running:
# Überprüfen Sie, ob der Benutzer das Fenster geschlossen hat
for event in pygame.event.get():
if event.type == pygame.QUIT:
running = False
screen.fill((0, 0, 0))
# Aktualisieren Sie das Fenster
screen.blit(background, (bg_x, bg_y))
ship_rotate()
pygame.display.flip()
clock.tick(fps)
# Beenden Sie Pygame, wenn das Spiel beendet ist
pygame.quit()
mfg Peter