用python写一个贪吃蛇
时间: 2024-01-07 13:05:12 浏览: 18
好的,下面是一个简单的贪吃蛇游戏的Python代码,希望能够帮助到你。代码中使用了tkinter和random模块。
```python
import tkinter as tk
import random
class SnakeGame:
def __init__(self, master, width=400, height=400, size=10):
self.master = master
self.width = width
self.height = height
self.size = size
self.canvas = tk.Canvas(self.master, width=self.width, height=self.height)
self.canvas.pack()
self.canvas.bind("<Key>", self.change_direction)
self.snake = [(self.width/2, self.height/2)]
self.direction = "Right"
self.food = self.spawn_food()
self.score = 0
self.draw_snake()
self.draw_food()
self.move_snake()
def draw_snake(self):
for i in self.snake:
self.canvas.create_rectangle(i[0], i[1], i[0]+self.size, i[1]+self.size, fill="green")
def erase_snake(self):
for i in self.snake:
self.canvas.create_rectangle(i[0], i[1], i[0]+self.size, i[1]+self.size, fill="white")
def spawn_food(self):
x = random.randint(0, self.width-self.size)
y = random.randint(0, self.height-self.size)
return (x//self.size*self.size, y//self.size*self.size)
def draw_food(self):
self.canvas.create_oval(self.food[0], self.food[1], self.food[0]+self.size, self.food[1]+self.size, fill="red")
def change_direction(self, event):
if event.keysym in ["Up", "Down", "Left", "Right"]:
self.direction = event.keysym
def move_snake(self):
head = self.snake[0]
if self.direction == "Up":
new_head = (head[0], head[1]-self.size)
elif self.direction == "Down":
new_head = (head[0], head[1]+self.size)
elif self.direction == "Left":
new_head = (head[0]-self.size, head[1])
elif self.direction == "Right":
new_head = (head[0]+self.size, head[1])
if new_head == self.food:
self.score += 1
self.food = self.spawn_food()
self.draw_food()
else:
self.snake.pop()
self.erase_snake()
if new_head[0] < 0 or new_head[0] >= self.width or new_head[1] < 0 or new_head[1] >= self.height or new_head in self.snake:
self.canvas.create_text(self.width/2, self.height/2, text="Game Over", font=("Arial", 20))
else:
self.snake.insert(0, new_head)
self.draw_snake()
self.master.after(100, self.move_snake)
root = tk.Tk()
game = SnakeGame(root)
root.mainloop()
```
运行代码后,可以使用方向键控制贪吃蛇的移动方向,吃到食物会得分,碰到墙壁或自身则游戏结束。