Seite 1 von 2

Verfasst: Dienstag 17. Januar 2006, 19:13
von modelnine
Musst aber nicht gleich zu jemanden sagen, das er bullshit redet, nur weil er sich mal irrt! ;-)
Pardon...

Nur: wenn Du input() als "Zahlen-Eingabe" verkaufst darfst Du Dich nicht wundern wenn ein Newbie der Python zum ersten mal probiert völlig schokiert ist wenn das dann andere Dinge tut (also zum Bleistift wenn man 1 eingibt ein integer 1 rauskommt, und kein float)...

Und: ich hasse es die Fragen die daraus entstehen immer und immer wieder beantworten zu müssen nur weil jemand probiert hat den Leuten Schritt 2 vor Schritt 1 zu erklären. ;-)

Man sagt den Leuten einfach: "don't use input." Das reicht, bis sie dann verstehen was dahinter steht, dann erklärt man ihnen warum man input nicht benutzen soll, und wenn sie es dann doch tun kann man immer noch sagen: "Ich hab Dich gewarnt." ;-)

--- Heiko.

Verfasst: Dienstag 17. Januar 2006, 21:44
von Python 47
Ok ist gut!

Verfasst: Dienstag 17. Januar 2006, 22:09
von Thyestes
ich will euch ja nicht nerven, aber kann mir einer bitte sagen, was ich noch verändern muss, damit das Prog läuft? Danke

Verfasst: Dienstag 17. Januar 2006, 22:22
von modelnine
Ich hab Dir ein funktionierendes Programm gepostet. Guck da bitte nach wie Du manche Dinge anders machen kannst, und übernimm das was Du verstehst.

Es geht nicht an das wir Dir hier Dein Programm schreiben, weil das hier kein Hausaufgabenkanal ist...

--- Heiko.

Verfasst: Dienstag 17. Januar 2006, 22:52
von Thyestes
das Programm fumktioniert bei mir aber nicht.
es kommt zwar keine Fehlermeldung, aber der Bildschirm bleibt weiß. Trotzdem danke für die Mühe

edit:

auf einmal läufts. Vielen Dank. Damit kann ich mein programm deutlich verbessern.
Du hast viel "schöner" programmiert als ich.

Verfasst: Mittwoch 18. Januar 2006, 08:45
von helmut
@ Thyestes,

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

Verfasst: Mittwoch 18. Januar 2006, 13:38
von Python 47
Lol cool Buche hat ne dichte von 7.86 :lol:

Nee also nochmal ins Tafelwerk schauen und verbessern!

Re: Token Error:

Verfasst: Dienstag 8. März 2011, 17:30
von phoe1
Hallo! Bei mir zeigt er die Fehlermeldung auch.
:K warum!
Kann mir einer helfen?

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

Re: Token Error:

Verfasst: Dienstag 8. März 2011, 17:55
von EyDu
Hallo.

Schau dir die vorletzte Zeile doch einfach noch einmal genauer an.

Re: Token Error:

Verfasst: Mittwoch 9. März 2011, 02:17
von Leonidas
Bonustipp: ``_init_`` ist nicht das gleiche wie ``__init__``. Was du suchst ist letzteres.

Re: Token Error:

Verfasst: Mittwoch 9. März 2011, 08:15
von Darii
phoe1 hat geschrieben:Kann mir einer helfen?
Du kannst dir auch selbst helfen. Test die verschiedenen Teile deines Programms einzeln, dann findest du auch die Fehler.

Re: Token Error:

Verfasst: Freitag 11. März 2011, 14:30
von phoe1
Wie macht man den ganz langen Unterstrich?
Ich mach ihn mit ShiftR. und -
_
Sonst kenn ich keinen!
-_ | / \ {[()]}

Re: Token Error:

Verfasst: Freitag 11. März 2011, 14:35
von frabron
Das sind zwei Zeichen! _ + _ = __