2014-09-04 121 views
0

基本上,我做了一个脚本,就像那些“拿起钥匙”或“打怪兽”类型的游戏......批处理脚本不工作(使用记事本++此)

这里的问题。我做功能

:beginning2 
cls 
echo You're in a room with a broken glass, a chest, a mirror, a counter with a small object on it, and a door. 
echo What do you want to do? 
set /p beginning2=Action: 

if "%beginning2%"=="look at counter" goto counter 

它应该去“计数器”这是脚本的这一部分。

:counter 
cls 
echo There is a small object on this counter. 
echo It appears to be a key. 
set /p counter=Action: 

if "%counter%"=="pick up key" goto beginning3 

这是整个脚本。

@echo off 
color 0a 
:beginning1 
cls 
title Adventure 
echo You're in a room with a broken glass, a chest, and a mirror. 
echo The room has no light. 
echo What do you want to do? 
set /p input=Action: 

if "%input%"=="open chest" goto chest 
if "%input%"=="look at mirror" goto mirror 

:beginning2 
cls 
echo You're in a room with a broken glass, a chest, a mirror, a counter with a small object on it, and a ab door. 
echo What do you want to do? 
set /p beginning2=Action: 

if "%beginning2%"=="look at counter" goto counter 

:beginning3 
cls 
echo You're in a room with a broken glass, a chest, a mirror, a counter with nothing on it, and a door. 
echo You also hold a key. 
echo What do you want to do? 
set /p beginning3=Action: 

if "%beginning3%"=="open chest" goto chest2 
if "%beginning3%"=="look at counter" goto counter 

:beginning4 
cls 
echo You're in a room with a broken glass, an opened chest, a mirror, a counter with nothing on it, and a door. 
echo You also hold a key. 
echo What do you want to do? 
set /p beginning4=Action: 

if "%beginning%"=="open door" goto door 

:chest 
cls 
echo The chest is locked. What do you want to do now? 
set /p chest=Action: 

if "%chest%"=="back" goto beginning1 
if "%chest%"=="look at mirror" goto mirror 

:chest2 
cls 
echo You hold a key, and a chest appears infront of you. 
echo What do you want to do now? 
set /p chest2=Action: 

if "%chest2%"=="open chest" goto chest3 

:chest3 
cls 
echo The chest clicks open! 
echo In it appears to be another key, but slightly bigger. 
echo What do you want to do now? 
set /p chest3=Action: 

if "%chest3%"=="back" goto beginning4 

:mirror 
cls 
echo You look in the mirror. 
echo You see nothing because the room has no light. 
echo What do you want to do now? 
set /p mirror=Action: 

if "%mirror%"=="turn on lights" goto lights 
if "%mirror%"=="back" goto beginning1 

:lights 
cls 
echo You turned on the lights! 
echo You've revealed a counter with a small object on it, and now there is light in the mirror. 
set /p lights=Action: 

if "%lights%"=="look at mirror" goto mirror2 

:mirror2 
cls 
echo You look at a mirror, you see yourself with a pen mark on your arm that says "0212" 
set /p mirror2=Action: 

if "%mirror2%"=="back" goto beginning2 

:counter 
cls 
echo There is a small object on this counter. 
echo It appears to be a key. 
set /p counter=Action: 

if "%counter%"=="pick up key" goto beginning3 

:door 
cls 
echo You go to the door with a key, and open it. It clicks open simply. 

请帮助我,因为它是如此令人沮丧。这很奇怪,因为它只是说“goto counter”,但它不适用于我。

+0

关闭-topic:你是如何在批处理文件中制作游戏的?你为什么不使用正常的编程语言?即使使用cmd输入和输出的Perl,开发游戏也会更容易。 – Regent 2014-09-04 05:25:09

+0

如果你制作一个基于控制台的游戏,我会推荐python。快速,简单和易于学习。 – Monacraft 2014-09-04 06:30:57

回答

0

使用if语句时,它们默认情况下区分大小写。使用/i可以改变:

set /p beginning2=Action: 

if /i "%beginning2%"=="look at counter" goto counter 
0

我审查程序的控制流,这是它的选项树:

:beginning1 (broken glass, a chest, and a mirror) 
- "open chest": goto chest 
- "look at mirror": goto mirror 
- else: 
:beginning2 (broken glass, a chest, a mirror, a counter with..., and a ab door) 
- "look at counter": goto counter 
- else: 
:beginning3 (broken glass, a chest, a mirror, a counter with nothing..., and a door) 
- "open chest": goto chest2 
- "look at counter": goto counter 
- else: 
:beginning4 (broken glass, an opened chest, a mirror, a counter with nothing, and a door) 
- "open door": goto door 
- else: 
:chest (chest is locked) 
- "back": goto beginning1 
- "look at mirror": goto mirror 
- else: 
:chest2 (chest appears infront of you) 
- "open chest": goto chest3 
- else: 
:chest3 (chest clicks open) 
- "back": goto beginning4 
- else: 
:mirror (look in the mirror) 
- "turn on lights": goto lights 
- "back": goto beginning1 
- else: 
:lights (turned on lights) 
- "look at mirror": goto mirror2 
- else: 
:mirror2 (look at a mirror) 
- "back": goto beginning2 
- else: 
:counter (small object on counter) 
- "pick up key": goto beginning3 
- else: 
:door (open door) 
-> terminate program 

我运行您的程序和它的行为完全一样编程。例如,在“:lights”标签处,如果输入“看镜子”,程序执行“goto mirror2”;否则,如果输入与“看镜子”不同的任何内容,则程序将继续执行下一行,即“:mirror2”...

我认为您必须在每行前面插入一个goto方案指定“ - 其他:” ......

你也应该包括在所有if命令/I交换机Monacraft表示,除非您确信用户将总是在小写字母输入命令......