Ball bounce game python

 from tkinter import *

import time
import random

root = Tk()
root.title("Bounce")
root.geometry("500x570")
root.resizable(00)
root.wm_attributes("-topmost"1)
canvas = Canvas(root, width=500height=500bd=0highlightthickness=0highlightbackground="Red"bg="Blue")
canvas.pack(padx=10pady=10)
score = Label(height=50width=80text="Score: 00"font="Consolas 14 bold")
score.pack(side="left")
root.update()


class Ball:
    def __init__(selfcanvascolorpaddlebricksscore):
        self.bricks = bricks
        self.canvas = canvas
        self.paddle = paddle
        self.score = score
        self.bottom_hit = False
        self.hit = 0
        self.id = canvas.create_oval(10102525fill=color, width=1)
        self.canvas.move(self.id, 230461)
        start = [43.83.63.43.232.82.6]
        random.shuffle(start)
        #print(start)
        self.x = start[0]
        self.y = -start[0]
        self.canvas.move(self.id, self.x, self.y)
        self.canvas_height = canvas.winfo_height()
        self.canvas_width = canvas.winfo_width()

    def brick_hit(selfpos):
        for brick_line in self.bricks:
            for brick in brick_line:
                brick_pos = self.canvas.coords(brick.id)
                #print(brick_pos)
                try:
                    if pos[2] >= brick_pos[0and pos[0] <= brick_pos[2]:
                        if pos[3] >= brick_pos[1and pos[1] <= brick_pos[3]:
                            canvas.bell()
                            self.hit += 1
                            self.score.configure(text="Score: " + str(self.hit))
                            self.canvas.delete(brick.id)
                            return True
                except:
                    continue
        return False
    
        
    def paddle_hit(selfpos):
        paddle_pos = self.canvas.coords(self.paddle.id)
        if pos[2] >= paddle_pos[0and pos[0] <= paddle_pos[2]:
            if pos[3] >= paddle_pos[1and pos[1] <= paddle_pos[3]:
                #print("paddle hit")
                return True
            return False

    def draw(self):
        self.canvas.move(self.id, self.x, self.y)
        pos = self.canvas.coords(self.id)
        #print(pos)
        start = [43.83.63.43.232.82.6]
        random.shuffle(start)
        if self.brick_hit(pos):
            self.y = start[0]
        if pos[1] <= 0:
            self.y = start[0]
        if pos[3] >= self.canvas_height:
            self.bottom_hit = True
        if pos[0] <= 0:
            self.x = start[0]
        if pos[2] >= self.canvas_width:
            self.x = -start[0]
        if self.paddle_hit(pos):
            self.y = -start[0]

        
class Paddle:
    def __init__(selfcanvascolor):
        self.canvas = canvas
        self.id = canvas.create_rectangle(0010010fill=color)
        self.canvas.move(self.id, 200485)
        self.x = 0
        self.pausec=0
        self.canvas_width = canvas.winfo_width()
        self.canvas.bind_all("<Left>"self.turn_left)
        self.canvas.bind_all("<Right>"self.turn_right)
        self.canvas.bind_all("<space>"self.pauser)
        

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

    def turn_left(selfevent):
        self.x = -3.5

    def turn_right(selfevent):
        self.x = 3.5

    def pauser(self,event):
        self.pausec+=1
        if self.pausec==2:
            self.pausec=0
    

class Bricks:
    def __init__(selfcanvascolor):
        self.canvas = canvas
        self.id = canvas.create_oval(552525fill=color, width=2)


playing = False


def start_game(event):
    global playing
    if playing is False:
        playing = True
        score.configure(text="Score: 00")
        canvas.delete("all")
        BALL_COLOR = ["red""yellow""white"]
        BRICK_COLOR = ["PeachPuff3""dark slate gray""rosy brown""light goldenrod yellow""turquoise3""salmon",
                       "light steel blue""dark khaki""pale violet red""orchid""tan""MistyRose2",
                       "DodgerBlue4""wheat2""RosyBrown2""bisque3""DarkSeaGreen1"]
        random.shuffle(BALL_COLOR)
        paddle = Paddle(canvas, "blue")
        bricks = []
        for i in range(05):
            b = []
            for j in range(019):
                random.shuffle(BRICK_COLOR)
                tmp = Bricks(canvas, BRICK_COLOR[0])
                b.append(tmp)
            bricks.append(b)

        for i in range(05):
            for j in range(019):
                canvas.move(bricks[i][j].id, 25 * j, 25 * i)

        ball = Ball(canvas, BALL_COLOR[0], paddle, bricks, score)
        root.update_idletasks()
        root.update()

        time.sleep(1)
        while 1:
            if paddle.pausec !=1:
                try:
                    canvas.delete(m)
                    del m
                except:
                    pass
                if not ball.bottom_hit:
                    ball.draw()
                    paddle.draw()
                    root.update_idletasks()
                    root.update()
                    time.sleep(0.01)
                    if ball.hit==95:
                        canvas.create_text(250250text="YOU WON !!"fill="yellow"font="Consolas 24 ")
                        root.update_idletasks()
                        root.update()
                        playing = False
                        break
                else:
                    canvas.create_text(250250text="GAME OVER!!"fill="red"font="Consolas 24 ")
                    root.update_idletasks()
                    root.update()
                    playing = False
                    break
            else:
                try:
                    if m==None:pass
                except:
                    m=canvas.create_text(250250text="PAUSE!!"fill="green"font="Consolas 24 ")
                root.update_idletasks()
                root.update()


root.bind_all("<Return>", start_game)
canvas.create_text(250250text="Press Enter to start Game!!"fill="red"font="Consolas 18")
j=canvas.find_all()
root.mainloop()






Comments

Popular Posts