批处理TD游戏完成第一回合后立即崩溃,如何调整使其正常运行?
问题修复方案
你代码里有3个核心问题导致崩溃,逐一修复即可:
- 变量名不一致导致的语法错误
你在初始化回合数时定义的变量是turn,游戏界面也显示的是%turn%,但在:play流程里判断回合数、累加回合数时用的是未初始化的round变量,批处理遇到未定义的空变量会直接抛出语法错误退出。
修复方式:把:play模块里所有的round替换成turn,对应代码修改为:if %turn% GTR 50 goto win set /a turn+= 1 - 变量引用缺少百分号导致逻辑错误
三个购买兵种的判断逻辑里,你直接写了if cash LSS 50,没有给cash加百分号,批处理会把cash识别为纯文本而非变量,判断逻辑完全失效,也存在触发崩溃的可能。
修复方式:把三个购买分支的判断都加上变量百分号,还可以顺便补充兵种数量、总数量的累加逻辑,不然界面上的兵种数永远显示0::buy1 if %cash% LSS 50 goto game set /a cash-= 50 set /a attack+= 15 set /a basic+=1 set /a total+=1 goto game :buy2 if %cash% LSS 100 goto game set /a cash-= 100 set /a attack+= 40 set /a heavy+=1 set /a total+=1 goto game :buy3 if %cash% LSS 70 goto game set /a cash-= 70 set /a attack+= 25 set /a snip+=1 set /a total+=1 goto game - 缺失跳转标签导致崩溃
你代码里用到了:healtime、:lose、:win三个跳转标签,但完全没有实现对应的逻辑,触发对应操作时会因为找不到标签直接崩溃。
可以参考如下补充最简实现::healtime if %heal% LEQ 0 goto game set /a health+=100 set /a heal-=1 goto game :lose cls echo 你战败了! pause exit :win cls echo 你通关了! pause exit
修复完以上问题后第一回合结束就崩溃的问题就解决了,治疗、认输功能也可以正常使用。
内容的提问来源于stack exchange,提问作者KuaNai
相关产品推荐
相关产品推荐

