0

Ich mache ein Spiel, und ich habe eine Health Variable, um zu verfolgen, wie viel Gesundheit der Spieler hat, wie sie durch das Spiel gehen. An einem Punkt schneidet der Spieler seine Lippe auf einer Dose (uneventful, ich weiß), und verliert 2 HP. Ich versuche Arithmetik zu benutzen, um 2 PS von der 'Health'-Variable abzuziehen (die immer noch bei 100 ist), und dann zu zeigen, wie viel Gesundheit sie übrig hat, aber es zeigt immer noch 100 HP, nachdem ich versucht habe 2 zu entfernen HP. Mache ich das richtig?Arithmetik im Batch?

:Beans 
call :colorEcho 7 "You decide you're going to have Canned Beans for  breakfast. Yum. You grab a knife from the kitchen counter and work the top off. You eat the beans straight from the can. Ouch! You cut your lip! It starts to bleed." 
Echo . 
set /a "_Health=_Health-2" 
Echo. 
call :colorEcho C "# ALERT; You have lost 2 Health Points! You are now at %Health% HP!" 
Echo. 
pause 
exit 

Was geschieht:

what happens

+0

Haben Sie versucht, ohne die '' 's? –

+0

Ich denke, dieses Code-Fragment ist in einem Block in Klammern'() '; wenn ich richtig bin, brauchen Sie [verzögerte Erweiterung] (http://ss64.com /nt/delayedexpansion.html), oder du schreibst 'set/A _Health- = 2' ... – aschipfl

+0

@i_am_jorf Ja, habe ich ohne die' '' s versucht, aber ich bekomme das gleiche Ergebnis. – FudgeMuffins

Antwort

1

Ok, fand ich die Antwort dank heraus @dbenham. Vielen Dank!

Ich hatte die Variable vermasselt, und wie Dbenham darauf hinwies, expandierte ich %Health%, als ich _Health in set /a _Health-=2 verwendete. Ich änderte es auf nur set /a Health-=2, und alles scheint jetzt gut zu funktionieren.