Python编写一个简单的图形界面游戏
import tkinter as tk
import random
class Game(tk.Frame):
def __init__(self, master=None):
super().__init__(master)
self.master = master
self.pack()
self.create_widgets()
self.canvas_width = 500
self.canvas_height = 400
self.ball_radius = 20
self.ball_color = "red"
self.score = 0
self.create_ball()
def create_widgets(self):
self.canvas = tk.Canvas(self, width=self.canvas_width, height=self.canvas_height)
self.canvas.pack()
self.score_label = tk.Label(self, text="Score: 0")
self.score_label.pack()
def create_ball(self):
x = random.randint(self.ball_radius, self.canvas_width - self.ball_radius)
y = random.randint(self.ball_radius, self.canvas_height - self.ball_radius)
self.ball = self.canvas.create_oval(x-self.ball_radius, y-self.ball_radius, x+self.ball_radius, y+self.ball_radius, fill=self.ball_color)
self.ball_dx = random.randint(-5, 5)
self.ball_dy = random.randint(-5, 5)
self.move_ball()
def move_ball(self):
self.canvas.move(self.ball, self.ball_dx, self.ball_dy)
x1, y1, x2, y2 = self.canvas.coords(self.ball)
if x1 <= 0 or x2 >= self.canvas_width:
self.ball_dx = -self.ball_dx
if y1 <= 0 or y2 >= self.canvas_height:
self.ball_dy = -self.ball_dy
self.check_collision()
self.after(10, self.move_ball)
def check_collision(self):
x1, y1, x2, y2 = self.canvas.coords(self.ball)
paddle_coords = self.canvas.coords(self.paddle)
if x2 >= paddle_coords[0] and x1 <= paddle_coords[2] and y2 >= paddle_coords[1] and y1 <= paddle_coords[3]:
self.increase_score()
self.canvas.delete(self.ball)
self.create_ball()
def increase_score(self):
self.score += 1
self.score_label["text"] = "Score: {}".format(self.score)
def start_game(self):
self.paddle = self.canvas.create_rectangle(200, 350, 300, 370, fill="blue")
self.canvas.bind("<Left>", self.move_left)
self.canvas.bind("<Right>", self.move_right)
self.canvas.focus_set()
def move_left(self, event):
if self.canvas.coords(self.paddle)[0] > 0:
self.canvas.move(self.paddle, -10, 0)
def move_right(self, event):
if self.canvas.coords(self.paddle)[2] < self.canvas_width:
self.canvas.move(self.paddle, 10, 0)
root = tk.Tk()
game = Game(master=root)
game.start_game()
game.mainloop()
