使用Python内置库编写贪吃蛇代码
时间: 2023-11-05 08:15:18 浏览: 78
好的,我可以给你提供一个简单的Python内置库来编写贪吃蛇游戏的示例代码,这个库就是tkinter。以下是一个简单的示例代码:
```python
import tkinter as tk
import random
# 定义游戏的常量
CELL_SIZE = 20 # 每个方格的大小
GRID_WIDTH = 30 # 网格的宽度(单位:方格)
GRID_HEIGHT = 20 # 网格的高度(单位:方格)
DELAY = 100 # 游戏的刷新速度(单位:毫秒)
# 定义游戏变量
score = 0 # 分数
snake = [(0, 0)] # 蛇的位置,初始为左上角
direction = "Right" # 蛇的移动方向
food = None # 食物的位置
# 初始化游戏界面
root = tk.Tk()
root.title("贪吃蛇游戏")
canvas = tk.Canvas(root, width=GRID_WIDTH * CELL_SIZE, height=GRID_HEIGHT * CELL_SIZE, bg="white")
canvas.pack()
# 绘制初始界面
def draw():
global score, snake, direction, food
canvas.delete("all")
# 绘制蛇的身体
for x, y in snake:
canvas.create_rectangle(x * CELL_SIZE, y * CELL_SIZE, (x + 1) * CELL_SIZE, (y + 1) * CELL_SIZE, fill="green")
# 绘制食物
if food is None:
# 随机生成食物的位置
while True:
x = random.randint(0, GRID_WIDTH - 1)
y = random.randint(0, GRID_HEIGHT - 1)
if (x, y) not in snake:
food = (x, y)
break
canvas.create_oval(food[0] * CELL_SIZE, food[1] * CELL_SIZE, (food[0] + 1) * CELL_SIZE, (food[1] + 1) * CELL_SIZE, fill="red")
# 绘制分数
canvas.create_text(GRID_WIDTH * CELL_SIZE - 50, 10, text=f"Score: {score}")
# 处理键盘事件
def on_key_press(event):
global direction
if event.keysym == "Up" and direction != "Down":
direction = "Up"
elif event.keysym == "Down" and direction != "Up":
direction = "Down"
elif event.keysym == "Left" and direction != "Right":
direction = "Left"
elif event.keysym == "Right" and direction != "Left":
direction = "Right"
# 更新游戏状态
def update():
global score, snake, direction, food
# 计算蛇头的新位置
x, y = snake[-1]
if direction == "Up":
y -= 1
elif direction == "Down":
y += 1
elif direction == "Left":
x -= 1
elif direction == "Right":
x += 1
# 判断蛇是否撞到墙壁
if x < 0 or x >= GRID_WIDTH or y < 0 or y >= GRID_HEIGHT:
tk.messagebox.showinfo("游戏结束", f"你的得分是:{score}")
root.quit()
return
# 判断蛇是否吃到了食物
if (x, y) == food:
score += 1
food = None
else:
snake.pop(0)
# 判断蛇是否撞到了自己
if (x, y) in snake:
tk.messagebox.showinfo("游戏结束", f"你的得分是:{score}")
root.quit()
return
snake.append((x, y))
# 绘制新的游戏界面
draw()
# 延时更新游戏状态
root.after(DELAY, update)
# 绑定键盘事件
root.bind("<KeyPress>", on_key_press)
# 开始游戏
update()
# 进入消息循环
root.mainloop()
```
这段代码使用了Python的内置库tkinter来绘制游戏界面,使用了Canvas组件来绘制蛇、食物和分数等。具体实现过程中,使用了Canvas组件的create_rectangle()方法来绘制蛇的身体,使用了create_oval()方法来绘制食物,使用了create_text()方法来绘制分数。同时,还使用了Tkinter的messagebox组件来显示游戏结束的消息。
阅读全文