ruby - 我的红宝石游戏有问题,请
问题描述
我正在尝试为 ruby 制作游戏,但我不断收到以下错误PlayerMove = $STDIN.gets.chomp
:
动态常量赋值错误
我尝试将前面更改为$STDIN
to STDIN
,gets.chomp
但似乎没有任何效果。
$Health = 100
$OPHealth = 50
def fight
def NumberN
$RandomNumber = ran(0..30)
end
def Player
print ">"
PlayerMove = gets.chomp
if PlayerMove.downcase == "attack"
RandomNumber - OPHealth
puts "You attach the Spider and do #{RandomNumber} Damage,\n he has #{OPHealth}"
elsif OPHealth >= 0
puts "The SPIDER IS DEAD"
ENDGAME()
elsif Health >= 0
puts "Your dead GAMEOVER you abomination"
else
puts "You need to attack"
Player()
end
end
解决方案
这个特殊问题将与您使用的情况有关:对于变量,Ruby 使用小写蛇形大小写。
更新要使用的代码变量,例如:player_move = gets.chomp
这将解决错误。
像你一样使用大写的驼峰式大小写是为类和模块保留的(常量通常使用大写)。(我确定我在这里遗漏了一些东西 - 如果有人可以纠正我,请告诉我。)
因此,按原样分配值会引发您提到的“动态常量分配错误”。
对此进行一些阅读:$
也很少看到带有前缀的全局变量。这个风格指南是一个很好的资源。
也就是说,简单地更新变量并不能完全解决这个问题——你需要先查看代码的范围和结构,然后才能工作。当你遇到另一个问题时,看看你是怎么做的,如果你不能解决它,把它放到另一个问题中。
推荐阅读
- c++ - 不同TU中类模板全特化成员函数的定义
- java - 流处理器的close()init()方法:重新平衡发生时流线程的行为?
- optimization - 如何对 IBM OPL 中的后处理步骤进行并行处理?
- html - 如何编写css选择器以根据元素内容选择元素
- javascript - 为什么 sessionStorage 中没有逻辑顺序?
- java - BigDecimal/numeric的Java和postgres值的区别
- c - 尝试连续提示直到他们提供仅整数输入时出现意外结果
- javascript - JS 破坏性赋值 - 为什么它会这样工作?
- intellij-idea - 是否有设置关闭 vi/vim 中的宏
- javascript - 输入后如何提交搜索字段