Du solltest Dir die Liste mit den Dichten noch einmal ansehen, speziell die ersten beiden.
Code: Alles auswählen
Dichten = {"Buche":7.86,"Eisen":0.7,"Gold":19.3,"Wasser":1,"Beton":1.8,
"Glas":2.6}
Gruss Helmut
Code: Alles auswählen
Dichten = {"Buche":7.86,"Eisen":0.7,"Gold":19.3,"Wasser":1,"Beton":1.8,
"Glas":2.6}
Code: Alles auswählen
import pygame, sys, random
skier_bilder = ["skier_runter.png", "skier_rechts1.png",
"skier_rechts2.png", "skier_links2.png"
"skier_links1.png"]
class SkierKlasse(pygame.sprite.Sprite): #
def _init_(self):
pygame.sprite.Sprite._init_(self)
self.image = pygame.image.load("skier_runter.png") #erstellt die Skier
self.rect = self.image.get_rect()
self.rect.center = [320, 100]
self.winkel = 0 #
def wende(self, richtung): #
self.winkel = slf.winkel + richtung
if self.winkel < -2: self.winkel = -2
if self.winkel > 2: self.winkel = 2
center = self.rect.center
self.image = pygame.image.load(skier_bilder[self.winkel]) #wendet die
self.rect = self.image.get_rect() #Skier
self.rect.center = center
geschwindigkeit = [self.winkel, 6 - abs(self.winkel) * 2]
return geschwindigkeit #
def bewege(self, geschwindigkeit): #bewegt die
self.rect.centerx = self.rect.centerx + geschwindigkeit[0] #Skier nach
if self.rect.centerx < 20: self.rect.centerx = 20 #rechts o.
if self.rect.centerx > 620: self.rect.centerx = 620 #links
class HindernisKlasse(pygame.sprite.Sprite): #
def _init_(self, bild_datei, ort, typ):
pygame.sprite.Sprite._init_(self)
self.bild_datei = blid_datei
self.image = pygame.image.load(bild_datei) #erstellt Bäume
self.ort = ort #und Fahnen
self.rect = self.image.get_rect()
self.typ = typ
self.vorbei = False #
def scrolle(self, t_ptr): #scrollt die Landschaft
self.rect.centery = self.ort[1] - t_ptr #nach oben
def erstelle_karte(start, ende): #
hindernisse = pygame.sprite.Group()
gates = pygame.sprite.Group()
orte = []
for i in range(10):
zeile = random.randint(start, ende) #Hindernisse
spalte = random.randint(0, 9) #willkürlich verteilen
ort = [spalte * 64 + 20, zeile * 64 + 20]
if not (ort in orte): #erstellt
orte.append(ort) #ein Fenster
typ = random.choice(["baum", "fahne"]) #mit Bäumen
if typ == "baum": img = "skier_baum.png" #und Fahnen
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)) #zeichnet das Bild neu,
screen.blit(skier.image, skier.rect) #wenn es sich bewegt
screen.blit(punktzahl_text, [10, 10])
pygame.display.flip() #
def aktualisiereHindernisGruppe(karte0, karte1): #
hindernisse = pygame.sprite.Group()
for ob in karte0: hindernisse.add(ob) #geht zum nächsten
for ob in karte1: hindernisse.add(ob) #Landschaftsbild
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) #macht alles bereit
font = pygame.font.Font(None, 50) #
while True: #startet Hauptschleife
uhr.tick(30) #aktualisiert die Grafik 30* pro Sekunde
for event in pygame.event.get(): #
if event.type == pygame.Quit: sys.exit()
if event.type == pygame.KEYDOWN: #achtet auf
if event.key == pygame.K_LEFT: #Tastendrücke
geschwindigkeit = skier.wende(1) #o. Fenster schließen
elif event.key == pygame.K_RIGHT: #Befehl
geschwindigkeit = skier.wende(1) #
skier.bewege(geschwindigkeit) #bewegt die Skier
karten_position += geschwindigkeit[1] #scrollt die Landschaft
if karten_position >=640 and aktive_karte == 0: #
aktive_karte = 1
karte0 = erstelle_karte(20, 29)
hindernisse = updateHindernisgroup(karte0, karte1) #wechselt
if karten_position >=1280 and aktive_karte == 1: #von einer
aktive_karte = 0 #Landschaft
for ob in karte0: #zur nächsten
ob.ort[1] - 1280
karten_position = karten_position - 1280
karte1 = erstelle_karte(10, 19)
hindernisse = aktualisierenHindernisGruppe(karte0, karte1) #
for hindernis in hindernisse:
hindernis.scrolle(karten_position)
getroffen = pygame.sprite.spritecollide(skier, hindernisse, False) #
if getroffen:
if getroffen[0].type == "baum" and not getroffen[0].vorbei: #prüft,
punkte = punkte - 100 #ob Bäume
skier.image = pygame.image.load("skier_crash.png") #umgefahren
skier.winkel = 0 #oder Fahnen
geschwindigkeit = [0, 6] #gesammelt
getroffen[0].vorbei = True #werden
elif getroffen[0].type0= "fahne" and not getroffen[0].vorei:
punkte += 10
hindernisse.remove(getroffen[0]) #
punktzahl_text = font.render("Punktzahl: " +str(punkte), 1, (0, 0, 0)
animiere() # ^ zeigt Punktzahl an