bangwoyongpython的tkinter写一个打砖块而且要有标题界面
以下是一个使用tkinter编写的打砖块游戏,并包含标题界面的示例代码:
import tkinter as tk
import random
class BrickBreaker(tk.Tk):
def __init__(self):
super().__init__()
self.title("打砖块游戏")
self.geometry("400x400")
self.canvas = tk.Canvas(self, width=400, height=400, bg='white')
self.canvas.pack()
self.paddle = self.canvas.create_rectangle(0, 350, 100, 360, fill='blue')
self.ball = self.canvas.create_oval(0, 0, 10, 10, fill='red')
self.score = self.canvas.create_text(200, 200, text='Score: 0', fill='black')
self.canvas.bind_all('<KeyPress-Left>', self.move_paddle_left)
self.canvas.bind_all('<KeyPress-Right>', self.move_paddle_right)
self.ball_dx = 1
self.ball_dy = -1
self.paddle_dx = 0
self.bricks = []
self.create_bricks()
self.update()
def create_bricks(self):
colors = ['red', 'orange', 'yellow', 'green', 'blue']
brick_width = 50
brick_height = 20
for i in range(5):
for j in range(8):
x1 = j * brick_width
y1 = i * brick_height + 50
x2 = x1 + brick_width
y2 = y1 + brick_height
color = colors[i]
brick = self.canvas.create_rectangle(x1, y1, x2, y2, fill=color)
self.bricks.append(brick)
def move_paddle_left(self, event):
self.paddle_dx = -1
def move_paddle_right(self, event):
self.paddle_dx = 1
def update(self):
self.canvas.move(self.ball, self.ball_dx, self.ball_dy)
self.canvas.move(self.paddle, self.paddle_dx, 0)
ball_coords = self.canvas.coords(self.ball)
paddle_coords = self.canvas.coords(self.paddle)
if ball_coords[0] <= 0 or ball_coords[2] >= 400:
self.ball_dx *= -1
if ball_coords[1] <= 0:
self.ball_dy *= -1
if ball_coords[3] >= 350 and paddle_coords[0] <= ball_coords[2] <= paddle_coords[2]:
self.ball_dy *= -1
for brick in self.bricks:
brick_coords = self.canvas.coords(brick)
if ball_coords[0] <= brick_coords[2] and ball_coords[2] >= brick_coords[0] and ball_coords[1] <= brick_coords[3] and ball_coords[3] >= brick_coords[1]:
self.canvas.delete(brick)
self.bricks.remove(brick)
self.ball_dy *= -1
if len(self.bricks) == 0:
self.canvas.create_text(200, 200, text='You Win!', fill='black', font=('Arial', 20))
self.canvas.unbind_all('<KeyPress-Left>')
self.canvas.unbind_all('<KeyPress-Right>')
self.canvas.itemconfig(self.score, text='Score: {}'.format(40 - len(self.bricks)))
self.after(10, self.update)
game = BrickBreaker()
game.mainloop()
该示例代码使用tkinter创建了一个窗口,包含一个球、一个挡板和一些砖块。球会从顶部开始下落,玩家通过移动挡板来反弹球,击碎砖块。游戏结束后会显示分数和胜利提示。
请注意,这只是一个简单的示例代码,你可以根据自己的需求进行修改和扩展
原文地址: http://www.cveoy.top/t/topic/h6DQ 著作权归作者所有。请勿转载和采集!