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

 
Vista:
sin imagen de perfil
Val: 49
Ha mantenido su posición 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 (24 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: 3.475
Oro
Ha mantenido su posición 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 (901 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: 49
Ha mantenido su posición 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 (24 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: 49
Ha mantenido su posición 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 (24 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