Seite 1 von 1

Moorhuhn

Verfasst: Mittwoch 16. Dezember 2009, 17:50
von anga
Ich habe die Anleitung aus dem Buch "Python für Kids" durchgeführt, aber das Spiel funktioniert nicht.

wer hat dieses buch und kann mir den code geben?

Verfasst: Mittwoch 16. Dezember 2009, 20:27
von LP640
hi
erstmal ein dickes fettes LOL
hier ein code den ich noch aus meiner informatikunterrichtzeit habe
du brauchst allerdings die ganzen GIF und TON Dateien oder machst se weg

Code: Alles auswählen

from xturtle import Turtle, title
from random import randint
import winsound

SCHUESSE = 5
TREFFER_ABSTAND = 20
TEMPO = 0.35

GETROFFEN = "getroffen.wav"
DANEBEN = "daneben.wav"
GUT = "gameover.wav"
NAJA = "applaus.wav"

class MHManager(Turtle):
    """Spezielle Turtle mit der Aufgabe, das Moorhuhn-GUI
    zu managen.
    """
    def __init__(self, w, h):
        Turtle.__init__(self, width=w, height=h)
        self.hideturtle()
        self.speed(0)
        self.penup()
        self.goto(-290, -220)
        self.pencolor("yellow")
    def message(self, txt):
        """Gibt Text txt im Grafikfenster aus.
        """
        self.clear()
        self.write(txt, font=("Courier", 18, "bold"))

class Huhn(Turtle):

    def __init__(self, bilddatei):
        Turtle.__init__(self, bilddatei)
        self.penup()
        self.speed(0)
        self.start()

    def start(self):
        self.hideturtle()
        self.setpos(-340, randint(-70,70))
        self.vx = randint(6,11) * TEMPO
        self.vy = randint(-3,3) * TEMPO
        self.getroffen = False
        self.showturtle()
        self.ausdemspiel = False

    def schritt(self, fertig):
        if self.ausdemspiel:
            return
        if self.getroffen:
            self.vy = self.vy - 0.25 * TEMPO
        x, y = self.position()
        x = x + self.vx
        y = y + self.vy
        self.goto(x,y)
        if x > 340 or abs(y) > 250: 
            if not fertig:
                self.start()
            else:
                self.ausdemspiel = True

class MoorhuhnSpiel:
    """Kombiniert die Bestandteile des Moorhuhnspiels.
    """
    def __init__(self):
        title("Moorhuhn")
        self.mhm = mhm= MHManager(640, 480) # erzeugt
                                     # Grafik-Fenster
        mhm.bgpic("landschaft.gif")
        mhm.message("Start mit Leertaste!")

        mhm.addshape("huhn01.gif")
        mhm.addshape("huhn02.gif")
        self.huehner = [Huhn("huhn01.gif"), Huhn("huhn02.gif")]
        
        self.gameover = True   # Neues Spiel kann beginnen
        mhm.onclick(self.schuss, 1)
        mhm.onkey(self.spiel, "space")
        mhm.listen()
        mhm.getcanvas().config(cursor="X_cursor")
        
    def spiel(self):
        if not self.gameover:
            return   # altes Spiel läuft noch
        self.mhm.message("SPIEL LÄUFT")
        self.schuesse = 0
        self.treffer = 0
        self.gameover = False
        for huhn in self.huehner:
            huhn.start()
        while not self.gameover:
            for huhn in self.huehner:
                huhn.schritt(self.schuesse == SCHUESSE)
            self.gameover = True
            for huhn in self.huehner:
                self.gameover = (self.gameover and
                                           huhn.ausdemspiel)
        trefferrate = 1.0*self.treffer/self.schuesse
        self.mhm.message( ("Trefferrate: %1.2f" % trefferrate) +
                                        " - Leertaste drücken!")
        if trefferrate > 0.55:
            self.klang(GUT)
        else:
            self.klang(NAJA)

    def schuss(self, x, y):
        if self.schuesse == SCHUESSE:
            return # Es läuft kein Spiel, also kein Schuss
        self.schuesse = self.schuesse + 1
        klangdatei = DANEBEN
        for huhn in self.huehner:
            if (not huhn.getroffen and
                     huhn.distance(x,y) < TREFFER_ABSTAND):
                huhn.getroffen = True
                self.treffer = self.treffer + 1
                klangdatei = GETROFFEN
        self.klang(klangdatei)
        self.mhm.message("Treffer/Schüsse: %d/%d" %
                             (self.treffer, self.schuesse))

    def klang(self, soundfile):
        winsound.PlaySound(soundfile, winsound.SND_ASYNC) 

if __name__ == "__main__":
    MoorhuhnSpiel()


es wäre auch schön wenn du auch zuerst selber versuchen würdest deine probleme zu lösen aber ich mach mal ne ausnahme :wink:

mfg
LP640

Verfasst: Mittwoch 16. Dezember 2009, 20:38
von Dav1d
LP640 hat geschrieben:hi
erstmal ein dickes fettes LOL
hier ein code den ich noch aus meiner informatikunterrichtzeit habe
du brauchst allerdings die ganzen GIF und TON Dateien oder machst se weg

es wäre auch schön wenn du auch zuerst selber versuchen würdest deine probleme zu lösen aber ich mach mal ne ausnahme :wink:

mfg
LP640
Da kenn ich noch wen, auf den das zutrifft

Verfasst: Mittwoch 16. Dezember 2009, 20:52
von lunar
@Dav1d: Das war nicht unbedingt nötig.

Verfasst: Mittwoch 16. Dezember 2009, 21:12
von LP640
wen meint er denn??? :D

mfg
LP640

Verfasst: Donnerstag 17. Dezember 2009, 14:47
von Dav1d
lunar hat geschrieben:@Dav1d: Das war nicht unbedingt nötig.
Das stimmt wohl

Zitat

Verfasst: Freitag 18. Dezember 2009, 17:34
von anga
LP640 hat geschrieben:hi
erstmal ein dickes fettes LOL
hier ein code den ich noch aus meiner informatikunterrichtzeit habe
du brauchst allerdings die ganzen GIF und TON Dateien oder machst se weg

# eingaebetteter Quellcode#

es wäre auch schön wenn du auch zuerst selber versuchen würdest deine probleme zu lösen aber ich mach mal ne ausnahme :wink:

mfg
LP640
Danke für den Code, LP640. Hast du die gifs und die wavs noch? Wenn ja kannst du sie mir irgendwiee geben (Online-Festplatte, Mail, Messenger, etc.)?
Wäre echt toll wenn ich die noch hätte.

Verfasst: Freitag 18. Dezember 2009, 18:14
von Dav1d
LP640 hat geschrieben:hier ein code den ich noch aus meiner informatikunterrichtzeit habe
du brauchst allerdings die ganzen GIF und TON Dateien oder machst se weg
Lernt ihr im Informatik-Unterricht mit der Xturtle Demo-Umzugehen?

Da ist zufälligerweise der selbe Code drinnen :P

//PS da sind auch die Datein dabei