アプリ版:「スタンプのみでお礼する」機能のリリースについて

@echo off
set number=%random%*101/32767
set answer=0
set count=0
set usercount=0
:more
if %count% == 10 (
echo 残念・・・難しかったようですね。
echo 正解は、「%number%」でした。
)
echo **********************************************
echo 1~100までの数を入力して、数を当ててください。
set /P answer="数を半角数字で入力: "
if not defined answer (
echo 値を入力しなおしてください
goto more
)

if "%answer%" equ "%number%"(
echo ------------------------------------
echo 正解です!
echo あなたは、%count%回で数を当てました!
) else (
echo ------------------------------------
echo 残念、不正解です。
rem 残り回数計算
set /a count=%count%+1
set /a usercount=10-%count%
if "%answer%" lss "%number%"(
echo ヒント:数は、%answer%より大きい。
echo ------------------------------------
)else if "%answer%" gtr "%number%"(
echo ヒント:数は、%answer%より小さい。
echo ------------------------------------
)
echo 残り%usercount%回回答できます。
goto more
)
pauce

上のことを書いたbatファイルを実行したところ、「構文が誤っています」とだけ表示されて、どこが間違っているのかわかりません。どなたか分かる方、教えてください。

質問者からの補足コメント

  • 数あてゲームを作ろうとしました。
    1~100までの数を生成して、当たっていれば正解と伝え、違っていれば入力された数が正解の数より小さいか大きいか表示するといったプログラムです。

      補足日時:2021/07/26 13:57

A 回答 (3件)

ざっとチェックしただけなので、見逃しやおかしな点があったらすみません。




一番最後の「)」を消します。


「if "%answer%" lss "%number%"(」の行頭に、
「)else 」を付け、
「)else if "%answer%" lss "%number%"(」にします。


「~ if ~ equ ~ (」のように、
「(」の前に、半角スペースを入れます。


「set number=%random%*101/32767」に、
「/a」を付け、
「set /a number=%random%*101/32767」にします。


数値を比較する場合は、
「if "%~%" equ "%~%" (」のように「"」は付けず、
「if %~% equ %~% (」のように記述します。


「) else (」という条件は、
「) ~ lss ~ (」や
「) ~ gtr ~ (」より前ではなく、
最後に記述します。


――――――――――――――
rem 残り回数計算
set /a count=%count%+1
set /a usercount=10-%count%
――――――――――――――
の3行は、
――――――――――――――
if %count% == 10 (
echo 残念・・・難しかったようですね。
echo 正解は、「%number%」でした。
)
――――――――――――――
の下に移動させます。


――――――――――――――
@echo off
――――――――――――――
の下に、
――――――――――――――
:start
――――――――――――――
を書き加えます。


――――――――――――――
echo 正解は、「%number%」でした。
――――――――――――――
の下に
――――――――――――――
pause
cls
goto start
――――――――――――――
を書き加えます。


――――――――――――――
echo あなたは、%count%回で数を当てました!
――――――――――――――
の下に、
――――――――――――――
pause
cls
goto start
――――――――――――――
を書き加えます。


――――――――――――――
echo 残り%usercount%回回答できます。
――――――――――――――
の行頭に、
――――――――――――――
if not "%usercount%"=="0"
――――――――――――――
を加え、
――――――――――――――
if not "%usercount%"=="0" echo 残り%usercount%回回答できます。
――――――――――――――
にします。
    • good
    • 0
この回答へのお礼

言われたとおりにやってみると、うまくできました!
よく見直してみるともっと簡略化できたところがあったり、意味わからない記述をしていたと気づけました。
if文を組み合わせすぎて、ごちゃごちゃになってしまっていたので、もっと勉強して、他人にもわかりやすいようなプログラムを組むことを目標に、頑張っていきたいと思います。
また、いままでメモ帳を使っていたのですが、これを機にAtomとかサクラエディタにして、()が多すぎないかとかを確認しながら書こうと思いました。
教えていただき、ありがとうございました。

お礼日時:2021/07/27 12:47

>@echo off


これを削って実行してみてください。
実行状況が表示されるので、どこで間違ってるかわかりやすいです。
    • good
    • 0
この回答へのお礼

教えていただき、ありがとうございました。
今後batファイルを書く機会があったら、その時のエラーの対策として参考にさせていただきます。

お礼日時:2021/07/27 12:50

pauce

    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!