【问题标题】:Among us crewmate and imposter generator not working在我们中间的船员和冒名顶替者发电机不工作
【发布时间】:2021-02-04 12:35:35
【问题描述】:

我想要做的是让一个随机生成器生成 9 个火葬和 1 个冒名顶替者,但是当它生成它们时发生的事情是没有生成其中一个火葬,它只是在其他字符串值之间有一个空格,当我在 cmd 上显示值,所以不知道为什么不显示,但我觉得这可能与玩家有关,所以有 10 个工作人员和 1 个冒名顶替者。

impgen = rand (1..10)
deadgen = rand (1..9)
if impgen == 2
  impot = 'Red'
elsif impgen == 3 
  impot = 'Orange'
elsif impgen == 4 
  impot = 'Yellow'
elsif impgen == 5
  impot = 'Green'
end
if impgen == 6
  impot = 'Dark Green'
elsif impgen == 7
  impot = 'Blue'
elsif impgen == 8
  impot = 'Purple'
elsif impgen == 9
  impot = 'Black'
elsif impgen == 10
  impot = 'Cyan'
end
if impgen != 2
  crew1 = 'Red'
if impgen != 3
  crew2 = 'Orange'
end
if impgen != 4
  crew3 = 'Yellow'
if impgen != 5
  crew4 = 'Green'
end
if impgen != 6
  crew5 = 'Dark Green'
if impgen != 7 
  crew6 = 'Blue'
end
if impgen != 8
  crew7 = 'Purple'
if impgen != 9
  crew8 = 'Black'
end
if impgen != 10
  crew9 = 'Cyan'
end
end
end
end
end
puts "Enter Name"
un = gets.chomp
puts "Ok " + un + " let's play Among Us"
sleep (1)
if impgen == 1
  puts "You are an imposter!"
else impgen
  puts "You are a crewmate there is 1 imposter among us!"
  sleep (1.5)
  puts "The other players are Red, Orange, Yellow, Green, Dark Green, Blue, Purple, Black, and Cyan you are Lime"
  sleep (4)
  puts impot
  puts crew1
  puts crew2
  puts crew3
  puts crew4
  puts crew5
  puts crew6
  puts crew7
  puts crew8
  puts crew9
end 

【问题讨论】:

    标签: ruby random generator


    【解决方案1】:

    我认为当你缩进你的代码时,最大的问题就很明显了:

    if impgen != 2
      crew1 = 'Red'
      if impgen != 3
        crew2 = 'Orange'
      end
      if impgen != 4
        crew3 = 'Yellow'
        if impgen != 5
          crew4 = 'Green'
        end
        if impgen != 6
          crew5 = 'Dark Green'
          if impgen != 7 
            crew6 = 'Blue'
          end
          if impgen != 8
            crew7 = 'Purple'
            if impgen != 9
              crew8 = 'Black'
            end
            if impgen != 10
              crew9 = 'Cyan'
            end
          end
        end
      end
    end
    

    这里有一个重大错误。例如,如果impgen == 2,则不会执行以下代码,也不会分配任何船员变量。您可能不想在这里使用嵌套的 if 语句,而是执行以下操作:

    if impgen != 2
      crew1 = 'Red'
    end
    if impgen != 3
      crew2 = 'Orange'
    end
    if impgen != 4
      crew3 = 'Yellow'
    end
    if impgen != 5
      crew4 = 'Green'
    end
    if impgen != 6
      crew5 = 'Dark Green'
    end
    if impgen != 7 
      crew6 = 'Blue'
    end
    if impgen != 8
      crew7 = 'Purple'
    end
    if impgen != 9
      crew8 = 'Black'
    end
    if impgen != 10
      crew9 = 'Cyan'
    end
    

    如果您只是进行此更改,您会看到输出中出现一致的空行。推理很清楚,当impgen 是某个值时,冒名顶替者的船员变量没有被分配。例如,如果 impgen 为 2,则 impgen != 2 的计算结果为 false,并且 crew1 = 'Red' 不会被执行。

    如果这种行为不受欢迎,您可以完全删除 if 语句:

    crew1 = 'Red'
    crew2 = 'Orange'
    crew3 = 'Yellow'
    crew4 = 'Green'
    crew5 = 'Dark Green'
    crew6 = 'Blue'
    crew7 = 'Purple'
    crew8 = 'Black'
    crew9 = 'Cyan'
    

    编辑: 您可能需要考虑重构此代码。我不确定你打算如何使用你的船员变量,但跟踪数组中的每个成员可能更容易:

    crew_members = ["Red", "Orange", "Yellow", "Green", "Dark Green", "Blue", "Purple", "Black", "Cyan"]
    player = crew_members.sample
    imposter = crew_members.sample
    
    puts "Enter Name"
    un = gets.chomp
    puts "Ok " + un + " let's play Among Us"
    sleep (1)
    if player == imposter
      puts "You are an imposter!"
    else
      puts "You are a crewmate there is 1 imposter among us!"
      sleep (1.5)
      puts "The other players are #{(crew_members - [player]).join(", ")} you are #{player}"
    end 
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-04-02
      • 1970-01-01
      • 2015-08-26
      • 2016-01-12
      • 2019-07-05
      相关资源
      最近更新 更多