Links und Funktionen
Sprachumschaltung

Navigationspfad
Sie sind hier: Startseite / Probestudium / 2012 / WS I: 3D-Programmierung / Arbeitsgruppen / Skyfahren / Beta-Zeug / Skyfahren BETA 1.3


Inhaltsbereich

Skyfahren BETA 1.3

skifahren beta1.3.py — text/python-source, 5 KB (5844 bytes)

Dateiinhalt

from visual import *
from threading import Thread

scene.userzoom = False          # User darf zoomen?
scene.userspin = False          # User darf rotieren?
scene.forward = (0,-5,10)      # Kameraposition
scene.autoscale = False         # Autoskalierung aktiv?
scene.range = 70              # Kameraabstand von scene.center
scene.center = (0,0,0)          # Kamerablickpunkt: norm. (0,0,0)
scene.up = (0,1,0)              # Rotationsachse Kamera: norm. (0,1,0)
scene.background = color.blue  # Hintergrundfarbe
scene.fov = 1                   # Kamerawinkeloeffnung: norm. 1
scene.fullscreen = False        # Vollbild? norm. False
scene.title = "SKYFAHREN"     # Fenstertitel
scene.width = 800            # Fensterbreite: norm. 200
scene.height = 800             # Fensterhoehe: norm 200
scene.x = 50                    # x-Koordinate d. Fensters: norm. 0
scene.y = 25                    # y-Koordinate d. Fensters: norm. 0




    
class kiste(Thread,frame):
    def __init__(self,pos=(0,0,0)):
        Thread.__init__(self)
        frame.__init__(self,pos=pos)
        self.kiste = box(pos=(self.x,self.y,self.z),height=10,length=10,width=10,material=materials.earth,frame=self)
        self.vkiste = vector(self.x,self.y,self.z)
        self.respawnpos=0
        
        
    def Entgegenkommen(self):
        if self.z<=-100:
            self.z=self.respawnpos
            self.vkiste = vector(self.x,self.y,self.z)
            
            
        else:
            self.z-=1.5
            self.vkiste = vector(self.x,self.y,self.z)




class baum(Thread, frame):
    
    def __init__(self,pos=(0,0,0)):
        Thread.__init__(self)
        frame.__init__(self,pos=pos)
        self.stamm = cylinder(axis=(0,35,0),pos=(self.x,self.y-5,self.z),radius=(4),length=(50),frame=self,material=materials.wood)
        self.busch = sphere(radius=(20),pos=(self.x,self.y+52,self.z),color=color.green,frame=self)
        self.vstamm = vector(self.stamm.x,0,self.stamm.z)
    

        
    def baumBewegtSich(self):
        if self.z<=-45:
            self.z=100
            self.vstamm = vector(self.x,0,self.z)
            
        else:                
            self.z-=1
            self.vstamm = vector(self.x,0,self.z)
            
        
class skifahrer(Thread, frame):

    def __init__(self, pos=()):
        Thread.__init__(self)
        frame.__init__(self,pos=pos)
        self.arm1 = cylinder(radius=(1),length=(4),axis=(-1,0,5),pos=(self.x-5,self.y+10,self.z-35),color=color.red,frame=self)
        self.arm2 = cylinder(radius=(1),length=(4),axis=(1,0,5),pos=(self.x+5,self.y+10,self.z-35),color=color.red,frame=self)
        self.ski1 = box(pos=(self.x+3,self.y-5,self.z-25),height=(0.5),length=(15),axis=(0,0,5),width=(2),color=color.green,frame=self)
        self.ski2 = box(pos=(self.x-3,self.y-5,self.z-25),height=(0.5),length=(15),axis=(0,0,5),width=(2),color=color.green,frame=self)
        self.ich = sphere(pos=(self.x,self.y,self.z-25),radius=8,opacity=0.5,frame=self)
        self.vich = vector(self.ich.x,self.ich.y,self.ich.z)
        self.gesundheit=100
        
        
    def einsLinksFahren(self):
        self.x+=3
        self.vich = vector(self.x,self.y,self.ich.z)
        scene.center.x+=3
               
    def einsRechtsFahren(self):
        self.x-=3
        self.vich = vector(self.x,self.y,self.ich.z)
        scene.center.x-=3



class haus (Thread,frame):
    def __init__(self,pos=(0,0,0)):
        Thread.__init__(self)
        frame.__init__(self,pos=pos)

        tri=Polygon([(-50,0),(0,50),(50,0)])
        straight = [(0,43,175),(0,43,115)] 
        haus = box(width=(50),length=(100),height=(50),z=150,y=19,opacity=0.1,material=materials.bricks,frame=self)
        dach = extrusion(shape=tri,pos=straight,material=materials.wood,frame=self)




if __name__ == "__main__":
    timer=0
    wand1 = box(length=100,height=10,pos=(0,-5,200))
    himmel = sphere(radius=200,color=color.red,material=materials.silver)
    s1 = skifahrer(pos=(0,0,0))
    anzeige = label(pos=(40,-10,-50),text=str(s1.gesundheit))
    time = label(pos=(-40,-10,-50),text="Punkte: "+str(timer))
    h= haus()
    h.start()
    h1=kiste(pos=(15,0,50))
    h2=kiste(pos=(-15,0,30))
    h3=kiste(pos=(-7,0,50))
    h4=kiste(pos=(7,0,60))
    h2.start()
    s1.start()
    h1.start()
    b1 = baum()
    b1.start()
    h3.start()
    h4.start()
    h1.respawnpos=100
    h2.respawnpos=50
    h3.respawnpos=75
    h4.respawnpos=90
    

    while True:
        anzeige.text="Leben: "+str(s1.gesundheit)
        time.text="Punkte: "+str(timer)
        rate(50)
        h4.Entgegenkommen()
        h3.Entgegenkommen()
        h1.Entgegenkommen()
        h2.Entgegenkommen()
        b1.baumBewegtSich()
        timer+=1
        
        
        if mag(s1.vich-b1.vstamm) <= 10 or(2<=(s1.x-h1.x)<=28 and 65<=(s1.z-h1.z)<=85) or (-27<=(s1.x-h2.x)<=-1 and 40<=(s1.z-h2.z)<=70) or (-20<=(s1.x-h3.x)<=6 and 65<=(s1.z-h3.z)<=85) or (-6<=(s1.x-h4.x)<=20 and 75<=(s1.z-h4.z)<=95):
            if s1.gesundheit == 0:
                print ("you lost")
                anzeige2 = label(pos=(0,0,0),text="Du hast leider verloren :/",heigth = 1000)
                exit()
            else:
                s1.gesundheit-=1
                print ("Leben: "+ str(s1.gesundheit))
        
        if scene.kb.keys:
            skk = scene.kb.getkey()
            if skk=="left":
                if (s1.x != 42):
                    s1.einsLinksFahren()
                    anzeige.x+=3
                    time.x+=3
            elif skk=="right":
                if (s1.x != -42):
                    s1.einsRechtsFahren()
                    anzeige.x-=3
                    time.x-=3
            elif skk=="p":
                while skk!="o":
                    pause=label(text="Pause")
                    skk = scene.kb.getkey()

Funktionsleiste