Python - colisiones objetos

   
Vista:

colisiones objetos

Publicado por pablito (3 intervenciones) el 26/05/2009 22:10:47
Buenas, encontré este tutorial http://marmota.act.uji.es/MTP/pdf/python.pdf, me lié a hacer algunos ejercicios de los que propone y me he atascado en lo siguiente:
Se trata de construir un fronton clásico, hay que hacerlo con phytonG, ( no vale usar phytonGames) de momento, con una sola plataforma. se gana si consigues aguantar un determinado tiempo sin que la bola se caiga (x=0).Tengo el crono en pantalla, todo el bucle esta dentro de la condición tiempo>0. tengo la plataforma, se mueve con las teclas de dirección y se mantiene todo el rato en la pantalla. bien. tengo la bola, y he conseguido que se mueva (en funcion de una velocidad x, y determinadas) y rebote en las paredes.bien. pero hohohohh.....! No consigo que la bola interactue con la plataforma. Alguien me puede dar alguna idea? Para que la bola rebote en las paredes, he cambiado el signo de la velocidad (x o y) cada vez que la bola rebota en la pared, pero en el caso de la plataforma, se trata de una pared móbil, y ¡hay algo que se me escapa!
si alguien me ayuda se lo agradeceré un montón, porque ahora mismo no me quedo tranquilo hasta que solucione esto.
PD:se que es muy elemental, pero bueno, he intentado solucionarlo yo por todos los medios y no hay manera. tampoco tengo nadie para preguntar. lo mas que he encontrado son soluciones en phygames pero no me sirven, lo que quiero es aprender a usar phyton, no hacer jueguecitos,asi que para mi lo importante es aprender el mecanismo, no hacer la cosa en si. Gracias
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

Disculpas y ayuda, me vuelvo loco!!!

Publicado por pablito (3 intervenciones) el 26/05/2009 23:16:12
perdón, python, no phyton...ups!
He probado de crear un variable z, en la forma: z=range(x,x+100), (donde x és el valor en el eje x del primer punto que define el rectangulo que hace de plataforma y x+100 el valor en el eje x del segundo punto que define el rectangulo/plataforma).
he puesto la condición de que la velocidad de la bola, cambie de signo cuando py=20(altura de la plataforma+radio de la bola) Y px=z, (py y px son las coordenadas del centro de la bola), pero hay algun tipo de error con enteros y decimales, ya que me sale un el siguiente mensaje:DeprecationWarning: integer argument expected, got float.
supongo que tiene que ver con el hecho de que la funcion range solo da enteros, y py da decimales, pero no acabo de comprenderlo.
Ayuda!!!!!!!! me vuelvo loco!!!!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Disculpas y ayuda, me vuelvo loco!!!

Publicado por raul (25 intervenciones) el 27/05/2009 17:29:13
hola pablo podrias poner el codigo de tu programa y el error ese de DeprecationWarning:......... asi te podemos ayudar ,venga un saludo
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Disculpas y ayuda, me vuelvo loco!!!

Publicado por pablito (3 intervenciones) el 27/05/2009 18:35:24
éste es el código, hay algunas palabras en catalan, pero se entiende bien.
el error es el siguiente: (sale en la pantalla de abajo a la derecha, donde entramos los datos o hacemos preguntas al usuario del programa)

C:usersusuariodesktoppythonG-windows-2_1_5pythong.pyw:33: DepreciationWarning: integer argument expected, got float
#Licencia:GPL versión 2

Código del programa:

#fronton arcaic

#paisatge
Alt_paisatge=1000.0
Amp_paisatge=1000.0
window_coordinates=(0.0,0.0,Alt_paisatge,Amp_paisatge)

#plataforma
h_plataforma=20.0
a_plataforma=100.0
x=Amp_paisatge/2-50.0
y=0.0
vx=0.0
impuls=0.00005
plataforma=create_filled_rectangle(x,y,x+a_plataforma,y+h_plataforma)

#pilota
px=float(Amp_paisatge/2)
py=Alt_paisatge-20
vpy=0.1
vpx=0.01
pilota=create_filled_circle(px,py,10.0)

#contador de temps
temps=10000.0
graficTemps=create_text(100,Alt_paisatge-30,('%d' %(temps)) ,10,'CENTER')


#simulació
while temps>=0:
z=range(x,x+100.0)
if keypressed(1)=='Left':
vx-=impuls
elif keypressed(1)=='Right':
vx+=impuls
x+=vx
if x<=0: vx=0
if x>=1000.0-a_plataforma: vx=0
py-=vpy
px+=vpx
if (py<=0 and (float(px)==z)) or py>=1000-10:
vpy=-vpy
if px<=0 or px>=1000-10:
vpx=-vpx
move(pilota,vpx,-vpy)
move(plataforma,vx,y)


#Contador de temps
vell_temps=graficTemps
graficTemps=create_text(100,Alt_paisatge-30,('%d' %(temps)) ,10,'CENTER')
erase(vell_temps)
temps-=0.01
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Disculpas y ayuda, me vuelvo loco!!!

Publicado por raul (25 intervenciones) el 28/05/2009 12:03:04
Al parecer una funcion que has llamado pide un entero y tu le pasas un float eso es loq ue entiendo,el pythonG no te dice en que linea esta el error pablito?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar