2015-11-03 76 views
1

最近我创建了一个小型BATCH游戏。CMD命令的MS-DOS等价物?

事情是,因为我使用Windows的CMD BATCH语言,游戏将无法在DOS或DOSbox中正常运行。

开场很好,但是一旦我到达第一个玩家输入部分,我会得到一个“错误的语法”错误。

有谁知道Windows CMD命令的MS-DOS等价物?

例如,在基于CMD的BATCH文件中,我将使用“set ...”来设置输入。 DOS版本的“set ...”是什么?

:start 
cls 
echo GUESSING GAME 
echo. 
echo Created By: John Ingram 
echo Copyright 2015 
echo. 
pause 
goto :begin 

:begin 
cls 
echo Please enter the number of your desired difficulty setting. 
echo. 
echo 1) Easy: Guess a number from 1-10 
echo 2) Normal: Guess a number from 1-100 
echo 3) Hard: Guess a number from 1-1000 
echo. 
echo Type "Quit" to exit the game. 
echo. 
echo Have Fun! 

set /p choice=Enter: 

if %choice%==1 (
goto :difficulty1 
) 

if %choice%==2 (
goto :difficulty2 
) 

if %choice%==3 (
goto difficulty3 
) 

if %choice%==quit (
goto :endgame 
) 

if %choice%==Quit (
goto :endgame 
) 

if %choice% GTR 3 (
echo. 
echo I do not understand that command. 
echo. 
pause 
goto :begin 
) 

pause 

一旦玩家在游戏开始后按下一个键并被带到第一个输入部分(:begin),麻烦就开始了。

这与DOS/DOSbox无法将“/ p”注册为SET命令有什么关系吗?

如果是这样,什么是DOS等效?

+2

你应该放一些代码示例 –

+1

[dosbox](http://www.dosbox.com/wiki/Commands)的命令与MS-DOS相比是非常有限的,所以你可能需要cal cmd无论如何.exe。 – npocmaka

+1

和'cmd.exe'是'ms-dos'的超集[ – npocmaka

回答

0

我建议使用virtualbox与MSDOS 7.1而不是DOSBOX。由于DOSBOX是一个模拟器,您将收到更少的麻烦,而Virtualbox将运行它,就好像它运行的是运行MSDOS的实际IBM-PC。

您的第一场重大的缺陷:

SET /P CHOICE=ENTER

在DOS,此命令不起作用。我知道一个解决方法,但我不知道如何建立一个等式if "%choice%"=="1"。它使用QBASIC。

PRINT ENTER; CHOICE$将完成这项工作。

PRINT回声ENTER
分号; CHOICE$设置变量CHOICE。您需要$以使变量能够包含字符串。

你可以在网上找到大量的QBASIC教程。一旦找到,找出如何在IF CHOICE $ = 1上执行if声明来打开一个文件,其内容为:dificulty3

我可以为此发布IF声明是我找到的。

+0

感谢您的信息。我会看看QBASIC和VirtualBox。我只是有一个问题:所以为了使DOS兼容的BATCH文件,我不应该使用任何正常的批处理脚本,而是写一切基于QBASIC的呢?或者我应该做一个两者的混合体(玩家输入在QBASIC中完成,但其他一切都在正常的BATCH中)? – JasonWanderer

+0

我会做一个混合体,因为转换会容易得多,但是如果命令不起作用,那么我会在QBASIC中做它,因为它有一个很大的命令库可能满足需要。 – RookieTEC9

+0

据我所知,QBASIC不能在64位Windows上运行。为了与DOS和Windows兼容,你只能使用DOS命令(尽管我不太确定,如果它们都能在Windows中工作的话)。如果你只想为DOS编写游戏,我会去QBASIC并忘记批处理。 – Stephan