Posts: 39
Threads: 22
Joined: May 2018
Hi, I am following a tutorial online: freecodecamp.org on Youtube. I am learning how to program a simple pong game in Python. However, when I go and execute my code the "left paddle" associated with the "w" key on my keyboard doesn't respond. My code looks the same as the guy in the tutorial video, and I don't know why my code doesn't work. I believe it's my wn.listen() method, but I'm not sure. Any help or suggestions would be greatly appreciated.
import turtle
wn = turtle.Screen()
wn.title("Pong by @TokyoEdTech")
wn.bgcolor("black")
wn.setup(width=800, height=600)
wn.tracer(0)
# Paddle A
paddle_a = turtle.Turtle()
paddle_a.speed(0)
paddle_a.shape("square")
paddle_a.color("white")
paddle_a.shapesize(stretch_wid=5, stretch_len=1)
paddle_a.penup()
paddle_a.goto(-350, 0)
# Paddle B
paddle_a = turtle.Turtle()
paddle_a.speed(0)
paddle_a.shape("square")
paddle_a.color("white")
paddle_a.shapesize(stretch_wid=5, stretch_len=1)
paddle_a.penup()
paddle_a.goto(350, 0)
# Ball
ball = turtle.Turtle()
ball.speed(0)
ball.shape("square")
ball.color("white")
ball.penup()
ball.goto(0, 0)
# Function
def paddle_a_up():
y = paddle_a.ycor()
y += 20
paddle_a.sety(y)
# Keyboard binding
wn.listen()
wn.onkeypress(paddle_a_up(), "w") # this calls the function paddle_a_up()
# Main game loop
while True:
wn.update()
Posts: 1,838
Threads: 2
Joined: Apr 2017
Aug-28-2021, 04:41 PM
(This post was last modified: Aug-28-2021, 04:42 PM by ndc85430.)
Line 46: drop the parens on paddle_a_up . Why? Because having the parens means calling the function and then the return value is passed to onkeypress , which isn't what you want to do. Instead, you want to pass the function itself to onkeypress , so that it can be called when the relevant key is pressed.
Posts: 39
Threads: 22
Joined: May 2018
(Aug-28-2021, 04:41 PM)ndc85430 Wrote: Line 46: drop the parens on paddle_a_up . Why? Because having the parens means calling the function and then the return value is passed to onkeypress , which isn't what you want to do. Instead, you want to pass the function itself to onkeypress , so that it can be called when the relevant key is pressed.
Okay, thanks for your suggestion!
Posts: 3
Threads: 0
Joined: May 2022
(Sep-09-2021, 11:34 AM)Than999 Wrote: (Aug-28-2021, 04:41 PM)ndc85430 Wrote: Line 46: drop the parens on paddle_a_up . Why? Because having the parens means calling the function and then the return value is passed to onkeypress , which isn't what you want to do. Instead, you want to pass the function itself to onkeypress , so that it can be called when the relevant key is pressed.
Okay, thanks for your suggestion!
I am having a similar issue and since i am a bit new to coding i dont properly understand what you are saying
Posts: 1,838
Threads: 2
Joined: Apr 2017
It might help if you posted the code and the errors, probably in a separate thread since it's a separate piece of code.
Posts: 3
Threads: 0
Joined: May 2022
(May-14-2022, 03:08 PM)ndc85430 Wrote: It might help if you posted the code and the errors, probably in a separate thread since it's a separate piece of code.
the problem is I am not getting any errors just like this guy here, I code it exactly i even removed (win. tracer)
I entered (turtle. done)
it just becomes unresponsive after a certain point in time.
Posts: 1,838
Threads: 2
Joined: Apr 2017
You need to show the code. We can't see your screen.
Posts: 3
Threads: 0
Joined: May 2022
(May-15-2022, 04:43 AM)ndc85430 Wrote: You need to show the code. We can't see your screen.
import turtle
wn = turtle.Screen()
wn.title ("pong by king gemini")
wn.bgcolor("black")
wn.setup(width=800, height=600)
#Paddle A
paddle_a = turtle.Turtle()
paddle_a.speed(0)
paddle_a.shape("square")
paddle_a.color("white")
paddle_a.shapesize(stretch_wid=5, stretch_len=1)
paddle_a.penup()
paddle_a.goto(-350, 0)
#Paddle B
paddle_a = turtle.Turtle()
paddle_a.speed(0)
paddle_a.shape("square")
paddle_a.color("white")
paddle_a.shapesize(stretch_wid=5, stretch_len=1)
paddle_a.penup()
paddle_a.goto(+350, 0)
#Ball
ball = turtle.Turtle()
ball.speed(0)
ball.shape("circle")
ball.color("white")
ball.penup()
ball.goto(0,0)
#function
def paddle_a_up():
y = paddle_a.ycor()
y += 20
paddle_a.sety(y)
#keyboard binding
wn.listen()
wn.onkeypress(paddle_a_up,"q")
#main game loop
while True:
wn.update()
turtle.done
Posts: 6,779
Threads: 20
Joined: Feb 2020
Works fine for me. You will want to write a paddle_a_down() function and bind it to a different key. You might also want to modify the up and down functions to prevent the paddle from moving outside the window.
What do you think is wrong?
|