自定义roguelike游戏的帧打印功能无法正常运行是什么原因?
代码问题排查与修复方案
你遇到的帧不更新问题确实是循环逻辑错误导致的,核心问题有3个:
- 循环内重复重置坐标:
x = 0、y = 0写在了循环体最开头,每一轮循环都会把上一轮修改后的坐标值覆盖,哪怕你按d把x改成了1,下一轮循环又会被重置为0,所以画面永远停留在初始帧。 - 缩进语法错误:
lv1函数定义后,下属的while循环及后续代码没有缩进,Python会直接报错无法运行,需要把while及后续所有代码缩进一层,放在lv1函数作用域内。 - 输入逻辑位置错误:原代码把
input输入逻辑放在了x==0的判断分支内,只要x不等于0,就再也不会触发输入接收,程序会陷入死循环卡住。
修复后参考代码
import os i = 0 def lv1(): global i # 坐标初始化放在循环外面,不要每次循环都重置 x = 0 y = 0 while i == 0: # 清屏替换大量换行,自动适配Windows/ macOS/ Linux系统 os.system('cls' if os.name == 'nt' else 'clear') if x == 0 and y == 0: print("@ - - - - - - - - - -") print("- - - - - - - - - - -") print("- - - - - - - - - - -") print("- - - - - - - - - - []") print("- - - - - - - - - - -") print("- - - - - - - - - - -") print("- - - - - - - - - - -") print("- - - - - - - - - - -") elif x == 1 and y == 0: print("- @ - - - - - - - - -") print("- - - - - - - - - - -") print("- - - - - - - - - - -") print("- - - - - - - - - - []") print("- - - - - - - - - - -") print("- - - - - - - - - - -") print("- - - - - - - - - - -") print("- - - - - - - - - - -") # 输入逻辑放到渲染逻辑外面,每一轮循环都接收输入 move = input("") if move == "d": x += 1 # 增加边界判断,避免x超出地图范围 if x > 10: x = 10 elif move == "a": x -=1 if x <0: x =0 # 增加q键退出逻辑 elif move == "q": i = 1 # 调用函数启动游戏 lv1()
内容的提问来源于stack exchange,提问作者Skysurfer_kon
相关产品推荐
相关产品推荐

