用python做一个小游戏

全民打砖块

from tkinter import*
import time
tk=Tk()
tk.title("全民打砖块")
tk.resizable(0,0)
canvas=Canvas(tk,width=500,height=400,background="blue")
canvas.pack()
brick_list=[]
class Ball():
    def __init__(self,canvas,color,racket,brick_list):
        self.canvas=canvas
        self.racket=racket
        self.brick_list=brick_list
        self.id=canvas.create_oval(10,10,25,25,fill=color)
        self.canvas.move(self.id,245,100)
        self.x=-1
        self.y=-1
        self.flag=1
    def draw(self):
        self.canvas.move(self.id,self.x,self.y)
        pos=self.canvas.coords(self.id)
        if pos[0]<=0:
            self.x=1
        elif pos[1]<=0:
            self.y=1
        elif pos[2]>=500:
            self.x=-1
        elif pos[3]>=400:
            self.flag=0
    def hit_racket(self):
        pos=self.canvas.coords(self.id)
        racket_pos=self.canvas.coords(self.racket.id)
        if pos[2]>=racket_pos[0] and pos[0] <=racket_pos[2]:
            if pos[3]>=racket_pos[1] and pos[3] <=racket_pos[3]:
                self.y=-self.y
    def hit_brick(self):
        pos = self.canvas.coords(self.id)
        for brick in self.brick_list:
            brick_pos = self.canvas.coords(brick.id)
            if pos[2] >= brick_pos[0] and pos[0] <=brick_pos[2]:
                if pos[3] >= brick_pos[1] and pos[1] <=brick_pos[3]:
                    self.brick_list.remove(brick)
                    brick.set_color("white")
                    self.y=-self.y
class Racket:
    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.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] >=500:
            self.x=0
    def turn_left(self,evt):
        self.x=-3
    def turn_right(self,evt):
        self.x=3
class Brick:
    def __init__(self,canvas,color,x,y):
        self.canvas=canvas
        self.id=canvas.create_rectangle(0,0,30,10,fill = color)
        self.canvas.move(self.id,x,y)
        self.x=x
        self.y=y
        self.canvas_width = self.canvas.winfo_width()
    def set_color(self,color):
        self.id=canvas.create_rectangle(0,0,30,10,fill = color)
        self.canvas.move(self.id,self.x,self.y)
for i in range(1,5):
    for j in range(1,9):
        brick=Brick(canvas,'yellow',j*50+10,i*20+10)
        brick_list.append(brick)
racket=Racket(canvas,"white")
ball=Ball(canvas,"red",racket,brick_list)
while True:
    if(ball.flag == 1):
        ball.hit_racket()
        ball.hit_brick()
        ball.draw()
        racket.draw()
        tk.update()
        time.sleep(0.01)
        if(len(brick_list)==0):
            canvas.create_text(230,200,text='你好厉害',font=('Courier',30))
            time.sleep(2)
            break
    else:
        canvas.create_text(230,200,text='GAME OVER!',font=('Courier',30))
        time.sleep(2)
        break

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值