将打地鼠游戏写在一段代码中,不要调用
时间: 2024-01-21 12:19:13 浏览: 27
以下是一个简单的Python打地鼠游戏的代码,包括基本的游戏逻辑和图形界面:
```python
import tkinter as tk
import random
class WhacAMole:
def __init__(self, master):
self.master = master
self.width = 400
self.height = 400
self.score = 0
self.moles = []
self.timer_id = None
self.canvas = tk.Canvas(self.master, width=self.width, height=self.height)
self.canvas.pack()
self.canvas.create_text(50, 20, text='Score:', anchor='w')
self.score_label = self.canvas.create_text(100, 20, text='0', anchor='w')
self.canvas.bind('<Button-1>', self.hit_mole)
for i in range(3):
self.moles.append(self.create_mole(100 + i * 100, 200))
def create_mole(self, x, y):
mole = self.canvas.create_oval(x - 30, y - 30, x + 30, y + 30, fill='brown')
return mole
def hit_mole(self, event):
x, y = event.x, event.y
for mole in self.moles:
if self.canvas.coords(mole)[0] <= x <= self.canvas.coords(mole)[2] and \
self.canvas.coords(mole)[1] <= y <= self.canvas.coords(mole)[3]:
self.canvas.delete(mole)
self.moles.remove(mole)
self.score += 10
self.canvas.itemconfigure(self.score_label, text=str(self.score))
def start_game(self):
if self.timer_id is not None:
self.canvas.after_cancel(self.timer_id)
self.timer_id = self.canvas.after(1000, self.show_mole)
def show_mole(self):
if len(self.moles) == 0:
self.canvas.create_text(self.width/2, self.height/2, text='Game Over!', font=('Helvetica', 24))
return
mole = random.choice(self.moles)
self.canvas.itemconfigure(mole, fill='red')
self.canvas.after(500, lambda: self.hide_mole(mole))
def hide_mole(self, mole):
self.canvas.itemconfigure(mole, fill='brown')
self.timer_id = self.canvas.after(500, self.show_mole)
root = tk.Tk()
game = WhacAMole(root)
game.start_game()
root.mainloop()
```
在这个代码中,我们使用了Python的tkinter库来创建了一个简单的图形界面,然后通过创建一个WhacAMole类来实现游戏逻辑。其中,我们使用Canvas来绘制地鼠和分数,并通过bind方法绑定鼠标点击事件来实现打地鼠的功能。在游戏开始时,我们通过after方法来设置定时器,并在定时器回调函数中随机选择一个地鼠显示出来,然后在一定时间后将其隐藏。当所有地鼠都被打完时,游戏结束并显示游戏结束的提示信息。