Я нахожусь в процессе создания простой игры Rock, Paper, Scissor OOP в ruby, чтобы лучше понять, как все работает для Ruby OOP. Но я столкнулся с проблемой.
Я хочу получить доступ к переменной экземпляра из другого класса, но я получаю эту ошибку при запуске программы
Traceback (most recent call last):
2: from rps.rb:44:in `<main>'
1: from rps.rb:40:in `start'
rps.rb:17:in `greeting': undefined method `name' for nil:NilClass (NoMethodError)
Строка 17 -
puts "Welcome #{@player1.name} and #{@player2.name}"
Это мой весь мой код до сих пор
class Player
attr_accessor :name, :player1, :player2,
def initialize(name)
@name = name
@player1 = Player.new(name1)
@player2 = Player.new(name2)
end
end
class Main
def greeting
puts "Welcome to Rock-Paper-Scissor"
sleep(0.5)
puts "Welcome #{@player1.name} and #{@player2.name}"
end
def instruct
puts "The rules of the game are simple\n"
puts "Choose Rock, Paper or Scissor each turn\n "
puts "Paper beats Rock, Scissor beats paper and Rock beats Scissor\n"
puts "Ready....?"
end
end
def start
puts "Hi, please enter your name player 1: "
name1 = gets.chomp
puts "Hi, please enter your name player 2: "
name2 = gets.chomp
game = Main.new
game.greeting
game.instruct
end
start
***** Внесены новые изменения в коде для его корректной работы *******
class Player
attr_accessor :name
def initialize(name)
@name = name
end
end
class Game
def greeting
puts "Hi, please enter your name player 1: "
name1 = gets.chomp
@player1 = Player.new(name1)
puts "Hi, please enter your name player 2: "
name2 = gets.chomp
@player2 = Player.new(name2)
puts "Welcome to Rock-Paper-Scissor"
sleep(0.5)
puts "Welcome #{@player1.name} and #{@player2.name}"
end
def instruct
puts "The rules of the game are simple\n"
puts "Choose Rock, Paper or Scissor each turn\n "
puts "Paper beats Rock, Scissor beats paper and Rock beats Scissor\n"
puts "Ready....?"
end
end
def start
game = Game.new
game.greeting
game.instruct
end
start