Token Error:

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
modelnine
User
Beiträge: 670
Registriert: Sonntag 15. Januar 2006, 18:42
Wohnort: Celle
Kontaktdaten:

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.
Python 47
User
Beiträge: 574
Registriert: Samstag 17. September 2005, 21:04

Ok ist gut!
mfg

Thomas :-)
Thyestes
User
Beiträge: 23
Registriert: Dienstag 10. Januar 2006, 22:38

ich will euch ja nicht nerven, aber kann mir einer bitte sagen, was ich noch verändern muss, damit das Prog läuft? Danke
modelnine
User
Beiträge: 670
Registriert: Sonntag 15. Januar 2006, 18:42
Wohnort: Celle
Kontaktdaten:

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.
Thyestes
User
Beiträge: 23
Registriert: Dienstag 10. Januar 2006, 22:38

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.
helmut
User
Beiträge: 57
Registriert: Mittwoch 2. November 2005, 07:45
Wohnort: Dormagen

@ 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
Python 47
User
Beiträge: 574
Registriert: Samstag 17. September 2005, 21:04

Lol cool Buche hat ne dichte von 7.86 :lol:

Nee also nochmal ins Tafelwerk schauen und verbessern!
mfg

Thomas :-)
phoe1
User
Beiträge: 2
Registriert: Dienstag 8. März 2011, 17:21

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
EyDu
User
Beiträge: 4881
Registriert: Donnerstag 20. Juli 2006, 23:06
Wohnort: Berlin

Hallo.

Schau dir die vorletzte Zeile doch einfach noch einmal genauer an.
Das Leben ist wie ein Tennisball.
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Bonustipp: ``_init_`` ist nicht das gleiche wie ``__init__``. Was du suchst ist letzteres.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Darii
User
Beiträge: 1177
Registriert: Donnerstag 29. November 2007, 17:02

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.
phoe1
User
Beiträge: 2
Registriert: Dienstag 8. März 2011, 17:21

Wie macht man den ganz langen Unterstrich?
Ich mach ihn mit ShiftR. und -
_
Sonst kenn ich keinen!
-_ | / \ {[()]}
frabron
User
Beiträge: 306
Registriert: Dienstag 31. März 2009, 14:36

Das sind zwei Zeichen! _ + _ = __
Antworten