Armando copas (animación)
Ejercicio ilustrativo sobre el uso de los menúes en vpython. Utiliza una instancia de la clase cylinder y otra de cone. Los items del menú controlan atributos de dichas instancias como color y posición.
#*****************************
from visual.controls import *
import os
def movercopa(a,m):
if a.pos.x==0:
#a.pos=(30,0,0)
while a.pos.x<=30:
rate(40)
a.pos.x+=0.1
a.pos.y-=0.1/3
else:
#a.pos=(0,10,0)
while a.pos.x>=0:
rate(40)
a.pos.x-=0.1
a.pos.y+=0.1/3
a.pos.x=0
def movertallo(a,m):
if a.pos.x==0:
while a.pos.x>=-20:
rate(40)
a.pos.x-=0.1
else:
while a.pos.x<=0:
rate(40)
a.pos.x+=0.1
def colorcopa(a):
if a.color==color.green:
a.color=color.blue
else:
a.color=color.green
def colortallo(a):
if a.color==color.magenta:
a.color=color.cyan
else:
a.color=color.magenta
m11=1
m12=1
display(background=(1,0,0), title="Armando copas", width=700, height=500, center=(10,5,0),autoscale = 1)
tallo= cylinder(radius=2, length = 10, color=color.cyan, axis=(0,1,0), pos=(0,0,0))
copa= cone(pos=(0,10,0), axis=(0,1,0), length=20,radius=6, color= (0,1,0))
c = controls(x=150, y=400, width=450, height=350, range=90)
m1 = menu(pos=(0,0,0), heigth=7, width=55,height =8, text='Posiciones', color=color.orange, foreground=color.orange)
m2 = menu(pos=(50,0,0), heigth=7, width=55,height =8, text='Colores', color=color.blue, foreground=color.orange)
# After creating the menu heading, add menu items:
m1.items.append(('Mover copa', lambda: movercopa(copa,m11)) )# specify menu item
m1.items.append(('Mover tallo', lambda: movertallo(tallo,m12)))
m1.items.append(('---------',None)) # a dummy separator
m2.items.append(('Color copa', lambda: colorcopa(copa)) )# specify color
m2.items.append(('Color tallo', lambda: colortallo(tallo)) )# specify color
while 1:
rate(4)
c.interact( )
#********************************
{backbutton}
|
|
|
|
|