Hab ne frage zu Tileset.
Also ich hab jetzt ein Grundprogramm (Jump and Run). Wollte die Figur jetzt animieren aber weiss nicht genua wie ich beide Elemente zusammenführen kann. Kann mir jemand helfen?
Hier die Codes:
Grundprogramm
Code: Alles auswählen
import pygame
import random
breite=800
hoehe=800
screen = pygame.display.set_mode((breite,hoehe))
clock = pygame.time.Clock()
boden1=pygame.image.load("Boden1.png")
Hintergrund=pygame.image.load("Hintergrund.png")
Hintergrund2=pygame.image.load("hintergrund2.png")
Mariorechts=pygame.image.load("mario.gif")
Mariolinks=pygame.image.load("mario2links.png")
Mario=Mariorechts
MarioX=100
MarioY=602
Hintergrundx=0
Bodenx=0
JumpNichtmoeglich=True
Jump=False
Bewegung=False
rechts=False
links=False
running=True
JumpAktiv=False
Fallen=False
while running:
hintergrund=screen.blit(Hintergrund,(Hintergrundx,0))
hintergrund2=screen.blit(Hintergrund2,(900,0))
boden=screen.blit(boden1,(Bodenx,hoehe-100))
mario=screen.blit(Mario,(MarioX,MarioY))
pygame.display.flip()
for event in pygame.event.get():
if event.type == pygame.QUIT:
running = False
elif event.type == pygame.KEYDOWN:
if event.key==pygame.K_RIGHT:
if JumpAktiv == False:
Bewegung=True
rechts=True
elif event.key==pygame.K_LEFT:
if JumpAktiv == False:
Bewegung=True
links=True
elif event.key==pygame.K_SPACE:
if MarioY==602:
Jump=True
JumpAktiv=True
elif event.type == pygame.KEYUP:
if event.key==pygame.K_RIGHT:
Bewegung=False
rechts=False
elif event.key==pygame.K_LEFT:
Bewegung=False
rechts=False
if Jump:
MarioY-=20
if MarioY < 300:
Jump=False
if Bewegung:
if rechts:
MarioX+=20
Mario=Mariorechts
elif links:
if MarioX != 0:
MarioX+=-20
Mario=Mariolinks
if MarioY < 300: #Fallen
Fallen=True
else:
JumpAktiv=False
if Fallen:
MarioY+=20
if MarioY>600:
Fallen=False
So nun hier meine Tileset Klasse, bei der ich nicht genau weiss wie ich sie einbauen kann:
Code: Alles auswählen
def loadImage(filename, colorkey = None):
image = pygame.image.load(filename)
if image.get_alpha() == None:
image = image.convert()
else:
image = image.convert_alpha()
if colorkey is not None:
if colorkey is -1:
colorkey = image.get_at((0,0))
image.set_colorkey(colorkey, RLEACCEL)
return image
class Tileset(object):
def __init__(self, image ,colorkey ,tileWidth, tileHeight):
self.__image = loadImage(image,colorkey)
self.__tileWidth = tileWidth
self.__tileHeight = tileHeight
self.__tileTypes = dict()
def getImage(self):
return self.__image
def setImage(self, image, colorkey):
self.__image = loadImage(image,colorkey )
def getTileWidth(self):
return self.__tileWidth
def getTileHeight(self):
return self.__tileHeight
def getTileSize(self):
return (self.__tileWidth, self.__tileHeight)
def addTile(self, Mario, tileWidth,tileHeight ):
self.__tileTypes[Mario] = TileType(Mario, 0, 0, self.__tileWidth, self.__tileHeight)
def getTile(self, Mario):
try:
return self.__tileTypes[Mario]
except KeyError:
return None
Hab mir noch überlegt anstatt diesem ganen Quellcode mit animierten .gifs zu arbeiten, aber anscheined unterstützt python diese nicht, da immer nur der erste Frame angezeigt wird. Ist mir da ein Fehler unterlaufen oder gehts das wirklich nicht?