from Tkinter import *
window = Tk()
canvas = Canvas(window, width=500, height=500, background="green")
canvas.pack()

def mouse_paddle_move(event):
        mouseY = event.y
        current_coords = canvas.coords("paddle")
        x1 = current_coords[0]
        y1 = current_coords[1]
        x2 = current_coords[2]
        y2 = current_coords[3]
        height = (y2 - y1)
        canvas.coords("paddle", x1, mouseY - (height/2), x2, mouseY + 
(height/2))

def move_ball(speed_x, speed_y, score):
        box = canvas.bbox("ball")
        x1 = box[0]
        y1 = box[1]
        x2 = box[2]
        y2 = box[3]

        #if ball hits right wall, you lose
        if x2 >= 500:
                canvas.create_text(250, 250, text="Game Over!")
                return # exit function
        
        # if ball hits paddle...
        box = canvas.bbox("paddle")
        px1 = box[0]
        py1 = box[1]
        px2 = box[2]
        py2 = box[3]
        if x2 > px1 and y2 > py1 and y1 < py2:
                # bounce with 20% more speed
                speed_x = -1.2 * (abs(speed_x))
                speed_y = 1.2 * speed_y

                # update score
                score = score + 1
                canvas.itemconfig("score_text", text="Score: " + str(score))
        
        # if ball hits left wall it bounces
        if x1 <= 0:
                speed_x = -1 * speed_x
                
        # if ball hits top or bottom walls it bounces
        if y2 >= 500 or y1 <= 0:
                speed_y = -1 * speed_y
        
        canvas.move("ball", speed_x, speed_y)
        canvas.after(30, move_ball, speed_x, speed_y, score) # repeat in 30 ms

# create ball, paddle, and score text.
canvas.create_oval(225, 225, 275, 275, fill="blue", tags="ball")
canvas.create_rectangle(450, 200, 455, 300, fill="red", tags="paddle")
canvas.create_text(250, 10, tags = "score_text", text="Score: 0")

# make the ball move 10 pixels left, 7 down, with initial score at 0
move_ball(-10, 7, 0)

# setup mouse handler
canvas.bind('<Motion>', mouse_paddle_move)

mainloop()
-- 
https://mail.python.org/mailman/listinfo/python-list

Reply via email to