我需要一个贪吃蛇的源代码
时间: 2024-11-30 09:20:07 浏览: 17
制作一个基本的贪吃蛇游戏的源代码可能会包含以下几个部分,这里提供一个简单的Python版本作为起点:
```python
import curses
import random
# 初始化屏幕和蛇的位置
def init(screen):
curses.curs_set(0)
screen.clear()
snake = [(20, 20), (21, 20), (22, 20)] # 蛇的身体
food = (random.randint(0, 49), random.randint(0, 49)) # 食物位置
return snake, food
# 更新屏幕和移动蛇
def update(screen, snake, food):
x, y = snake[0]
dx, dy = (x - snake[-1][0], y - snake[-1][1]) # 方向
if (dx, dy) == (-dy, dx): # 右上左下,对应WASD
dx, dy = 0, 1
elif (dx, dy) == (dy, -dx): # 左上右下,对应ADSW
dx, dy = -1, 0
screen.addch(y, x, curses.ACS_CKBOARD) # 清除蛇的当前位置
snake.insert(0, (x + dx, y + dy)) # 移动蛇头
if snake[0] == food: # 吃到食物
food = (random.randint(0, 49), random.randint(0, 49))
snake.append(snake.pop(0)) # 增加蛇身长度
else:
snake.pop() # 如果蛇头碰到边界,蛇身缩短
draw_screen(screen, snake, food)
# 绘制屏幕
def draw_screen(screen, snake, food):
screen.clear()
for pos in snake:
screen.addch(pos[1], pos[0], curses.ACS_CKBOARD)
screen.addch(food[1], food[0], curses.ACS_PI)
curses.doupdate()
# 主循环
def main():
screen = curses.initscr()
curses.curs_set(0)
snake, food = init(screen)
try:
while True:
c = screen.getch()
if c == ord('w') or c == curses.KEY_UP:
update(screen, snake, food)
elif c == ord('s') or c == curses.KEY_DOWN:
update(screen, snake, food)
elif c == ord('a') or c == curses.KEY_LEFT:
update(screen, snake, food)
elif c == ord('d') or c == curses.KEY_RIGHT:
update(screen, snake, food)
finally:
curses.endwin()
if __name__ == "__main__":
main()
```
这是一个非常基础的版本,你可以根据需求添加更多功能,如碰撞检测、得分系统、键盘方向切换等。为了在终端运行这个代码,你需要先安装curses库,然后在支持文本模式的环境中运行。
阅读全文