Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import pygame
- import sys
- import random
- skier_bilder = ["skier_runter.png", "skier_rechts.png",
- "skier_rechts2.png", "skier_links2.png",
- "skier_links.png"]
- class SkierKlasse(pygame.sprite.Sprite):
- def __init__(self):
- pygame.sprite.Sprite.__init__(self)
- self.image = pygame.image.load("skier_runter.png")
- self.rect = self.image.get_rect()
- self.rect.center = [320, 100]
- self.winkel = 0
- def wende(self, richtung):
- self.winkel = self.winkel + richtung
- if self.winkel < -2:
- self.winkel = -2
- if self.winkel > 2:
- self.winkel = 2
- center = self.recht.center
- self.image =pygame.image.load(skier_bilder[self.winkel])
- self.rect = self.image.get_rect()
- self.rect.center = center
- geschwindigkeit = [self.winkel, 6 - abs(self.winkel)*2]
- return geschwindigkeit
- def bewege(self, geschwindigeit):
- self.rect.centerx = self.rect.centerx + geschwindigkeit[0]
- if self.rect.centerx < 20:
- self.rect.centerx = 20
- if self.rect.centerx > 620:
- self.rect.centerx = 620
- class HindernisKlasse(pygame.sprite.Sprite):
- def __init__(self, bild_datei, ort, typ):
- pygame.sprite.Sprite.__init__(self)
- self.bild_datei = bild_datei
- self.image = pygame.image.load(bild_datei)
- self.ort = ort
- self.rect = self.image.get_rect()
- self.rect.center = ort
- self.typ = typ
- self.vorbei = False
- def scrolle(self, t_ptr):
- self.rect.centery = self.ort[1] - t_ptr
- def erstelle_karte(start, ende):
- hindernisse = pygame.sprite.Group()
- gates = pygame.sprite.Group()
- orte = [ ]
- for i in range(10):
- zeile = random.randint(start, ende)
- spalte = random.randint(0, 9)
- ort = [spalte* 64 + 20, zeile * 64 +20]
- if not (ort in orte):
- orte.append(ort)
- typ = random.choice(["baum", "fahne"])
- if typ == "baum":
- img= "skier_baum.png"
- elif typ == "fahne":
- img = "skier_fahne.png"
- hindernis = HindernisKlasse(img, ort, typ)
- hindernisse.add(hindernis)
- return hindernisse
- def animiere():
- screen.fill([255, 255, 255])
- pygame.display.update(hindernisse.draw(screen))
- screen.blit(skier.image, skier.rect)
- screen.blit(punktzahl_text, [10, 10])
- pygame.display.flip()
- def aktualisiereHindernisGruppe(karte0, karte1):
- hindernisse = pygame.sprite.Group()
- for ob in karte0:
- hindernisse.add(ob)
- for ob in karte1:
- hindernisse.add(ob)
- return hindernisse
- pygame.init()
- screen = pygame.display.set_mode([640, 640])
- uhr = pygame.time.Clock()
- skier = SkierKlasse()
- geschwindigkeit = [0, 6]
- karten_position = 0
- punkte = 0
- karte0 = erstelle_karte(20, 29)
- karte1 = erstelle_karte(10, 19)
- aktive_karte = 0
- hindernisse = aktualisiereHindernisGruppe(karte0, karte1)
- font = pygame.font.Font(None, 50)
- while True:
- uhr.tick(30)
- for event in pygame.event.get():
- if event.type == pygame.QUIT:
- sys.exit()
- if event.type == pygame.KEYDOWN:
- if event.key == pygame.K_LEFT:
- geschwindigkeit = skier_wende(-1)
- elif event.key == pygame.K_RIGHT:
- geschwindigkeit = skier.wende(1)
- skier.bewege(geschwindigkeit)
- karten_position += geschwindigkeit[1]
- if karten_position >=640 and aktive_karte == 0:
- aktive_karte = 1
- karte0 = erstelle_karte(20, 29)
- hindernisse = aktualisiereHindernisGruppe(karte0, karte1)
- if karten_position >= 1280 and aktive_karte==1:
- aktive_karte = 0
- for ob in karte0:
- ob.ort[1] = ob.ort[1] - 1280
- karten_position = karten_position - 1280
- karte1 = erstelle_karte(10,19)
- hindernisse = aktualisiereHindernisGruppe(karte0, karte1)
- for hindernis in hindernisse:
- hindernis.scrolle(karten_position)
- getroffen = pygame.sprite.spritecollide(skier, hindernisse, False)
- if getroffen[0].typ == "baum" and not getroffen[0].vorbei:
- punkte = punkte -100
- skier.ímage = pygame.image.load("skier_crash.png")
- animiere()
- pygame.time.delay(1000)
- skier.image = pygame.image.load("skier_runter.png")
- skier.winkel = 0
- geschwindigkeit = [0, 6]
- getroffen[0].vorbei = True
- elif getroffen[0].typ == "fahne" and not getoffen[0].vorbei:
- punkte += 10
- hindernisse.remove(getroffen[0])
- punktzahl_text = font.render("Punktzahl: " +str(punkte), 1, (0,0,0))
- animiere()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement