Python 贪吃蛇游戏通常是一个控制台程序,玩家通过键盘上的方向键来控制蛇的移动方向,吃到食物可以让蛇变长,如果蛇头碰到了自己的身体或者碰到了墙壁,则游戏结束。下面是一个简单的 Python 贪吃蛇游戏的代码示例,其中包括了基本的游戏逻辑:
import random import curses # 初始化屏幕 s = curses.initscr() curses.curs_set(0) # 设置屏幕大小 sh, sw = s.getmaxyx() w = curses.newwin(sh, sw, 0, 0) w.keypad(1) w.timeout(100) # 初始化蛇和食物 snake_x = sw // 4 snake_y = sh // 2 snake = [ [snake_y, snake_x], [snake_y, snake_x - 1], [snake_y, snake_x - 2] ] food = [sh // 2, sw // 2] w.addch(food[0], food[1], curses.ACS_PI) # 初始化游戏分数 score = 0 # 设置移动方向 key = curses.KEY_RIGHT # 游戏循环 while True: # 获取键盘输入 next_key = w.getch() key = key if next_key == -1 else next_key # 计算蛇头的下一个位置 snake_head = [snake[0][0], snake[0][1]] if key == curses.KEY_DOWN: snake_head[0] += 1 if key == curses.KEY_UP: snake_head[0] -= 1 if key == curses.KEY_LEFT: snake_head[1] -= 1 if key == curses.KEY_RIGHT: snake_head[1] += 1 # 更新蛇的位置 snake.insert(0, snake_head) if snake[0] == food: # 如果蛇头碰到了食物,蛇变长,重新生成食物 score += 1 food = None while food is None: nf = [ random.randint(1, sh - 1), random.randint(1, sw - 1) ] food = nf if nf not in snake else None w.addch(food[0], food[1], curses.ACS_PI) else: # 如果蛇没有碰到食物,删除蛇尾 tail = snake.pop() w.addch(tail[0], tail[1], ' ') # 检查蛇头是否碰到了墙壁或者自己的身体 if ( snake_head[0] in [0, sh - 1] or snake_head[1] in [0, sw - 1] or snake_head in snake[1:] ): curses.endwin() print("Game over!") print(f"Score: {score}") break # 更新屏幕显示 w.addch(snake[0][0], snake[0][1], curses.ACS_C for i in range(1, len(snake)): w.addch(snake[i][0], snake[i][1], curses.ACS_BLOCK) w.addch(snake[0][0], snake[0][1], curses.ACS_DIAMOND) # 更新屏幕显示 w.refresh() //关闭屏幕 curses.endwin()
这个示例代码使用了 Python 的 curses 库来实现控制台界面,同时通过不断更新屏幕上蛇的位置和食物的位置来模拟蛇的移动。在游戏循环中,首先获取玩家的键盘输入,然后根据输入更新蛇头的位置,并检查蛇是否吃到了食物或者碰到了墙壁或者自己的身体。如果蛇吃到了食物,则蛇变长,并在新的位置上生成新的食物。如果蛇碰到了墙壁或者自己的身体,则游戏结束,输出分数并退出游戏循环。最后,关闭屏幕并结束游戏。
猜你喜欢:C语言实现贪吃蛇游戏计分代码及设计思路
评论