Abril 24, 2018, 10:32:56 am

Autor Tema: Bolas saltonas.... en Tkinter  (Leído 1643 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado hanlly

  • Yo vivo en CPH
  • ***
  • Mensajes: 505
    • Ver Perfil
Bolas saltonas.... en Tkinter
« en: Diciembre 25, 2013, 11:55:41 am »
Holaaaaaa!! Navidad y yo aquí, posteando codigos...


Este código trata de una ventana simple, con un Canvas y... al hacer click dentro, se genera una pequeña bolita 10x10px que comienza a caer por accion de la gravedad, con un valor de 98.1px/seg^2 (simulando la gravedad de la tierra, unos 9.81m/seg^2)

Una vez que llegan al fondo del widget, cambian de direccion, haciendo una especie de rebote.

Tiene un pequeño problema ... y es que las bolitas van ganando cierta energía cinética que la elevan un poquitín mas de la posicion inicial

Código: (python) You are not allowed to view links. Register or Login

from Tkinter import *
from time import sleep
from random import randint
import threading
class Bola(threading.Thread):

def __init__(self, master, x, y):
colores=[
"blue",
"red",
"white",
"black",
"brown",
"gray",
"lightblue",
"lightgreen",
"pink",
"purple"
]
color=colores[randint(0,len(colores)-1)]
self.ID=master.create_oval(x, y, x+10, y+10)
self.posy=y
self.posx=x
master.itemconfigure(self.ID, fill=color)
threading.Thread.__init__(self)
self.master=master
self.start()

def run(self):
interval=.01
t=0
ec=True#ecuacion 1
while True:
try:
h=[int(a) for a in self.master.winfo_geometry().replace("x", '+').split("+")][1]
if self.master:
if self.posy>h-16: #16=correcion para que parezca que toca el fondo
ec=False #usar ecuacion 2
if ec:
#ecuacion 1
delta_y=98.1*t**2 - 98.1*(t-interval)**2
vel=98.1*t/2.0
t+=interval
else:
#ecuacion 2
delta_y=-(98.1*t**2 - 98.1*(t-interval)**2)
vel=98.1*t/2.0
t-=interval
if vel<=4:
ec=True
self.master.move(self.ID, 0, delta_y)
self.posy+=delta_y
sleep(interval)
elif not self.master: #cerrar si cierran la ventana.
break
except:
pass
def generar(ev=None):
w,h,x,y=[int(a) for a in f.winfo_geometry().replace("x", '+').split("+")]
if ev:
Bola(f, ev.x, ev.y)


win=Tk()
win.geometry("400x400")
f=Canvas(win, bd=3, relief=GROOVE)
f.bind('<ButtonPress>', generar)
f.pack(expand=1, fill=BOTH, padx=3, pady=3)


win.mainloop()
You are not allowed to view links. Register or Login


xx
Edtoy en Bolas

Iniciado por DarthFaca

4 Respuestas
1382 Vistas
Último mensaje ſeptiembre 12, 2007, 04:10:54 pm
por Edgecrush3r
xx
Buscaminas con Tkinter

Iniciado por hanlly

0 Respuestas
3179 Vistas
Último mensaje Diciembre 24, 2013, 10:17:16 am
por hanlly
xx
Tkinter ---> Combobox

Iniciado por JCH00

1 Respuestas
3792 Vistas
Último mensaje Noviembre 17, 2015, 11:16:45 pm
por mou
xx
El juego de sacar bolas de la caja

Iniciado por csaralg

4 Respuestas
2639 Vistas
Último mensaje Agosto 13, 2008, 12:04:07 am
por csaralg
xx
[Python] Cliente Ftp Tkinter

Iniciado por runex

5 Respuestas
1791 Vistas
Último mensaje Abril 16, 2012, 07:31:52 pm
por JaAViEr
xx
ayuda con mainloop en tkinter

Iniciado por the_trooper

1 Respuestas
2035 Vistas
Último mensaje Agosto 29, 2009, 02:53:57 pm
por JaAViEr
xx
posts nuevos tkinter

Iniciado por daryo

0 Respuestas
926 Vistas
Último mensaje Marzo 17, 2012, 08:49:22 am
por daryo
xx
Cuanto sobrevivirias despues de darle a un oso en las bolas?

Iniciado por chili-remasterizado

6 Respuestas
1487 Vistas
Último mensaje Diciembre 03, 2009, 08:31:21 pm
por .xAk.
xx
Introduccion a tkinter (Interfaz grafica)

Iniciado por daryo

3 Respuestas
2188 Vistas
Último mensaje Mayo 19, 2012, 10:43:26 pm
por SixP4ck3r
xx
¿Dirección para descargar TKinter?

Iniciado por Jairus

2 Respuestas
2162 Vistas
Último mensaje Agosto 14, 2012, 03:12:27 pm
por Jairus