اكتب كود لعبة الثعبان في واجهة tkinter
时间: 2024-10-01 18:01:24 浏览: 18
当然可以,我们可以使用Python和Tkinter库创建一个简单的蛇游戏。以下是一个基本的实现框架:
```python
import tkinter as tk
import random
# 设置窗口大小和标题
window = tk.Tk()
window.title("Snake Game")
window.geometry('400x400')
# 初始化蛇的位置和尺寸
snake_positions = [(100, 100), (95, 100), (90, 100)]
direction = 'right'
# 游戏中的食物位置
food_position = [random.randint(0, 380), random.randint(0, 380)]
def move_snake(event):
x, y = snake_positions[-1]
if event.keysym == "Up":
if direction != 'down':
snake_positions.insert(0, (x, y-20))
elif event.keysym == "Down":
if direction != 'up':
snake_positions.insert(0, (x, y+20))
elif event.keysym == "Left":
if direction != 'right':
snake_positions.insert(0, (x-20, y))
elif event.keysym == "Right":
if direction != 'left':
snake_positions.insert(0, (x+20, y))
# 绘制蛇的身体
def draw_snake():
for pos in snake_positions[:-1]:
tk.Canvas.create_rectangle(pos, pos, pos+20, pos+20, fill='grey')
tk.Canvas.create_rectangle(snake_positions[-1], snake_positions[-1], snake_positions[-1]+20, snake_positions[-1]+20, fill='green')
# 当鼠标点击时放置食物
def place_food():
global food_position
while food_position in snake_positions:
food_position = [random.randint(0, 380), random.randint(0, 380)]
tk.Canvas.create_oval(food_position-10, food_position-10, food_position+10, food_position+10, fill='red')
# 清除并重绘蛇和食物
canvas = tk.Canvas(window, bg='white', width=400, height=400)
canvas.pack()
draw_snake()
place_food()
# 添加事件监听器
window.bind("<KeyPress>", move_snake)
# 主循环
while True:
window.update_idletasks()
canvas.delete("all")
draw_snake()
if snake_positions == food_position:
# 如果蛇吃掉食物,增长身体长度
snake_positions.append(snake_positions[-1])
place_food()
else:
# 否则,移除蛇头
snake_positions.pop()
if snake_positions in snake_positions[1:]:
print("Game Over!")
break
window.mainloop()
```