首页 > 解决方案 > 我的红宝石游戏有问题,请

问题描述

我正在尝试为 ruby​​ 制作游戏,但我不断收到以下错误PlayerMove = $STDIN.gets.chomp

动态常量赋值错误

我尝试将前面更改为$STDINto STDINgets.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

解决方案


这个特殊问题将与您使用的情况有关:对于变量,Ruby 使用小写蛇形大小写。

更新要使用的代码变量,例如:player_move = gets.chomp这将解决错误。

像你一样使用大写的驼峰式大小写是为类和模块保留的(常量通常使用大写)。(我确定我在这里遗漏了一些东西 - 如果有人可以纠正我,请告诉我。)

因此,按原样分配值会引发您提到的“动态常量分配错误”。

对此进行一些阅读:$也很少看到带有前缀的全局变量。这个风格指南是一个很好的资源。

也就是说,简单地更新变量并不能完全解决这个问题——你需要先查看代码的范围和结构,然后才能工作。当你遇到另一个问题时,看看你是怎么做的,如果你不能解决它,把它放到另一个问题中。


推荐阅读