Links und Funktionen
Sprachumschaltung

Navigationspfad
Sie sind hier: Startseite / Probestudium / 2016 / WS I: 3D-Programmierung / Skripte / Waldspaziergang-Beispiel zu Kamerabewegung


Inhaltsbereich

Waldspaziergang-Beispiel zu Kamerabewegung

Python Source icon 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)
        
        

Funktionsleiste