以下是一个简单的贪吃蛇代码示例,使用Python实现:
import curses
import time
from random import randint
# 初始化游戏界面
screen = curses.initscr()
curses.curs_set(0)
screen_height, screen_width = screen.getmaxyx()
# 初始化蛇的初始位置和长度
snake_x = screen_width // 4
snake_y = screen_height // 2
snake = [[snake_y, snake_x], [snake_y, snake_x-1], [snake_y, snake_x-2]]
# 初始化食物的位置
food = [screen_height//2, screen_width//2]
screen.addch(food[0], food[1], '*')
# 初始化初始运动方向和按键映射
key = curses.KEY_RIGHT
key_dict = {
curses.KEY_UP: 'UP',
curses.KEY_DOWN: 'DOWN',
curses.KEY_LEFT: 'LEFT',
curses.KEY_RIGHT: 'RIGHT',
}
# 画出蛇的初始状态
for y, x in snake:
screen.addch(y, x, '#')
# 循环接受用户按键并改变蛇的运动方向
while True:
next_key = screen.getch()
key = key_dict.get(next_key, key)
# 计算蛇头下一步的位置
if key == 'UP':
new_head = [snake[0][0] - 1, snake[0][1]]
elif key == 'DOWN':
new_head = [snake[0][0] + 1, snake[0][1]]
elif key == 'LEFT':
new_head = [snake[0][0], snake[0][1] - 1]
elif key == 'RIGHT':
new_head = [snake[0][0], snake[0][1] + 1]
# 判断是否吃到食物,如果是则在蛇尾增加一个节点
if new_head == food:
food = None
while food is None:
new_food = [randint(1, screen_height-2), randint(1, screen_width-2)]
food = new_food if new_food not in snake else None
screen.addch(food[0], food[1], '*')
else:
tail = snake.pop()
screen.addch(tail[0], tail[1], ' ')
# 判断游戏结束的条件
if new_head[0] in [0, screen_height-1] or new_head[1] in [0, screen_width-1] or new_head in snake:
curses.endwin()
quit()
# 将新的蛇头插入列表第一个位置
snake.insert(0, new_head)
screen.addch(snake[0][0], snake[0][1], '#')
screen.refresh()
time.sleep(0.1)
该代码使用curses库实现了在终端上的贪吃蛇游戏,具体实现方式如下:
- 初始化游戏界面,设置蛇和食物的位置、初始化运动方向和按键映射等。
- 循环接受用户按键并改变蛇的运动方向,计算蛇头下一步的位置,并判断是否吃到食物。
- 如果吃到食物,则在蛇尾增加一个节点,重新生成食物;否则,删除蛇尾节点。
- 判断游戏结束的条件,如果蛇头碰壁或者碰到自己,则游戏结束。
- 将新的蛇头插入列表第一个位置,画出新的蛇。