Python - ¿Podéis confirmarme si la velocidad de la bola es constante? Gracias.

 
Vista:
sin imagen de perfil
Val: 46
Ha disminuido su posición en 2 puestos en Python (en relación al último mes)
Gráfica de Python

¿Podéis confirmarme si la velocidad de la bola es constante? Gracias.

Publicado por Kid (16 intervenciones) el 29/12/2019 16:07:38
He probado con varios entornos de desarrollo (VisualStudio, Anaconda); pero el movimiento de la bola es inconstante, con acelerones aleatorios; especialmente cuando se mueven las palas.
¿Podéis confirmarme si a vosotros os pasa lo mismo y, en ese caso, cómo solucionarlo? ¡Gracias!

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
import turtle
wn=turtle.Screen()
wn.bgcolor("black")
wn.setup(width=800,height=600)
wn.tracer(0)
 
pad=turtle.Turtle()
pad.speed(0)
pad.shape("square")
pad.color("Blue")
pad.penup()
pad.shapesize(stretch_wid=5,stretch_len=1)
pad.goto(-350,0)
 
pada=turtle.Turtle()
pada.speed(0)
pada.penup()
pada.shape("square")
pada.shapesize(stretch_wid=5, stretch_len=1)
pada.goto(350,0)
pada.color("red")
 
ball=turtle.Turtle()
ball.penup()
ball.color("white")
ball.shape("circle")
ball.speed(0)
ball.color("white")
ball.dx=0.3
ball.dy=0.3
 
#Function movement
def padup():
    y=pad.ycor()
    y+=20
    pad.sety(y)
def paddown():
    y=pad.ycor()
    y-=20
    pad.sety(y)
 
def padaup():
    y=pada.ycor()
    y+=20
    pada.sety(y)
 
def padadown():
    y=pada.ycor()
    y-=20
    pada.sety(y)
 
#Keyboard feedback
wn.listen()
wn.onkeypress(padup, "w")
wn.onkeypress(paddown, "s")
wn.onkeypress(padaup, "Up")
wn.onkeypress(padadown, "Down")
 
#Main game loop
while True:
    wn.update()
 
    #Move the ball
    ball.setx(ball.xcor()+ball.dx)
    ball.sety(ball.ycor()+ball.dy)
 
    #Border checking
    if ball.ycor()>290:
        ball.sety(290)
        ball.dy*=-1
 
    if ball.ycor()<-290:
        ball.sety(-290)
        ball.dy*=-1
 
    if ball.xcor()>390:
        ball.goto(0,0)
        ball.dx*=-1
 
    if ball.xcor()<-390:
        ball.goto(0,0)
        ball.dx*=-1
 
    if pad.ycor()>250:
        pad.sety(250)
 
    if pada.ycor()>250:
        pada.sety(250)
 
    if pad.ycor()<-250:
        pad.sety(-250)
 
    if pada.ycor()<-250:
        pada.sety(-250)
 
    #Collision
    if (ball.xcor()>340 and ball.xcor()<350) and (ball.ycor()<pada.ycor()+60 and ball.ycor()>pada.ycor()-60):
        ball.setx(340)
        ball.dx*=-1
 
    if (ball.xcor()<-340 and ball.xcor()>-350) and (ball.ycor()<pad.ycor()+60 and ball.ycor()>pad.ycor()-60):
        ball.dx*=-1
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
Imágen de perfil de joel
Val: 1.904
Oro
Ha disminuido 1 puesto en Python (en relación al último mes)
Gráfica de Python

¿Podéis confirmarme si la velocidad de la bola es constante? Gracias.

Publicado por joel (392 intervenciones) el 29/12/2019 18:06:25
Hola Kid, lo he probado, y la verdad es que no es constante!!! se va trabando...
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
sin imagen de perfil
Val: 46
Ha disminuido su posición en 2 puestos en Python (en relación al último mes)
Gráfica de Python

¿Podéis confirmarme si la velocidad de la bola es constante? Gracias.

Publicado por Kid (16 intervenciones) el 30/12/2019 00:37:53
Y.. es normal¿?
¿Quiero decir, se supone que debe actuar así? Tal vez haya metido algo en el código "anormal"; pero, y aunque lo he buscado, no he encontrado nada fuera de lo usual.
Gracias Joel!!
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
sin imagen de perfil
Val: 46
Ha disminuido su posición en 2 puestos en Python (en relación al último mes)
Gráfica de Python

¿Podéis confirmarme si la velocidad de la bola es constante? Gracias.

Publicado por Kid (16 intervenciones) el 31/12/2019 14:43:33
Al correr el código, en la consola se me muestra el siguiente error:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
TclError                                  Traceback (most recent call last)
<ipython-input-1-a85a5cad93c9> in <module>
     62
     63     #Move the ball
---> 64     ball.setx(ball.xcor()+ball.dx)
     65     ball.sety(ball.ycor()+ball.dy)
     66
 
~\Anaconda3\lib\turtle.py in setx(self, x)
   1806         (10.00, 240.00)
   1807         """
-> 1808         self._goto(Vec2D(x, self._position[1]))
   1809
   1810     def sety(self, y):
~\Anaconda3\lib\turtle.py in _goto(self, end)
   3156                       (self.currentLineItem,
   3157                       self.currentLine[:],
-> 3158                       screen._pointlist(self.currentLineItem),
   3159                       self.items[:])
   3160                       )
~\Anaconda3\lib\turtle.py in _pointlist(self, item)
    753         (9.9999999999999982, 0.0)]
    754         >>> """
--> 755         cl = self.cv.coords(item)
    756         pl = [(cl[i], -cl[i+1]) for i in range(0, len(cl), 2)]
    757         return  pl
 
<string> in coords(self, *args, **kw)
 
~\Anaconda3\lib\tkinter\__init__.py in coords(self, *args)
   2467         return [self.tk.getdouble(x) for x in
   2468                            self.tk.splitlist(
-> 2469                    self.tk.call((self._w, 'coords') + args))]
   2470     def _create(self, itemType, args, kw): # Args: (val, val, ..., cnf={})
   2471         """Internal function."""
 
TclError: invalid command name ".!canvas"

He probado, no obstante, a correr el código original, el que el programador que enseña el curso ha hecho, y aparece el mismo error.
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