请编程实现贪吃蛇游戏。首先自动生成一个NN(如2020)的空间,在内部随机生成1个$代表食物,随机生成一条长度为5的蛇,蛇的身体用心形(ASCII码为003)显示,蛇头用笑脸(ASCII码为002)显示。自行定义蛇的起始位置。用户随意按键后蛇即刻开始自行行走,可设置行走速率为0.5秒。监测用户按键,根据用户的选择方向键,改变蛇的行走方向。在遇到食物$时,长度增一,且随机生成另一个食物$。倘若蛇碰到墙壁,则游戏失败,并打印蛇最终的长度。
时间: 2023-07-31 20:07:55 浏览: 58
下面是 Python 3 实现的贪吃蛇游戏代码:
```python
import random
import time
import os
# 定义常量
WIDTH = 20
HEIGHT = 20
FOOD = "$"
SNAKE = "♥"
HEAD = "☻"
BLANK = " "
# 初始化游戏界面
board = [[BLANK for y in range(HEIGHT)] for x in range(WIDTH)]
# 随机生成初始蛇
snake = [(random.randint(0, WIDTH-1), random.randint(0, HEIGHT-1))]
for i in range(4):
snake.append((snake[-1][0], snake[-1][1]+1))
# 随机生成食物
food = (random.randint(0, WIDTH-1), random.randint(0, HEIGHT-1))
# 定义方向常量
UP = (-1, 0)
DOWN = (1, 0)
LEFT = (0, -1)
RIGHT = (0, 1)
# 定义游戏逻辑函数
def move(direction):
global snake, food
# 计算新的蛇头位置
head = (snake[-1][0]+direction[0], snake[-1][1]+direction[1])
# 判断是否撞墙
if head[0] < 0 or head[0] >= WIDTH or head[1] < 0 or head[1] >= HEIGHT:
return False
# 判断是否吃到食物
if head == food:
snake.append(head)
food = (random.randint(0, WIDTH-1), random.randint(0, HEIGHT-1))
else:
snake.pop(0)
snake.append(head)
# 判断是否撞到自己
if len(set(snake)) != len(snake):
return False
return True
# 游戏循环
while True:
# 清空界面
os.system("cls" if os.name == "nt" else "clear")
# 更新蛇位置
if not move(RIGHT):
break
# 显示界面
board = [[BLANK for y in range(HEIGHT)] for x in range(WIDTH)]
for s in snake:
board[s[0]][s[1]] = SNAKE
board[snake[-1][0]][snake[-1][1]] = HEAD
board[food[0]][food[1]] = FOOD
for i in range(WIDTH):
for j in range(HEIGHT):
print(board[i][j], end=" ")
print()
# 等待一段时间
time.sleep(0.5)
```
在运行代码时,用户可以使用方向键控制蛇的移动方向。当蛇撞墙或撞到自己时,游戏结束,并打印蛇的长度。
相关推荐
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)