2017-09-16 13 views
0

デスクトップを実行しているデスクトップでRPGスタイルのゲームに取り組んでいます。 私はバッチを使ってこのゲームを作っています。私は負の数に問題がありました...
あなたの/敵の健康状態が負の数になると、あなたは無敵になります。 LSS、LEQ、GTR、GEQは機能していないようです。 これはあなたが死んでいるのか、モンスターがいるのかを判断する方法です。"IF"コマンドでバッチファイルのネガティブ番号を検出できない

If "%phealth%" LSS "0" goto :dead.       
If "mhealth%" LSS "0" goto :Mdead 

私はGTRやGEQを使用している場合は最初の攻撃は関係なく、私がLSSを使用したり、LEQ場合、それは動作しませんでした私はそれを意図したどのようにモンスターを殺しません。 すべてがランダムに生成されます。

Set /a "mhealth=%random% %%mlvl%-1+9 

プレーヤーの健康とレベルはランダムではなく、 を変更することができ、私が見落としている任意の溶液またはエラーがあります。ほとんどのページでも役に立たなかった。私はそれが必要なので健康が負のあなた/モンスターのダイに入る場合

ありがとう!

+0

コードを正しくフォーマットしてください。そしてそれらは ''%phealth% ''と' '0''に引用符を追加しません。 – SteveFest

+0

'IF'コマンドのヘルプを読んでしまったら、これを見たかもしれません。 **上記の数値比較を使用することもできます: 'IF%ERRORLEVEL%LEQ 1 goto okay' **。その周りに引用符がありますか? – Squashman

+1

あなたは剰余計算をしているように見えます。バッチファイルを使用しているときは、パーセント文字を2倍にする必要があります。 'Set/A mhealth =%random %%%%mlvl% - 1 + 9'​​ _(パーセント文字を%mlvl%変数)_。私はあなたが害を及ぼさないままにして、参加者間の分離を見るのを助けるスペースを含んでいます。 – Compo

答えて

3

オペランドを引用符で囲むと、比較はアルファベット順に実行されます。引用符の理由は、(頻繁に)オペランドが空であることから保護することですが、それはif [not] defined ...を使用することによっても達成できます。 数値の比較の場合は、引用符を削除します。

関連する問題