请参考下面的脚本。嗯,我试着进入编程,我正在创建我的批处理rpg看看我是否能做到.不管怎样,有点像撞到墙了:我一直收到"goto在这个时候出乎意料“的错误。错误如下:最初,在标签游戏(: game )之后,输入系统工作正常,但不正确(即输入4,得到8的操作,输入8,一无所获,等等)。我改变了一些东西,但我不太确定我改变了什么.在到达标签游戏时,会产生“错误: goto在这个时候是意外的”。我意识到我在错误的地方添加了括号,所以我再次(在%location%==1之后)修改它--现在,在接受输入"items“(set /p items="> ")之后,它会出现相同的错误,而不显示背景故事。有趣的是,如果我删除了“set /p towna=">”‘之后的所有" if“参数,程序就会结束(没有错误,只是结束),而不会在”项目“之后显示背景故事、可能在城镇中的操作,或者允许用户输入变量%towna%。
以下是脚本:
@echo off
title=Role Playing Game
cls
echo/
echo ##### ##### ####
echo # # # # #
echo ##### ##### # ###
echo # # # # #
echo # # # ####
echo/
echo/
pause
:menu
cls
echo MENU
echo Options:
echo Start New Game-------------1
echo Continue Previous Game-----2
echo About----------------------3
echo Quit-----------------------4
set /p a="> "
if %a%==1 goto new
if %a%==2 goto continue
if %a%==3 goto about
if %a%==4 exit
:new
cls
echo What is your name?
set /p name="> "
echo/
echo What is your race?
echo Human-----1
echo Dwarf-----2
echo Elf-------3
set /p race="> "
if %race%==1 (
set /a location=1
set /a agility=3
set /a strength=3
set /a magic=2
set /a stamina=0
)
if %race%==2 (
set /a location=2
set /a agility=0
set /a strength=6
set /a stamina=0
set /a magic=0
)
if %race%==3 (
set /a location=3
set /a strength=0
set /a agility=6
set /a magic=0
set /a stamina=0
)
echo/
echo What is your class?
echo Warrior------1
echo Assassin-----2
echo Wizard-------3
set /p class="> "
if %class%==1 (
set /a strength=%strength%+10
set /a stamina=10
set /a agility=%agility%+7
set /a magic=%magic%+0
)
if %class%==2 (
set /a strength=%strength%+7
set /a stamina=7
set /a agility=%agility%+10
set /a magic=%magic%+0
)
if %class%==3 (
set /a strength=%strength%+4
set /a stamina=5
set /a agility=%agility%+5
set /a magic=%magic%+10
)
echo/
echo What are your assets?
echo Monetary Wealth----------1
echo Arms and Armor-----------2
echo Potions and Trinkets-----3
set /p items="> "
set /a gold=100
set /a sword=1
set /a armor=1
set /a healthp=1
set /a focusp=0
set /a ragep=0
set /a trinket=0
if %items%==1 (
set /a gold=300
)
if %items%==2 (
set /a sword=3
set /a armor=3
)
if %items%==3 (
set /a healthp=5
set /a focusp=5
set /a ragep=5
set /a trinket=1
)
echo/
pause
cls
if %race%==1 (
if %class%==1 (
if %items%==1 (
echo For all of your life, you have been raised among humans on the WesterHam
echo plains. An aristocrat by birth, you longed for the thrill of combat and
echo apprenticed your-self to the service of an officer in the military, where you
echo became an excellent warrior. Now of age, you have decided to take your
echo inheritance and explore the world. Good luck, %name%.
)
if %items%==2 (
echo You come from a long line of noble warriors, descending of a race of pure
echo humans out of the WesterHam plains. While you were not always able to put
echo bread on the table, your family has an abundance of arms and armor. Now fully
echo grown, you set out, well equiped with family heirlooms in order to make a
echo better life for yourself. Good luck, %name%.
)
if %items%==3 (
echo Your family of humans comes out of the WesterHam plains, and has never
echo ventured out of this area. As a child, you were fascinated with the art of
echo magic, but were never able to grasp spellcasting and the like, and instead
echo took training as a warrior. But the fascination never died, and every bit of
echo money you earned as a child was spent buying potions and enchanted items. Now
echo grown, you have saved a small sum of money, in addition to several potions
echo you collected as a child. You set out to explore the world in search of a
echo magic art simple enough for you to grasp. Good luck, %name%.
)
)
if %class%==2 (
if %items%==1 (
echo In your early childhood, you were raised with the honor of your wealthy
echo human family of WesterHam. As you met adolescence, you rebeled and cast your
echo lot with the assassins, allowing them to teach you their ways. Now of legal
echo age, you demand your inheritance so that you may set off and prove your loyalty
echo to the assassins guild. Good luck, %name%.
)
if %items%==2 (
echo As a child, you grew up in the human-populated plains of WesterHam. You were
echo orphaned at a young age, but the assassins guild took you in and taught you
echo their ways. From them, you have recieved a set of arms with which to do the
echo work of an assassin. Now completely trained, you begin to search the world,
echo offering your services to those that pay. Good luck, %name%.
)
if %items%==3 (
echo As a child, your upbringing was among humans in the plains of WesterHam. You
echo had a natural skill in alchemy, and began to produce potions of sorts, which
echo you would sell on the black market in hopes of bringing some income for your
echo poor family. In this style of trade, you were introduced to assassins from
echo time to time. In order to help sustain your family, you joined the assassins
echo guild in hopes of increasing income. Now armed with a collection of potions,
echo you set off to make a new life. Good luck, %name%.
)
)
if %class%==3 (
if %items%==1 (
echo As a child, you were brought up as a wealthy human inhabitant of the WesterHam
echo plains. You proved to be very intelligent as a child, so your parents sent you
echo off to school to learn the magic arts. You learned quickly, and advanced much
echo faster than any of the other students. You are now of age, and have taken your
echo inheritance to set off and see how you may use your skills. Good luck,
echo %name%.
)
if %items%==2 (
echo Ever since you were young, you displayed a strong curiosity and sense of
echo intelligence. However, you came from a family of warriors, proud humans of the
echo WesterHam plains. Weapons you had, but the money to learn magic you had not.
echo instead, you were "self taught" in the arts of magic, aquiring what you know
echo by close, constant observation of those that had mastered the art. Now of age,
echo you have inherited your set of arms, and been sent off to make your own way in
echo the world. Good luck, %name%.
)
if %items%==3 (
echo Since your days of young, you have been entirely enthrolled with wizardry.
echo Having been raised as an honorable human wizard on the plains of WesterHam, you
echo learned to produce potions that would complement your magical talents. Now that
echo you are of age, you set off into the world, determined to rely on use of your
echo magic talents and the aid of potions. Good luck, %name%.
)
)
)
if %race%==2 (
if %class%==1 (
if %items%==1 (
echo For all of your life, you have been raised among dwarves in the Morrowvale
echo mines. Wealthy by birth, you longed for the honors of battle and enlisted in
echo defensive forces of Morrowvale, where you soon proved your talents. Now of age,
echo you have taken your inheritance to explore the world beyond Marrowvale. Good
echo luck, %name%.
)
if %items%==2 (
echo You come from a long line of noble warriors, descending of a race of dwarvish
echo folk out of the Morrowvale mines. While you were not always able to put bread
echo on the table, your family has an abundance of arms and armor. Now fully grown,
echo you set out, well equiped with family heirlooms in order to make a better life
echo for yourself. Good luck, %name%.
)
if %items%==3 (
echo Your family of dwarves comes out of the Morrowvale mines, and has never
echo ventured out of this area. As a child, you were fascinated with the art of
echo magic, but were never able to grasp spellcasting and the like, and instead
echo took training as a warrior. But the fascination never died, and every bit of
echo money you earned as a child was spent buying potions and enchanted items. Now
echo grown, you have saved a small sum of money, in addition to several potions
echo you collected as a child. You set out to explore the world in search of a
echo magic art simple enough for you to grasp. Good luck, %name%.
)
)
if %class%==2 (
if %items%==1 (
echo In your early childhood, you were raised with the honor of your wealthy
echo family of dwarves in Morrowvale. As you met adolescence, youre good natured
echo sense of adventure led you mistakenly to the assassins guild, where you learned
echo their ways. Now of age, you recieve your inheritance so that you may set off to
echo explore the world. Good luck, %name%.
)
if %items%==2 (
echo As a child, you grew up in the dwarf-populated mines of Morrowvale. You were
echo orphaned at a young age, but the assassins guild took you in and taught you
echo their ways. From them, you have recieved a set of arms with which to do the
echo work of your training. Now completely trained, you begin to search the world,
echo offering your services in the name of justice. Good luck, %name%.
)
if %items%==3 (
echo As a child, your upbringing was among dwarves in the mines of Morrowvale. You
echo "tinkered" some in alchemy, and began to produce potions of sorts, which you
echo would sell on the black market in hopes of bringing some income for your poor
echo family. In this style of trade, you were introduced to assassins from time to
echo time. In curiosity you joined the assassins guild. Now armed with a collection
echo of potions, you set off to explore the world. Good luck, %name%.
)
)
if %class%==3 (
if %items%==1 (
echo As a child, you were brought up as a well off dwarf of the Morrowvale mines.
echo You proved to be very intelligent as a child, so your parents sent you off to
echo school to learn the magic arts. You learned quickly, and advanced much faster
echo faster than any of the other dwarves. You are now of age, and have taken your
echo inheritance to set off and see how you may use your skills. Good luck,
echo %name%.
)
if %items%==2 (
echo Ever since you were young, you displayed a strong curiosity and sense of
echo intelligence. However, you came from a family of warriors, proud dwarves of
echo the Morrowvale mines. Arms you had, but the money to learn magic you had not.
echo instead, you were "self taught" in the arts of magic, aquiring what you know
echo by close, constant observation of elders who had mastered the art. Now of age,
echo you have inherited your set of arms, and been sent off to make your own way in
echo the world. Good luck, %name%.
)
if %items%==3 (
echo Since your days of young, you have been consumed with wizardry. Having been
echo raised as a witty dwarfish wizard on the mines of Morrowvale, you learned to
echo produce potions that would complement your magical talents. Now that you are of
echo age, you set off into the world, determined to rely on use of your magic talent
echo and the aid of potions. Good luck, %name%.
)
)
)
if %race%==3 (
if %class%==1 (
if %items%==1 (
echo For all of your life, you have been raised among elves in the Dalewood forests.
echo An aristocrat by birth, you wished to serve your people in the armed forces,
echo and quickly proved yourself among peers and superiors. Now of age, you have
echo a generous inheritance and skills in combat. You set off in conquest for the
echo elvish people. Good luck, %name%.
)
if %items%==2 (
echo You come from a long line of noble warriors, descending of a race of pure
echo elves out of the Dalewood forests. While you were not always able to put bread
echo on the table, your family has an abundance of arms and armor. Now fully grown,
echo you set out, well equiped with family heirlooms in order to make a better life
echo for yourself. Good luck, %name%.
)
if %items%==3 (
echo Your family of elves comes out of the Dalewood forests, and has never ventured
echo out of this area. As a child, you were fascinated with the art of magic, but
echo were never able to grasp spellcasting and the like, and instead took training
echo as a warrior. But the fascination never died, and every bit of coin you earned
echo as a child was spent buying potions and enchanted items. Now grown, you have
echo saved a small sum of money, in addition to several potions you collected as a
echo child. You set out to explore the world in search of a magic art simple enough
echo for you to grasp. Good luck, %name%.
)
)
if %class%==2 (
if %items%==1 (
echo In your early childhood, you were raised with the honor of your wealthy elvish
echo family of Dalewood. As you met adolescence, you chose the honorable path of a
echo royal assassin, being taught the ways of a fearless shadow on the battlefield.
echo As you are now of age, you aquire your inheritance so that you may set off and
echo prove your loyalty to elf-kind. Good luck, %name%.
)
if %items%==2 (
echo As a child, you grew up in the elf-populated forests of Dalewood. You were
echo chose your destiny at a young age, to be an elite assassin for the elvish army.
echo From them, you have recieved a set of arms with which to do the work of an
echo assassin. Now completely trained, you begin to search the world, using your
echo assets in the name of elf-kind. Good luck, %name%.
)
if %items%==3 (
echo As a child, your upbringing was among elves in the forests of Dalewood. You
echo had a natural skill in alchemy, producing fine elvish potions, which you would
echo sell for the commision of the elite elvish assassins. This introduction to the
echo assassins life intrigued you, and soon you began your training as an assassin.
echo Now having completed your training, you head off armed with a collection of
echo potions, to make a new life. Good luck, %name%.
)
)
if %class%==3 (
if %items%==1 (
echo As a child, you were brought up as a wealthy elvish inhabitant of the Dalewood
echo forests. You proved to be very intelligent as a child, so your parents sent you
echo off to the academy to learn the magic arts. You learned quickly, and advanced
echo faster than any of the other students. You are now of age, and have taken your
echo inheritance to set off and see how you may use your skills. Good luck,
echo %name%.
)
if %items%==2 (
echo Ever since you were young, you displayed a strong curiosity and sense of
echo intelligence. However, you came from a family of warriors, proud elves of the
echo Dalewood forests. Weapons you had, but the money to learn magic you had not.
echo instead, you were "self taught" in the arts of magic, aquiring what you know
echo by close, constant observation of those that had mastered the art. Now of age,
echo you have inherited your set of arms, and been sent off to make your own way in
echo the world. Good luck, %name%.
)
if %items%==3 (
echo Since your days of young, you have been entirely enthrolled with wizardry.
echo Having been raised as an honorable elvish wizard in the forests of Dalewood,
echo you learned to produce potions that would complement your magical talents. Now
echo that you are of age, you set off into the world, determined to rely on use of
echo your magic talents and the aid of potions. Good luck, %name%.
)
)
)
echo/
:game
cls
if %location%==1 (
echo Plains of WesterHam
echo/
echo You walk down the fading dirt road into the prarie town of WesterHam. The wind
echo blows the long, thin grass about in a ripple-type of pattern. As you enter the
echo town, you look about and note the busy market, characteristic of towns
echo inhabited by humans. You see a quaint looking inn directly to your left, and a
echo ways down the road you spot a bakery. On the right side or the street is a
echo blacksmith shop, as well as an apothecaries shop that advertises instruction in
echo magic as well. At the very end of the lane, you percieve a church of moderate
echo size.
echo/
echo/
echo What do you want to do?
echo Enter the inn---------------------1
echo Enter the bakery------------------2
echo Enter the blacksmith shop---------3
echo Enter the apothecaries------------4
echo Enter the church------------------5
echo Enter the market-place------------6
echo Loot some homes-------------------7
echo Turn around; travel elsewhere-----8
set /p towna="> "
if %towna%==1 goto inn
if %towna%==2 (
cls
echo Seems to be closed today. Maybe the owner is at the market-place.
pause
goto town1i
)
if %towna%==3 goto smith
if %towna%==4 goto apoth
if %towna%==5 goto church
if %towna%==6 (
cls
echo You don't have time for such things. Maybe in the Beta version you will.
pause
goto town1i
)
if %towna%==7 (
cls
echo No, youre too good for that. Maybe in the Beta version you won't be.
goto town1i
)
if %towna%==8 goto travel
)
if %location%==2 (
echo Mines of Morrowvale
)
if %location%==3 (
echo Forests of Dalewood
)据我所见,我的代码应该能工作,我不知道是什么导致了错误消息。顺便指出,什么可能导致错误消息"goto是意外的“?是否有未确定的目标?是否可以通过添加目标标签来解决这一问题(不太可能,因为这将显示未定义标签的消息)。将来如何避免这种情况呢?
发布于 2013-12-05 04:50:52
你的问题是那批货扩大得太早了。
当程序到达行if %location%==1时,将展开整个if块,包括嵌套的if towna==*行。
若要修复,必须执行以下操作:
SETLOCAL ENABLEDELAYEDEXPANSION。此命令允许延迟扩展动态变量。if !towna!==*而不是if %towna%==*。这类变量一到达块就不会展开。相反,如果已经调用了SETLOCAL ENABLEDELAYEDEXPANSION,则当解释器实际到达它时,它将被展开。请注意,每当您在任何语句块中设置和调用变量时,都必须完成这些步骤。
https://stackoverflow.com/questions/20391157
复制相似问题