Hello World Skier

Hier werden alle anderen GUI-Toolkits sowie Spezial-Toolkits wie Spiele-Engines behandelt.
Antworten
A-Python
User
Beiträge: 2
Registriert: Mittwoch 10. November 2010, 12:29

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()
Zuletzt geändert von Anonymous am Mittwoch 10. November 2010, 14:26, insgesamt 1-mal geändert.
Grund: Quelltext in Python-Code-Tags gesetzt und ins passende Forum verschoben.
nomnom
User
Beiträge: 487
Registriert: Mittwoch 19. Mai 2010, 16:25

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:
Xynon1
User
Beiträge: 1267
Registriert: Mittwoch 15. September 2010, 14:22

5. Kannst du dich bitte ansatzweise an die deutsche Rechtschreibung halten ?
Traue keinem Computer, den du nicht aus dem Fenster werfen kannst.
Xynon auf GitHub
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.
nomnom
User
Beiträge: 487
Registriert: Mittwoch 19. Mai 2010, 16:25

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.
A-Python
User
Beiträge: 2
Registriert: Mittwoch 10. November 2010, 12:29

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
Xynon1
User
Beiträge: 1267
Registriert: Mittwoch 15. September 2010, 14:22

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.
Traue keinem Computer, den du nicht aus dem Fenster werfen kannst.
Xynon auf GitHub
Friesentroll
User
Beiträge: 1
Registriert: Sonntag 23. Januar 2011, 01:11

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
Micky2010
User
Beiträge: 34
Registriert: Donnerstag 19. Mai 2011, 17:06
Wohnort: Hessen

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
Errare humanum est, in errore perseverare stultum (Irren ist menschlich, im Irrtum verbleiben ist dumm)
Manus manum lavat (Eine Hand wäscht die andere)
Neo_Junior
User
Beiträge: 49
Registriert: Samstag 6. August 2011, 18:52

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
Auf den Wunsch, Computer und Software zu verstehen folgt mit (nicht unbedingt kompletter Logik) der Drang nach Wissen im Programmieren.
Neo_Junior
User
Beiträge: 49
Registriert: Samstag 6. August 2011, 18:52

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
Auf den Wunsch, Computer und Software zu verstehen folgt mit (nicht unbedingt kompletter Logik) der Drang nach Wissen im Programmieren.
Benutzeravatar
/me
User
Beiträge: 3554
Registriert: Donnerstag 25. Juni 2009, 14:40
Wohnort: Bonn

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.
Neo_Junior
User
Beiträge: 49
Registriert: Samstag 6. August 2011, 18:52

KLAR :D
Auf den Wunsch, Computer und Software zu verstehen folgt mit (nicht unbedingt kompletter Logik) der Drang nach Wissen im Programmieren.
Narutex
User
Beiträge: 3
Registriert: Sonntag 8. September 2019, 13:25

Könnten sie mir bitte die Bilder von den Skier senden? Wäre sehr nett! :)
Benutzeravatar
__blackjack__
User
Beiträge: 13004
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

@Narutex: Die Beispielprogramme kann man von der offiziellen Homepage von dem Buch herunterladen: http://helloworldbookblog.com/downloads/
“Most people find the concept of programming obvious, but the doing impossible.” — Alan J. Perlis
Antworten