我一直对批量编码和其他东西很感兴趣,我一直在制作一个带有多种选择和结局的小型文字冒险游戏。在某个时刻,你可以选择成为总统。
:lvl1
cls
color 0a
echo You awake in a dark room.
echo What do you do?
echo.
echo 1) Take the nearest torch.
echo 2) Do nothing.
echo 3) Become the president.
echo 4) Wait, isn't this exactly like The Adventure 1?
set /p answer=
if %answer% == 1 goto lvl2-1
if %answer% == 2 goto bordem
if %answer% == 3 goto presidency
if %answer% == 4 goto yes
基本上我在这里开了个小玩笑,因为这是续集,而且开场也差不多。 所以你可以选择总统选项,这是它的代码。
:presidency
cls
color 0a
echo You decided to become the President
echo What do you do now?
echo.
echo 1) RAISE TAXES!
echo 2) MAKE A SPEECH!
echo 3) NOTHING!
echo 4) DECREASE TAXES!
set /p answer=
if %answer% == 1 goto really?
if %answer% == 2 goto speech
if %answer% == 3 goto uselesspresident
if %answer% == 4 goto thankyouforthat
现在,您应该可以选择第三个选项,它将带您进入其中一个结局。 但我尝试在批处理版本中这样做,但我看到无用的总统屏幕一闪而过,然后它让我回到第一级(lvl1)。 这是 uselesspresident 的代码:
:uselesspresident
cls
color 0a
echo You did nothing as the president.
echo Worst. President. Ever.
echo Achievement unlocked!: Lazy ass.
echo USELESS PRESIDENT ENDING
echo Play more?
echo (y/n)
set /p answer=
if %answer% == y goto lvl1
if %answer% == n goto menu
我看不出代码有什么问题,也许你们中的一个能看出来? 我还没有测试我所有的游戏,所以如果我遇到更多编码问题,我会把它发布到这个论坛。 如果您能找到问题,谢谢。
编辑:我已经弄明白了。 我真不敢相信我没有早点想到它,但是我来了。 当我意识到这一点时,我正在编辑文本文件,而不是批处理本身:
echo (y/n)
set /p answer
if %answer% == y goto lvl1
if %answer% == n goto menu
这是我修复它之前的样子,所以我添加了 = 符号并修复它然后保存。 但我没有将它导出为 .bat,所以 .bat 仍然是一样的,但文本文件被编辑了。 我真的需要记住编辑 .bat 文件而不是单独编辑文本文件。
最佳答案
假设问题出在输入值的大小写上,您可以尝试用类似以下内容替换测试:
echo (y/n)
set /p answer=
if /I %answer% EQU y echo yes
if /I %answer% EQU n echo no
当然,将 echo 替换为您的 goto 语句。这假设命令扩展已启用(默认情况下应该启用),并且基本上执行不区分大小写的比较。
关于windows - 为什么这个批处理代码不能用于我的游戏?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21476945/
类classAprivatedeffooputs:fooendpublicdefbarputs:barendprivatedefzimputs:zimendprotecteddefdibputs:dibendendA的实例a=A.new测试a.foorescueputs:faila.barrescueputs:faila.zimrescueputs:faila.dibrescueputs:faila.gazrescueputs:fail测试输出failbarfailfailfail.发送测试[:foo,:bar,:zim,:dib,:gaz].each{|m|a.send(m)resc
我需要在客户计算机上运行Ruby应用程序。通常需要几天才能完成(复制大备份文件)。问题是如果启用sleep,它会中断应用程序。否则,计算机将持续运行数周,直到我下次访问为止。有什么方法可以防止执行期间休眠并让Windows在执行后休眠吗?欢迎任何疯狂的想法;-) 最佳答案 Here建议使用SetThreadExecutionStateWinAPI函数,使应用程序能够通知系统它正在使用中,从而防止系统在应用程序运行时进入休眠状态或关闭显示。像这样的东西:require'Win32API'ES_AWAYMODE_REQUIRED=0x0
我有一个模型:classItem项目有一个属性“商店”基于存储的值,我希望Item对象对特定方法具有不同的行为。Rails中是否有针对此的通用设计模式?如果方法中没有大的if-else语句,这是如何干净利落地完成的? 最佳答案 通常通过Single-TableInheritance. 关于ruby-on-rails-Rails-子类化模型的设计模式是什么?,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.co
如何在buildr项目中使用Ruby?我在很多不同的项目中使用过Ruby、JRuby、Java和Clojure。我目前正在使用我的标准Ruby开发一个模拟应用程序,我想尝试使用Clojure后端(我确实喜欢功能代码)以及JRubygui和测试套件。我还可以看到在未来的不同项目中使用Scala作为后端。我想我要为我的项目尝试一下buildr(http://buildr.apache.org/),但我注意到buildr似乎没有设置为在项目中使用JRuby代码本身!这看起来有点傻,因为该工具旨在统一通用的JVM语言并且是在ruby中构建的。除了将输出的jar包含在一个独特的、仅限ruby
我正在使用的第三方API的文档状态:"[O]urAPIonlyacceptspaddedBase64encodedstrings."什么是“填充的Base64编码字符串”以及如何在Ruby中生成它们。下面的代码是我第一次尝试创建转换为Base64的JSON格式数据。xa=Base64.encode64(a.to_json) 最佳答案 他们说的padding其实就是Base64本身的一部分。它是末尾的“=”和“==”。Base64将3个字节的数据包编码为4个编码字符。所以如果你的输入数据有长度n和n%3=1=>"=="末尾用于填充n%
我主要使用Ruby来执行此操作,但到目前为止我的攻击计划如下:使用gemsrdf、rdf-rdfa和rdf-microdata或mida来解析给定任何URI的数据。我认为最好映射到像schema.org这样的统一模式,例如使用这个yaml文件,它试图描述数据词汇表和opengraph到schema.org之间的转换:#SchemaXtoschema.orgconversion#data-vocabularyDV:name:namestreet-address:streetAddressregion:addressRegionlocality:addressLocalityphoto:i
Rackup通过Rack的默认处理程序成功运行任何Rack应用程序。例如:classRackAppdefcall(environment)['200',{'Content-Type'=>'text/html'},["Helloworld"]]endendrunRackApp.new但是当最后一行更改为使用Rack的内置CGI处理程序时,rackup给出“NoMethodErrorat/undefinedmethod`call'fornil:NilClass”:Rack::Handler::CGI.runRackApp.newRack的其他内置处理程序也提出了同样的反对意见。例如Rack
在rails源中:https://github.com/rails/rails/blob/master/activesupport/lib/active_support/lazy_load_hooks.rb可以看到以下内容@load_hooks=Hash.new{|h,k|h[k]=[]}在IRB中,它只是初始化一个空哈希。和做有什么区别@load_hooks=Hash.new 最佳答案 查看rubydocumentationforHashnew→new_hashclicktotogglesourcenew(obj)→new_has
为什么4.1%2返回0.0999999999999996?但是4.2%2==0.2。 最佳答案 参见此处:WhatEveryProgrammerShouldKnowAboutFloating-PointArithmetic实数是无限的。计算机使用的位数有限(今天是32位、64位)。因此计算机进行的浮点运算不能代表所有的实数。0.1是这些数字之一。请注意,这不是与Ruby相关的问题,而是与所有编程语言相关的问题,因为它来自计算机表示实数的方式。 关于ruby-为什么4.1%2使用Ruby返
它不等于主线程的binding,这个toplevel作用域是什么?此作用域与主线程中的binding有何不同?>ruby-e'putsTOPLEVEL_BINDING===binding'false 最佳答案 事实是,TOPLEVEL_BINDING始终引用Binding的预定义全局实例,而Kernel#binding创建的新实例>Binding每次封装当前执行上下文。在顶层,它们都包含相同的绑定(bind),但它们不是同一个对象,您无法使用==或===测试它们的绑定(bind)相等性。putsTOPLEVEL_BINDINGput