Waldspaziergang-Beispiel zu Kamerabewegung
waldspaziergang.py
—
Python Source,
2 KB (3054 bytes)
Dateiinhalt
from visual import * from random import randint scene.autoscale=False #scene.userzoom= False #scene.userspin= False scene.center=(0,20,0) scene.background=(0,0.5,1) scene.fov = 1.5 #Kamerawinkel #Klassen class man(frame): def __init__ (self,pos=(0,0,0)): frame.__init__(self) self.koerper=cone (frame=self,pos=(0,0,0),radius=3,length=15,color=color.blue,axis=(0,1,0)) self.kopf=sphere(frame=self,pos=(0,12,0),radius=3) self.treffer=label(frame=self,pos=self.kopf.pos,text='0',background=self.kopf.color,color=color.black) self.punkte=0 self.pos=pos def bewegen (self,schritt): self.pos += schritt class Baum (frame): def __init__ (self,pos=(0,0,0)): frame.__init__(self) self.stamm=cylinder(radius=2, pos=(0, 0,0), axis=(0,5,0), length=12,color=(0.5,0.25,0.1), frame=self) self.blatt1=cone(radius=6, pos=(0,12,0), axis=(0,10,0), color=(0.1,0.5,0.1), frame=self) self.blatt3=cone(radius=6, pos=(0,5,0), axis=(0,10,0), color=(0.1,0.5,0.1), frame=self) #self.blatt2=cone(radius=6, pos=(0,19,0), axis=(0,10,0), color=(0.1,0.5,0.1), frame=self) self.pos=pos class Tanne(Baum): def __init__(self,pos=(0,0,0)): Baum.__init__(self,pos=pos) self.blatt2=cone(radius=6, pos=(0,19,0), axis=(0,10,0), color=(0.1,0.5,0.1), frame=self) mann = man() mann.pos = (0,0,0) Boden= box (pos=(0,0,0),length=500,height=1,width=500,color = color.green) schatz = box(pos=(randint(-225,225),3,randint(-225,225)), length=5,height=4,width=5, color=(0.8,0.7,0.2)) #Baumliste = [] for i in range(40): tree = Baum() tree.pos = (randint(-225,225),0,randint(-225,225)) #Baumliste.append(tree) for i in range(40): tree = Tanne() tree.pos = (randint(-225,225),0,randint(-225,225)) mann.axis=(0,0,1) scene.forward=mann.axis while True: rate(30) if scene.kb.keys: zeichen = scene.kb.getkey() if zeichen == "up": scene.center = scene.center + scene.forward mann.bewegen(mann.axis) if mag(mann.pos-schatz.pos)<10: schatz.pos = (randint(-225,225),3,randint(-225,225)) mann.punkte=mann.punkte+1 mann.treffer.text=str(mann.punkte) if zeichen == "down": scene.center = scene.center - scene.forward mann.bewegen(-mann.axis) if mag(mann.pos-schatz.pos)<10: schatz.pos = (randint(-225,225),3,randint(-225,225)) mann.punkte=mann.punkte+1 mann.treffer.text=str(mann.punkte) if zeichen == "right": mann.axis = rotate(scene.forward, axis=scene.up, angle=radians(-18)) scene.forward = mann.axis if zeichen == "left": mann.axis = rotate(scene.forward, axis=scene.up, angle=radians(18)) scene.forward = mann.axis #scene.center=mann.kopf.pos+mann.pos+(0,8,0) scene.center=mann.pos + (0,20,0)