Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

291
Vistas
¿Cómo hacer que 2 entidades de la misma clase interactúen?

Estoy tratando de hacer que 2 "personas" de la misma clase interactúen entre sí y cambien las "estadísticas" de cada uno. Sin embargo, aparece el error "el argumento formal no puede ser una constante".

 class Hands attr_reader :name, :element, :skill, :mana, :health, :attack, :fire, :water, :lyfe def initialize(name, element, skill) @mana = 100 @health = 200 @name = name @element = element @skill = skill end def mana sleep 1 puts "#{@name} has #{@mana} mana." end def health sleep 1 puts "#{@name} has #{@health} HP." end def restore(Hands) if @element == "Lyfe" @mana = 100 puts "#{@name} has been restored!" else puts "#{@name} cannot use this ability!" end end end player1 = Hands.new('Silk', 'Lyfe', 'Summon') player2 = Hands.new('Nubz', 'Lyfe', 'Manipulate Wildlife') player3 = Hands.new('Lisk', 'Water', 'Invisible') player4 = Hands.new('Azzi', 'Water', 'Manipulate Water') player5 = Hands.new('Zeph', 'Fire', 'Lightning') player6 = Hands.new('Ford', 'Fire', 'Manipulate Fire') player7 = Hands.new('Boyd', 'Fire', 'Craft') player1.restore("Nubz")

Aquí estoy tratando de hacer que el jugador 1 "restaure" al jugador 2 a su maná completo. Sé que el código no es perfecto, pero no estoy seguro de cómo hacerlo. Centrándose en el comando de restauración, los demás funcionan bien.

over 4 years ago · Santiago Trujillo
1 Respuestas
Responde la pregunta

0

Debería poder pasar la instancia del jugador que desea afectar al método de restore en lugar de la cadena de nombre. Luego puede actualizar los atributos de ese jugador según sea necesario. Un ejemplo rápido:

Actualice la clase para hacer que el mana se pueda escribir:

 class Hands attr_reader :name, :element, :skill, :mana, :health, :attack, :fire, :water, :lyfe attr_writer :mana # ... end

Actualice el método de restore para aceptar la instancia del jugador:

 def restore(hands) if element == "Lyfe" hands.mana = 100 puts "#{hands.name} has been restored!" else puts "#{name} cannot use this ability!" end end

Pasar instancia al método:

 player1 = Hands.new('Silk', 'Lyfe', 'Summon') player2 = Hands.new('Nubz', 'Lyfe', 'Manipulate Wildlife') player1.restore(player2) #=> Nubz has been restored!
over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda