Python小游戏(1)附带源码

贪吃蛇

import curses
from random import randint

# 初始化窗口
curses.initscr()
win = curses.newwin(20, 60, 0, 0)  # 创建新窗口:高20、宽60
win.keypad(1)  # 支持键盘输入
curses.noecho()  # 关闭输入回显
curses.curs_set(0)  # 隐藏光标显示
win.border(0)  # 设置窗口边界
win.nodelay(1)  # 设置nodelay,使得getch()方法非阻塞

# 蛇和食物的初始状态
snake = [(4, 10), (4, 9), (4, 8)]  # 蛇的初始位置
food = (10, 20)  # 食物的初始位置

# 游戏初始分数和速度
score = 0  # 初始分数为0
speed = 150  # 初始速度为150毫秒

# 游戏主循环标志
ESC = 27  # ESC键的ASCII码为27
key = curses.KEY_RIGHT  # 初始移动方向为向右

# 开始游戏主循环
while key != ESC:  # 当用户未按下ESC键时,循环继续
    win.addstr(0, 2, f'Score : {score} ')  # 显示分数
    win.timeout(speed)  # 设置延迟

    prev_key = key  # 保存上次按键
    event = win.getch()  # 获取用户按键
    key = event if event != -1 else prev_key  # 如果用户按下了新键,则更新方向键

    # 如果新的按键没有按下,则使用先前的按键
    if key not in [curses.KEY_LEFT, curses.KEY_RIGHT, curses.KEY_UP, curses.KEY_DOWN, ESC]:
        key = prev_key

    # 计算蛇的新头部位置
    y = snake[0][0]
    x = snake[0][1]
    if key == curses.KEY_DOWN:
        y += 1
    if key == curses.KEY_UP:
        y -= 1
    if key == curses.KEY_LEFT:
        x -= 1
    if key == curses.KEY_RIGHT:
        x += 1

    snake.insert(0, (y, x))  # 将新头部添加到蛇的头部

    # 检查蛇是否撞墙或撞到自己
    if y == 0: break
    if y == 19: break
    if x == 0: break
    if x == 59: break
    if snake[0] in snake[1:]: break

    if snake[0] == food:
        # 吃到食物
        score += 1
        food = ()
        while food == ():
            food = (randint(1,18), randint(1,58))
            if food in snake:
                food = ()
        win.addch(food[0], food[1], '*')
    else:
        # 移动:删除蛇的尾巴
        last = snake.pop()
        win.addch(last[0], last[1], ' ')

    win.addch(snake[0][0], snake[0][1], '#')

# 游戏结束
curses.endwin()
print(f"Final score = {score}")

   极简版贪吃蛇,代码使用了curses库,

  1. 初始化窗口:使用curses.initscr()初始化窗口,创建一个高20、宽60的新窗口,支持键盘输入,关闭输入回显,隐藏光标显示,设置窗口边界,设置nodelay使得getch()方法非阻塞。
  2. 初始化蛇和食物:蛇的初始位置为(4,10)、(4,9)、(4,8),食物的初始位置为(10,20)。
  3. 游戏主循环:当用户未按下ESC键时,循环继续。在每次循环中,显示分数,设置延迟,获取用户按键,计算蛇的新头部位置,检查蛇是否撞墙或撞到自己,如果吃到食物则更新分数和食物位置,否则移动蛇的尾巴。
  4. 游戏结束:当用户按下ESC键或蛇撞墙/撞到自己时,游戏结束,显示最终分数。

相关推荐

  1. Python游戏1附带

    2024-04-05 18:40:03       13 阅读
  2. Python实现批量修改文件名(附带

    2024-04-05 18:40:03       17 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-04-05 18:40:03       16 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-04-05 18:40:03       16 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-04-05 18:40:03       15 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-04-05 18:40:03       18 阅读

热门阅读

  1. 体感游戏开发:体感游戏常用技术

    2024-04-05 18:40:03       19 阅读
  2. 爬取高校专业信息的Python爬虫简介与实践

    2024-04-05 18:40:03       17 阅读
  3. nginx压缩文件gzip配置如何实现

    2024-04-05 18:40:03       15 阅读
  4. GPS工具箱导出数据2

    2024-04-05 18:40:03       13 阅读
  5. Zookeeper脑裂解决方案

    2024-04-05 18:40:03       15 阅读
  6. Zookeeper 中的 CAP

    2024-04-05 18:40:03       12 阅读
  7. tcp服务端,时刻在线

    2024-04-05 18:40:03       15 阅读