Seite 1 von 1

Hintergrundanpassung

Verfasst: Montag 29. Oktober 2007, 18:16
von Imperator
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.

Verfasst: Montag 29. Oktober 2007, 18:53
von fred.reichbier
Äh, dumme Frage: worum gehts denn?

Verfasst: Montag 29. Oktober 2007, 19:24
von Imperator
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.

Verfasst: Montag 29. Oktober 2007, 20:04
von fred.reichbier
Hm, vielleicht ist diese Funktion was für dich. Ich vermute einfach mal, dass es um Pygame geht.

Gruß Fred

Verfasst: Dienstag 30. Oktober 2007, 10:10
von Imperator
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

Verfasst: Dienstag 30. Oktober 2007, 11:30
von 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.

Verfasst: Dienstag 30. Oktober 2007, 11:32
von Imperator
In Ordnung, hab ich gemacht. Jetzt startet das Programm zwar, aber die Größe des Bildes wird dadurch nicht beeinflusst.

Verfasst: Dienstag 30. Oktober 2007, 11:43
von BlackJack
Die Funktion gibt ein neues, skaliertes `Surface` zurück. *Das* müsstest Du anzeigen.

Verfasst: Dienstag 30. Oktober 2007, 12:34
von Imperator
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.

Verfasst: Dienstag 30. Oktober 2007, 12:43
von 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.

Verfasst: Dienstag 30. Oktober 2007, 12:51
von Imperator
Jetzt hab ichs kapiert. Und es funktioniert sogar! :D
Also Danke BlackJack und fred.reichbier!