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)