Seite 1 von 1

Hello World Skier

Verfasst: Mittwoch 10. November 2010, 13:33
von A-Python
Brauch Hilfe habe hello world und mache gerade denn skier. ich weis nicht wass falsch ist :K
Bitte um hilfe

Code: Alles auswählen

import pygame, sys, random

skier_bilder = ("skier_runter.png", "skier_rechts1.pgn", "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")
        self.rect = self.image.get_rect()
        self.rect.center = (320, 100)
        self.winkel = 0
    def wende(self, richtung) :
        self.winkel = self.winkel = -2
        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))
        self.rect.center = center
        geschwindigkeit = (self.wnkel, 6 - abs(self.winkel) * 2)
        return geschwindigkeit

    def bewege(self, geschwindigkeit) :
        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.ort = ort
        self.rect = self.image.get_rect()
        self.rect.center = ort
        self.typ = typ
        self.vorbei = False

    def scrolle(self, t_prt):
        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(screnn))
    screen.blit(skier.image, skier.rect)
    sreen.blit (punktezahl_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 hindenisse

pygame.init()
screen = pygame.display.set_mode ([640,640])
uhr = pygame.time.Clock()
skier = SkierKlasse()
geschwindigkeit = [0, 6]
karte_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 karte_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 hinderniss in hindernisse:
        hinderniss.scrolle(karten_position)
        getroffen = pygame.sprite.spritecollide(skier, hindernisse, False)
    if getroffen:
        if getroffen[0].typ == "baum" and not getroffen[0].vorbei:
            punkte = punkte -100
            skier.image = pygame.image.load("skier_crash.pnh")
            animire()
            pygame.time.deplay(1000)
            skier.image = pygame.image.load("skier_runter.png")
            skier.winkel = 0
            geschwindigkeit = [o, 6]
        elif getroffen[0].typ == "fahne" and not getroffen[0].vorbei:
                punkte += 10
                hindernisse.remove(getroffen[0])

    punktzahl_text = font.render("Punktzahl: " +str(punkte), 1, (0, 0, 0))
    animiere()

Re: Hello World Skier

Verfasst: Mittwoch 10. November 2010, 13:36
von nomnom
1. Falsches Unterforum.
2. Was meinst du mit »Hello World«? Eigentlich ist das das hier:

Code: Alles auswählen

print 'Hello, world!'
3. Es gibt extra Code-Blöcke. Ohne die kann man nicht die Einrückungen sehen.
4. Was läuft denn falsch?
Edit: Du hast geschrieben, du weißt nicht was falsch ist. Also woher weißt du, dass etwas falsch ist? :mrgreen:

Re: Hello World Skier

Verfasst: Mittwoch 10. November 2010, 13:38
von Xynon1
5. Kannst du dich bitte ansatzweise an die deutsche Rechtschreibung halten ?

Re: Hello World Skier

Verfasst: Mittwoch 10. November 2010, 14:32
von BlackJack
@A-Python: Es würde helfen wenn Du beschreibst wo das Problem liegt, und den Quelltext auf ein minimales, lauffähiges Beispiel kürzt, welches dieses Problem immer noch hat. Kaum jemand mag grössere Programme nach potentiellen Fehlern durchsuchen.

Zwei Sachen die mir sofort ins Auge gefallen sind: Du solltest nicht nur in Beiträgen auf die korrekte Schreibweise achten, sondern besonders bei Programmen. Menschliche Leser können Buchstabendreher problemlos kompensieren -- der Computer kann das nicht.

Das Zweite ist die Namensgebung bei Klassen: Bitte lass den Zusatz "Klasse" da heraus. Das ist überflüssig und total unüblich, weil diese Information schon in der Schreibweise ("MixedCase") steckt.

Re: Hello World Skier

Verfasst: Mittwoch 10. November 2010, 14:55
von nomnom

Code: Alles auswählen

[…]
        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)
[…]
Eine Einrückung um ein Leerzeichen ist nicht sonderlich toll. Du solltest mit 4 Leerzeichen einrücken. Immer.

Re: Hello World Skier

Verfasst: Donnerstag 11. November 2010, 19:22
von A-Python
sorry für die umstände.
Hello World ist ein buch das wo man python lernt. Und das proplem lag darin das der code bei der buchübersetzung fehler vorwies aber ich nicht weis wo der fehler lag. trotzdem danke für die hilfe. :D

Re: Hello World Skier

Verfasst: Donnerstag 11. November 2010, 22:08
von Xynon1
Mir ist gerade ein Massiver Fehler aufgefallen, den du gemacht hast.
sieh dir bitte deine _init_ Konstrucktoren an, die sind doch gar nicht gültig, die müssen mit 2*_, in Worten mit zwei Unterstrichen, geschrieben werden.

Re: Hello World Skier

Verfasst: Sonntag 23. Januar 2011, 01:20
von Friesentroll
Moin!

Wenn Du noch Fragen zu dem Beispiel aus dem Python-Buch "hello world" hast, lade doch die Version von der beiliegenden CD.
Diese ist im Gegensatz zur deutschen Buchausgabe in den meisten Fällen funktionsfähig an die deutsche Sprache angepaßt.
Das Beispiel mit den Skiern z.B. funktioniert wenn du es von der CD lädst.
Leider gilt das für das Beispiel "hangman" nicht, denn dort werden die Anfangsbuchstaben der Lösungswörter (so ein Zufall: Großschreibweise) nicht erkannt wenn Du einen kleinen Buchstaben eingibst.

Vielleicht hilft Dir die Antwort jetzt noch weiter, auch wenn deine Frage schon etwas zurückliegt...
Friesentroll

Re: Hello World Skier

Verfasst: Samstag 23. Juli 2011, 12:14
von Micky2010
HI A-Python,
guck dir mal das an

Code: Alles auswählen

....skier_rechts1.pgn....
Dabei müsste das heißen:

Code: Alles auswählen

....skier_rechts1.png...
LG Micky2010

Re: Hello World Skier

Verfasst: Samstag 6. August 2011, 21:07
von Neo_Junior
also wenn du den code verstehst, dann hol dir doch das listing von der CD!
das buch is echt spitze!!!
und ich meine mal screnn anstatt screen gelesen zu ham: schön langsam un enstspannt

Re: Hello World Skier

Verfasst: Freitag 12. August 2011, 10:23
von Neo_Junior
hey nochma wollt nur ma sagn: pygame machst du doch mit SPE und da müsstest du dir mit dem "Link" in der fehlermeldung immer anzeigen lassen können was nich stimmt :] besonders rechtschreibfehler

Re: Hello World Skier

Verfasst: Freitag 12. August 2011, 17:54
von /me
Neo_Junior hat geschrieben:hey nochma wollt nur ma sagn: pygame machst du doch mit SPE und da müsstest du dir mit dem "Link" in der fehlermeldung immer anzeigen lassen können was nich stimmt :] besonders rechtschreibfehler
Ich nehme an, dass intensive eigene Erfahrungen mit diesem Problem dich zu diesem Kommentar bewogen haben.

Re: Hello World Skier

Verfasst: Montag 15. August 2011, 18:23
von Neo_Junior
KLAR :D

Re: Hello World Skier

Verfasst: Sonntag 8. September 2019, 13:29
von Narutex
Könnten sie mir bitte die Bilder von den Skier senden? Wäre sehr nett! :)

Re: Hello World Skier

Verfasst: Sonntag 8. September 2019, 23:25
von __blackjack__
@Narutex: Die Beispielprogramme kann man von der offiziellen Homepage von dem Buch herunterladen: http://helloworldbookblog.com/downloads/