pygame masuzeiger und tiled sprites?

Hier werden alle anderen GUI-Toolkits sowie Spezial-Toolkits wie Spiele-Engines behandelt.
Antworten
Mr.Wolna
User
Beiträge: 93
Registriert: Dienstag 6. Oktober 2009, 17:43

Hi,

folgender Code:

Code: Alles auswählen

import pygame
from pygame.locals import *

pygame.init()
screen = pygame.display.set_mode((800, 600), FULLSCREEN)
pygame.display.set_caption('PE')
#screen.fill((0, 0, 0))

background = pygame.image.load("wald.png")
fog = pygame.image.load("fog.png")
fog.set_alpha(50)

screen.blit(background, (0, 0))
screen.blit(fog, (0, 0))

x = 0
y = 0

pygame.display.flip()

def set_imagecursor(cur):
    pygame.mouse.set_visible(0)
    cursor = pygame.image.load(cur)
    screen.blit(cursor, pygame.mouse.get_pos())
    pygame.display.update()

while True:
    screen.blit(background, (0, 0))
    screen.blit(fog, (x, y))
    x +=10
    set_imagecursor("cursor.png")

    for event in pygame.event.get():
        #fuer maus gedruckt
        mouseinput = pygame.mouse.get_pressed()
        #fuer tastatur
        keyinput = pygame.key.get_pressed()
        if mouseinput[0] == 1:
            print "Left"
        if mouseinput[1] == 1:
            print "middle"
        if mouseinput[2] == 1:
            print "right"
        if keyinput[pygame.K_ESCAPE]:
            pygame.quit()

        if event.type == QUIT:
            pygame.quit()
            
        if keyinput[pygame.K_DOWN]:
            print "Down"
            x +=10
        if keyinput[pygame.K_UP]:
            print "Up"
            

Und folgende Probleme.

Da alles in die while Endlosschleife gepackt wurde, ist die Hausbewegung sehr langsam und bremst. Das Problem ist, wenn ich die Bilder NICHT in der while Schleife generiere. Dann wird das Bild, dass für meinen Hauscursor herhalten muss, mehrmals hintereinander generiert und verursacht dementsprechend hässliche "Spuren". Wie kann ich das unterbinden ohne alles in die while Schleife zu packen?

Zweitens, seht ihr ja das sich der Nebel, immer 10 Pixel nach rechts bewegt. Das Problem ist aber das das Bild bestimmte Maße hat, und früher oder später aus dem Bildschirm verschwindet.

Wie macht man das man statt eines Bildes eine kachelbare Textur (ca.256x256) nehmen kann, und diese dann auf den ganzen Bildschirm streckt (kenne das von Ruby (RGSS/RPG MAKER). Dann wäre das Problem beseitigt und ich hätte auch weniger Geschwindigkeitsprobleme, da das Bild/Sprite klein bleibt.

MfG,
Wolna
Antworten