我正在使用Windows BATCH进行RPG游戏,血液是一个变量。我想补充出血,但我真的不知道如何做到这一点。
我可以做些什么来让%blood%每秒下降?
:BLEEDINGHUNGERANDTHIRST
if /a %bleeding% equ 1 set %blood% = 5500 -=1
(我知道,这是错的)
答案 0 :(得分:2)
假设bleeding
为0(无出血)或1(出血),更多(血腥)或更少(愈合)
set /a "blood-=bleeding"
每隔一秒发生一次,取决于代码的其余部分以及何时以及如何调用例程。
肮脏的方式可能是
:BLEEDINGHUNGERANDTHIRST
if not %bleeding%==0 for /f "tokens=3 delims=:,. " %%a in ("%time::0=:%") do (
if not defined lastBleedingTime (
set "lastBleedingTime=%%a"
set /a "blood-=%bleeding%"
) else (
if not %lastBleedingTime%0==%%a0 (
setlocal enabledelayedexpansion
if !lastBleedingTime! gtr %%a (
set /a "gap=60-lastBleedingTime+%%a"
) else (
set /a "gap=%%a-lastBleedingTime"
)
for /f %%b in ("!gap!") do (
endlocal
set /a "lastBleedingTime=%%a", "blood-=%bleeding%*%%b"
)
)
)
)
这使用了最后一次通话和现在之间的时间差。根据从上次检查起经过的秒数,从出血计数器中减去出血量。为此,您需要确保在一分钟内(最好至少每秒钟)多次调用例程,并在玩家止血时使用set "lastBleedingTime="
。
答案 1 :(得分:1)
是的,这是可能的,但您需要一些关于高级批处理编程的知识。
你只需要开始两个主题 一个线程用于等待和接受用户输入,第二个线程用于计算诸如流血之类的事情。
对于同步,你应该看看dbenham的技术 查看参考游戏SNAKE.BAT An arcade style game using pure batch