Python 小程序:乌龟探险 - 20x20 地图上的方向键控制游戏
import curses
def create_map(): # 创建一个空的地图矩阵 map = [[' ' for _ in range(20)] for _ in range(20)] return map
def draw_map(stdscr, map, turtle_pos, dog1_pos, dog2_pos): for row in range(20): for col in range(20): if (row, col) == turtle_pos: map[row][col] = '乌' elif (row, col) == dog1_pos or (row, col) == dog2_pos: map[row][col] = '狗' stdscr.addch(row, col, map[row][col]) stdscr.refresh()
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 = (10, 10)
dog1_pos = (5, 15)
dog2_pos = (15, 5)
map = create_map()
while True:
stdscr.clear()
draw_map(stdscr, map, turtle_pos, dog1_pos, dog2_pos)
stdscr.addstr(20, 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] >= 20 or new_turtle_pos[1] < 0 or new_turtle_pos[1] >= 20:
stdscr.addstr(21, 0, '乌龟撞墙了,游戏结束!')
stdscr.refresh()
break
if new_turtle_pos == dog1_pos or new_turtle_pos == dog2_pos:
stdscr.addstr(21, 0, '乌龟被狗抓住了,游戏结束!')
stdscr.refresh()
break
turtle_pos = new_turtle_pos
stdscr.getch()
运行主程序
curses.wrapper(main)
原文地址: https://www.cveoy.top/t/topic/CQT 著作权归作者所有。请勿转载和采集!