Python Forum

Full Version: Bounce Game Problems
You're currently viewing a stripped down version of our content. View the full version with proper formatting.
So i finished the Bounce game and when I hit run it didn't work so I checked the errors it gave and the lines it told me but it's the same code from the book. So maybe you can find an error with it. I also put the error it gave me.
import time
import random
from tkinter import *

class Ball:
    def __init__(self, canvas, paddle, color):
        self.canvas = canvas
        self.paddle = paddle
        self.id = canvas.create_oval(10, 10, 25, 25, fill=color)
        self.canvas.move(self.id, 245, 100)
        starts = [-3, -2, -1, 1, 2, 3]
        random.shuffle(starts)
        self.x = starts[0]
        self.y = -3
        self.canvas_height = self.canvas.winfo_height()
        self.canvas_width = self.canvas.winfo_width()
        self.hit_bottom = False
		
    def hit_paddle(self, pos):
        paddl_pos = self.canvas.coords(self.paddle.id)
        if pos[2] >= paddle_pos[0] and pos[0] <= paddle_pos[2]:
            if pos[3] >= paddle_pos[1] and pos[3] <= paddle+pos[3]:
                return True
            return False
    def draw(self):
        self.canvas.move(self.id, self.x, self.y)
        pos = self.canvas.coords(self.id)
        if pos[1] <= 0:
            self.y = 1
        if pos[3] >= self.canvas_height:
            self.hit_bottom = True
        if self.hit_paddle(pos) == True:
            self.y = -3
        if pos[0] <= 0:
            self.x = 3
        if pos[2] >= self.canvas_width:
            self.x = -3

class Paddle:
    def __init__(self, canvas, color):
        self.canvas = canvas
        self.id = canvas.create_rectangle(0, 0, 100, 10, fill=color)
        self.canvas.move(self.id, 200, 300)
        self.x = 0
        self.canvas_width = self.canvas.winfo_width()
        self.canvas.bind_all('KeyPress-Left', self.turn_left)
        self.canvas.bind_all('KeyPress-Right', self.turn_right)

    def draw(self):
        self.canvas.move(self.id, self.x, 0)
        pos = self.canvas.coords(self.id)
        if pos[0] <= 0:
            self.x = 0
        elif pos[2] >= self.canvas_width:
            self.x = 0

    def turn_left(self, evt):
        self.x = -2

    def turn_right(self, evt):
        self.x = 2
        
tk = Tk()
tk.title("Game")
tk.resizable(0, 0)
tk.wm_attributes("-topmost", 1)
canvas = Canvas(tk, width=400, height=400, bd=0, highlightthickness=0)
canvas.pack()
tk.update()

paddle = Paddle(canvas, 'blue')
ball = Ball(canvas, paddle, 'red')

while 1:
        if ball.hit_bottom == False:
            ball.draw()
            paddle.draw()
        ball.draw()
        paddle.draw()
        tk.update_idletasks()
        tk.update()
        time.sleep(0.01)
 

	
Error:
Traceback (most recent call last): File "C:\Users\sheep\Desktop\Ayden's Apps\Bounce The Game.py", line 76, in <module> ball.draw() File "C:\Users\sheep\Desktop\Ayden's Apps\Bounce The Game.py", line 32, in draw if self.hit_paddle(pos) == True: File "C:\Users\sheep\Desktop\Ayden's Apps\Bounce The Game.py", line 21, in hit_paddle if pos[2] >= paddle_pos[0] and pos[0] <= paddle_pos[2]: NameError: name 'paddle_pos' is not defined
The error message is correct, paddle_pos has not been defined anywhere in the code you posted. It is perhaps paddle.pos but then you will have to change it in the Paddle class as well. It's best to ask this question of whoever wrote this code as the layout is not clear.
(Apr-25-2018, 08:09 PM)SheeppOSU Wrote: [ -> ]paddl_pos = self.canvas.coords(self.paddle.id)
if pos[2] >= paddle_pos[0] and pos[0] <= paddle_pos[2]:


Check your spelling :p
yes that worked but the blue paddle isn't moving at all