Hintergrundanpassung

Hier werden alle anderen GUI-Toolkits sowie Spezial-Toolkits wie Spiele-Engines behandelt.
Antworten
Imperator
User
Beiträge: 275
Registriert: Montag 20. August 2007, 14:43
Kontaktdaten:

Hallo liebe Community,

ich habe jetzt beschlossen mein Problem, mit dem Level auf den Bildschirm bringen, ganz einfach dadurch zu umgehen, dass ich mir einen schönen Hintergrund als Bild male den einscane und schließlich ins Fenster lade. Aber wie kann ich das Bild nun an die Größe des Fensters per Code anpassen? Ist wahrscheinlich total simpel, aber ich komm einfach nicht drauf. Danke im Voraus.
fred.reichbier
User
Beiträge: 155
Registriert: Freitag 29. Dezember 2006, 18:27

Äh, dumme Frage: worum gehts denn?
Imperator
User
Beiträge: 275
Registriert: Montag 20. August 2007, 14:43
Kontaktdaten:

http://playit.ch/channel-onlinespiele.php?game=2556

Sowas in etwa soll es werden. Den Hintergrund male ich mir, scan ihn dann ein und lade das dann in ein Pygame-Fenster. Nun brauche ich eine Methode, um das Bild genau der Größe des Spielfensters anzupassen.
fred.reichbier
User
Beiträge: 155
Registriert: Freitag 29. Dezember 2006, 18:27

Hm, vielleicht ist diese Funktion was für dich. Ich vermute einfach mal, dass es um Pygame geht.

Gruß Fred
Imperator
User
Beiträge: 275
Registriert: Montag 20. August 2007, 14:43
Kontaktdaten:

Ich hab das jetzt mal so in meinen Code reingebracht:

Code: Alles auswählen

import pygame, os, sys
from pygame.locals import*
pygame.init()
landschaft = pygame.image.load('Gray.bmp')
karte = landschaft.get_rect()
pygame.transform.scale(landschaft, (800, 400), karte = None)#das isses
black = 0, 0, 0
size = width, height = 800, 400
screen = pygame.display.set_mode(size)
screen.fill(black)
screen.blit(landschaft, karte)
pygame.display.flip()
aber ich krieg die Fehlermeldung, dass in der klammer keine Argumente stehen dürften (Traceback (most recent call last):
File "C:\Python25\Porjekte\Game.py", line 6, in <module>
pygame.transform.scale(landschaft, (800, 400), karte = None)
TypeError: scale() takes no keyword arguments)

Bei dem Link stand die Funktion aber so dran (DestSurface hab ich einfach so interpretiert, dass damit das Rect gemeint ist):

Code: Alles auswählen

pygame.transform.rotate(Surface, angle): return Surface
Zuletzt geändert von Imperator am Dienstag 30. Oktober 2007, 11:35, insgesamt 1-mal geändert.
BlackJack

Da steht nicht es werden keine Argumente angenommen, sondern keine Keyword-Argumente. Und selbst wenn, gäbe es ja wohl in einer englischen API keines das `karte` heisst. :roll:

Wenn Du an der Stelle sowieso `None` übergeben willst, kannst Du es auch einfach weglassen.
Imperator
User
Beiträge: 275
Registriert: Montag 20. August 2007, 14:43
Kontaktdaten:

In Ordnung, hab ich gemacht. Jetzt startet das Programm zwar, aber die Größe des Bildes wird dadurch nicht beeinflusst.
BlackJack

Die Funktion gibt ein neues, skaliertes `Surface` zurück. *Das* müsstest Du anzeigen.
Imperator
User
Beiträge: 275
Registriert: Montag 20. August 2007, 14:43
Kontaktdaten:

Jetzt steh ich volmommen auf dem Schlauch. :shock: Das Image wird doch erst mit screen.blit(landschaft, karte) angezeigt. Und das kommt am ende. Also zeige ich das ursprüngliche Bild gar nicht an, sondern nur das skalierte.
BlackJack

Nein Du zeigst mit `landschaft` das ursprüngliche Bild an. Dem Skalierten gibst Du keinen Namen, das wird einfach sofort nach seiner Entstehung wieder verworfen. Das wird von der Funktion *zurückgegeben*, die ändert *nicht* das Bild was Du übergibst.
Imperator
User
Beiträge: 275
Registriert: Montag 20. August 2007, 14:43
Kontaktdaten:

Jetzt hab ichs kapiert. Und es funktioniert sogar! :D
Also Danke BlackJack und fred.reichbier!
Antworten