import curses
import time


def create_map():
    # 创建一个空的地图矩阵
    map = [[' ' for _ in range(50)] for _ in range(50)]
    return map


def draw_map(map, turtle_pos, dog1_pos, dog2_pos):
    for row in range(50):
        for col in range(50):
            if (row, col) == turtle_pos:
                map[row][col] = '乌'
            elif (row, col) == dog1_pos or (row, col) == dog2_pos:
                map[row][col] = '狗'
            print(map[row][col], end='')
        print()


def move_turtle(turtle_pos, direction):
    # 计算乌龟的新位置
    new_row, new_col = turtle_pos
    if direction == curses.KEY_UP:
        new_row -= 1
    elif direction == curses.KEY_DOWN:
        new_row += 1
    elif direction == curses.KEY_LEFT:
        new_col -= 1
    elif direction == curses.KEY_RIGHT:
        new_col += 1
    return new_row, new_col


def main(stdscr):
    # 初始化 curses
    curses.curs_set(0)
    stdscr.nodelay(1)
    stdscr.timeout(100)

    # 初始化地图和乌龟狗的位置
    turtle_pos = (25, 25)
    dog1_pos = (10, 10)
    dog2_pos = (20, 30)
    map = create_map()

    while True:
        stdscr.clear()

        draw_map(map, turtle_pos, dog1_pos, dog2_pos)
        stdscr.addstr(50, 0, '请使用方向键控制乌龟移动,按 Q 退出')

        key = stdscr.getch()

        if key == ord('q') or key == ord('Q'):
            break
        elif key in {curses.KEY_UP, curses.KEY_DOWN, curses.KEY_LEFT, curses.KEY_RIGHT}:
            new_turtle_pos = move_turtle(turtle_pos, key)

            if new_turtle_pos[0] < 0 or new_turtle_pos[0] >= 50 or new_turtle_pos[1] < 0 or new_turtle_pos[1] >= 50:
                stdscr.addstr(51, 0, '乌龟撞墙了,游戏结束!')
                stdscr.refresh()
                break

            if new_turtle_pos == dog1_pos or new_turtle_pos == dog2_pos:
                stdscr.addstr(51, 0, '乌龟被狗抓住了,游戏结束!')
                stdscr.refresh()
                break

            turtle_pos = new_turtle_pos

        stdscr.refresh()

    time.sleep(3)  # 优化:在游戏结束后增加3秒的延迟时间
    curses.endwin()  # 优化:在游戏结束后调用curses.endwin()以恢复终端设置


# 运行主程序
curses.wrapper(main)

代码优化说明:

  1. 添加 time.sleep(): 在游戏结束后,添加 time.sleep(3) 可以暂停 3 秒,以便玩家看到游戏结束信息。
  2. 调用 curses.endwin(): 在游戏结束后,调用 curses.endwin() 函数可以重置终端设置,使其恢复到正常状态。

Windows 兼容性:

在 Windows 上运行 curses 程序需要安装 windows-curses 库。可以使用 pip 安装:

pip install windows-curses

总结:

通过添加 time.sleep()curses.endwin(),并确保在 Windows 上安装了 windows-curses 库,可以优化代码并在 Windows 系统上成功运行该 Python Curses 游戏。

Python Curses游戏优化:解决Windows运行问题

原文地址: https://www.cveoy.top/t/topic/CKZ 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录