Python curses 库实现乌龟躲避狗游戏
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.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)
游戏玩法:
- 使用方向键控制乌龟移动。
- 躲避两条狗。
- 如果乌龟撞到墙壁或被狗抓住,游戏结束。
代码说明:
- 使用
curses库实现游戏界面。 create_map()函数创建游戏地图,用空格填充。draw_map()函数绘制地图,将乌龟和狗的坐标绘制到地图上。move_turtle()函数根据方向键移动乌龟坐标。main()函数是游戏主函数,控制游戏循环和事件处理。
运行游戏:
- 保存代码为
.py文件。 - 运行该文件。
- 使用方向键控制乌龟移动,躲避两条狗。
注意:
- 该游戏比较简单,可以根据需要进行扩展。
- 可以在游戏开始前设置乌龟和狗的初始位置。
- 可以添加游戏难度等级,比如增加狗的数量或速度。
- 可以添加分数系统,记录玩家得分。
希望您玩得愉快!
原文地址: https://www.cveoy.top/t/topic/CUJ 著作权归作者所有。请勿转载和采集!