我正在尝试为红宝石制作游戏,但我在$STDIN
时遇到以下错误:
动态常量赋值错误
我尝试将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
,似乎没有任何效果。
int
答案 0 :(得分:3)
这个特殊问题将与你正在使用的情况有关:对于变量,Ruby使用较低的蛇案例。
更新要使用的代码变量,例如:player_move = gets.chomp
,这样可以解决错误。
使用上层camel case保留用于类和模块(常量使用大写)。 (我确定我在这里遗漏了一些东西 - 让我知道是否有人可以纠正我。)
因此,按原样分配值会引发您提到的“动态常量赋值错误”。
对此进行一些阅读:前缀为$
的全局变量也很少见。这个style guide是非常好的资源。
也就是说,简单地更新变量并不能完全解决这个问题 - 在此之前,您需要查看代码的范围和结构。当你遇到另一个问题时,看看你是如何进行的,如果你无法修复它,请将其弹出另一个问题。