Python Forum
Bounce Game Problems - Printable Version

+- Python Forum (https://python-forum.io)
+-- Forum: Python Coding (https://python-forum.io/forum-7.html)
+--- Forum: General Coding Help (https://python-forum.io/forum-8.html)
+--- Thread: Bounce Game Problems (/thread-9736.html)



Bounce Game Problems - SheeppOSU - Apr-25-2018

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



RE: Bounce Game Problems - woooee - Apr-25-2018

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.


RE: Bounce Game Problems - nilamo - Apr-25-2018

(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


RE: Bounce Game Problems - SheeppOSU - May-07-2018

yes that worked but the blue paddle isn't moving at all