Pygame: Grafik zieht "Streifen" nach

Hier werden alle anderen GUI-Toolkits sowie Spezial-Toolkits wie Spiele-Engines behandelt.
Antworten
neovegeto
User
Beiträge: 2
Registriert: Mittwoch 10. August 2016, 08:02

Hallo liebe Community,

ich beschäftige mich seit kurzem mit Python und habe in diesem Zusammenhang ein paar Bücher durchgearbeitet. Darunter auch "Python CrashCours". In diesem Buch gibt es als Übungsbeispel einen kleinen Shooter an dem ich ab und an mal werkle.
Ich versucht gearde ein paar "Objekte" von Links nach Rechts durch das Bild fliegen zu lassen.
Nach einiger Recheche habe ich dazu auch einen guten Code gefunden mit dem ich arbeiten konnte.

Code: Alles auswählen

import pygame, sys
from pygame.locals import *

pygame.init()

clock = pygame.time.Clock()

screen = pygame.display.set_mode((1280, 720),0,32)


b1 = "images/round.png"

back = pygame.image.load(b1).convert()
back2 = pygame.image.load(b1).convert()
#back = pygame.transform.scale(back, (22, 16 ))
x = 1280
screenWidth = x

while True:
    for event in pygame.event.get():
        if event.type == QUIT:
            pygame.quit()
            sys.exit()

    screen.blit(back, (x,0))
    screen.blit(back2,(screenWidth+x, 0))

    x = x - 1

    if x < 0: #screenWidth:
        x = 1280

    msElapsed = clock.tick(60)
    pygame.display.flip()
Der Code funktioniert auch soweit ganz gut.
Ich habe allerdings ein Problem mit den Grafik. Diese verhält sich seltsam. Siehe Screenshots.
Ich habe leider keine Erklärung oder Lösung für dieses Problem finden könnten. Vielleicht auch weil ich nicht weis wie sich das Phänomen nennt.
Unter Begriffen wie "Pygame image problem" oder ähnliche Kombinationen konnte ich diese Art von Problem leider nicht finden.

Grafik, Wolke, mit paint.net verkleinert zieht Streifen nach
Grafik, Gelb normal
Grafik, Gelb, mit Pygame verkleinert, zieht streifen nach

Vielleicht ist dem ein oder anderen schon so etwas begegnet und jemand hat einen Tipp.

Python: 3.44 mit entsprechendem Pygame, auf Windows 7

Liebe Grüße
NEO
Sirius3
User
Beiträge: 17703
Registriert: Sonntag 21. Oktober 2012, 17:20

@neovegeto: Du löschst innerhalb Deiner Schleife den Bildschirm nie. Das heißt, Du malst viele Wolken leicht verschoben übereinander, von den darunterliegenden Wolken bleibt dann halt nur die rechte Pixelspalte sichtbar, was Du dann als Streifen interpretierst.
neovegeto
User
Beiträge: 2
Registriert: Mittwoch 10. August 2016, 08:02

Danke für den Hinweis.
Dieser Befehl ist mit in den Beispielen noch nie untergekommen. :shock:

Code: Alles auswählen

while True:
[b][color=#FF0000]    screen.fill( (0,0,0) )[/color][/b]
    for event in pygame.event.get():
        if event.type == QUIT:
            pygame.quit()
            sys.exit()

    screen.blit(back, (x,0))
    screen.blit(back2,(screenWidth+x, 0))
    
    x = x - 1
    if x < 0: #screenWidth:
        x = 1280

    msElapsed = clock.tick(60)
    pygame.display.flip()
Änderung vorgenommen und es geht :)
Danke Sirius3

LG
NEO
Antworten