2016-05-10 4 views
1

1983年の映画「戦争ゲーム」に精通している場合は、コンピュータが「ゲームをする」と尋ねる部分を覚えておく必要があります。私はそれを再現しようとしている、これはこれまで私が持っているものです。問題は、コマンドプロンプトウィンドウを閉じるパスワードを入力した後です。誰かが私の間違いを見つけるのを助けることができますか?「戦争ゲーム」ゲームのバッチファイル入力に関する問題

@echo off 
title Shall We Play a Game? 
color 0b 

set /a tries=3 
set password=Joshua 
:top 
echo %tries% Tries Remaining 
set /p pass=Password: 
if %pass%==%password% (
goto correct 
) 
set /a tries=%tries -1 
if %tries%==0 (
goto penalty 
) 
cls 
goto top 
:penalty 
echo CONNECTION TERMINATED 
pause 
exit 
:correct 
goto greeting 

:greeting 
echo Shall we play a game? 
echo y/n 
set input= 
if %input%=y goto y 
if %input%=n goto n 

:y 
echo How about 
echo Chess 
echo Tic-Tac-Toe 
echo Snake 
echo Global Thermonuclear War 
if %opt%==Chess goto Chess 
if %opt%==Tic-Tac-Toe goto TicTacToe 
if %opt%==Snake goto Snake 
if %opt%==Global Thermonuclear War goto Global Thermonuclear War 

:n 
echo Thats too bad! Maybe we should play some other day! 
pause 
exit 

:chess 

:tictactoe 
echo Are you sure? 
echo y/n 
set response= 
if %response%==y goto tictactoe1 
if %response%==n goto tictactoe2 

:tictactoe1 
echo Go Back? 
echo y/n 
set feedback= 
if %feedback%==y goto greeting 
if %feedback%==n goto tictactoe2 

:tictactoe2 
echo testing 
goto tictactoe2 
+1

この質問はメモ帳やメモ帳++とは関係ありません。 –

+1

メモ帳とメモ帳++は両方ともテキストエディタであり、それらをプログラムすることはできません。どの言語を使用しているのかわからない場合は、コードを記述しないでください。 –

+1

編集したタグ、私はそれが正しいことを望む。 – hyde

答えて

1

これは、あなたが何をしようとしてする必要があります:あなたがセットに数回/Pを忘れてしまった

@echo off 
title Shall We Play a Game? 
color 0b 

set /a "tries=3" 
set "password=Joshua" 
:top 
echo %tries% Tries Remaining 
set /p "pass=Password: " 
if "%pass%"=="%password%" (
goto correct 
) 
set /a "tries=%tries% -1" 
if %tries%==0 (
goto penalty 
) 
cls 
goto top 
:penalty 
echo CONNECTION TERMINATED 
pause 
exit 
:correct 
goto greeting 

:greeting 
echo Shall we play a game? 
echo y/n 
set /p "input=" 
if "%input%"=="y" goto y 
if "%input%"=="n" goto n 

:y 
echo How about 
echo Chess 
echo Tic-Tac-Toe 
echo Snake 
echo Global Thermonuclear War 
set /P "opt=" 
if "%opt%"=="Chess" goto Chess 
if "%opt%"=="Tic-Tac-Toe" goto TicTacToe 
if "%opt%"=="Snake" goto Snake 
if "%opt%"=="Global Thermonuclear War" goto GlobalThermonuclearWar 

:n 
echo Thats too bad! Maybe we should play some other day! 
pause 
exit 

:chess 

:tictactoe 
echo Are you sure? 
echo y/n 
set /p response= 
if %response%==y goto tictactoe1 
if %response%==n goto tictactoe2 

:tictactoe1 
echo Go Back? 
echo y/n 
set /p feedback= 
if %feedback%==y goto greeting 
if %feedback%==n goto tictactoe2 

:tictactoe2 
echo testing 
goto tictactoe2 

、これは、ユーザー入力を取得するために使用されます。 set /a tries=%tries -1でも、もう一度%を入れてみるのを忘れましたが、これはset /a tries=%tries% -1でなければなりません。さらに、変数を比較している場合には、二重引用符を二重引用符("")で置き換える必要があります。変数が存在しないか空であれば、スクリプトの制動を防止します。ラベルにスペースを入れないでください。set "variable=value"のように、あなたのセットの前後に引用符を付ける必要があります。これは、変数の末尾にスペースが入るのを防ぎます。

+0

ありがとうございます!私はちょうどそれを試み、それは働いた! –

+0

@Grey__X私の答えがあなたの問題を解決した場合は、その左側のチェックをクリックして、同じ問題についてGoogleで検索している人々が見つけることができるようにしてください。なぜこれが重要であるかは、[this](// stackoverflow.com/help/someone-answers)を参照してください。 –

関連する問題