RPG-Maker Quartier

Hier dreht sich alles um die RPG-Maker-Reihe von ASCII/Enterbrain. Der RPG-Maker ist ein Tool, mit dem du dir dein eigenes kleines Rollenspiel erstellen kannst. Du findest hier alles, was du dazu brauchst. Aber natürlich umfasst die Community noch mehr!
Aktuelle Zeit: Di Mär 03, 2020 3:09

Alle Zeiten sind UTC + 1 Stunde



Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast



Ein neues Thema erstellen Auf das Thema antworten  [ 1 Beitrag ] 
Autor Nachricht
Offline
Eintagsfliege
Eintagsfliege
Beiträge: 1
BeitragVerfasst: Sa Mai 04, 2013 17:29 
Hi!
Ich bin gerade noch beim Auffrischen meiner Ruby Kenntnisse und bin über die Aufgabe ein "textbasiertes" Shopscript zu schreiben gestolpert.
Dabei geht es nur um die Grundkenntnisse von Ruby von der Seite:


Bisher ist es mir gelungen alle bis auf die letzten 2 Scriptzeilen zum Laufen zu bringen:
Code:
class Item
  attr_accessor(:name, :preis)
  def initialize(name, preis)
    @name = name
    @preis = preis
  end
  def to_s(name)
   return("#{name}")
  end
end


class Trank < Item
  attr_accessor(:hp_heilung, :mp_heilung)
 
  def initialize(name,preis,hp_heilung,mp_heilung)
    @hp_heilung = hp_heilung
    @mp_heilung = mp_heilung
    super(name,preis)
  end
 
end

class Waffe < Item
  attr_accessor(:schaden)
  def initialize(name,preis,schaden)
    @schaden = schaden
    super(name,preis)
  end
  def waffenname
    @name
  end
end

class Shop
  attr_accessor(:geld, :items)
  def initialize (items,geld)
    @items = items
    @geld = geld
  end
  def hat_item?(item)
    @items.include?(item)
  end
 
#~   Methode notwendig?
  def items
    @items
  end
 
  def kaufe(item,vonwem)
#~     gibt true wieder, wenn item bei verkäufer vorhanden
    if vonwem.hat_item?(item) then
#~     entfernt item beim verkäufer
      vonwem.items.delete_at(vonwem.items.index(item))
#~     fügt item dem käufer hinzu
      self.items.insert((self.items.size+1),item)
#~     transferiere geld von käufer an verkäufer
      self.geld -= item.preis
      vonwem.geld += item.preis
    end
  end
end

# Waffen
schwert = Waffe.new("Schwert", 100, 10)
lanze = Waffe.new("Lanze", 150, 15)
hellebarde = Waffe.new("Hellebarde", 250, 20)
 
# Tränke
heiltrank = Trank.new("Heiltrank", 25, 100, 0)
manatrank = Trank.new("Manatrank", 50, 0, 50)
alraunsirup = Trank.new("Alraunsirup", 250, 100, 100)
 
# Händler
alchemist = Shop.new([heiltrank, heiltrank, manatrank, manatrank, alraunsirup], 500)
schmied = Shop.new([schwert, schwert, schwert, lanze, hellebarde], 200)

# Schmied kauft sich zwei Heiltränke
schmied.kaufe(heiltrank, alchemist)
schmied.kaufe(heiltrank, alchemist)
# Alchemist kauft ein Schwert vom Schmied
alchemist.kaufe(schwert, schmied)
# Wie viel Geld haben beide Händler noch?
print "Schmied: #{schmied.geld} Münzen\n" # => Schmied: 250€
print "Alchemist: #{alchemist.geld} Münzen\n" # => Alchemist: 450€

# was für Items haben beide Händler?
print schmied.items.join(",") # => Schwert, Schwert, Lanze, Hellebarde, Heiltrank
print alchemist.items.join(",") # => Manatrank, Manatrank, Alraunsirup, Schwert


Meine Frage ist: Wieso besitzt die Instanz "schmied" bzw. "alchemist" nicht das Array "items", welches ich mit der Methode ' .join(",") ' als String ausgeben möchte? => print schmied.items.join(",")

Dabei funktioniert:
print schmied.items.include?(schwert) # => true
nicht aber:
print schmied.items

Die Sache ist, ich möchte die Namen der Items ausgeben lassen und nicht die kleingeschriebenen Objektnamen.
Mir ist wohl etwas Grundlegendes entgangen, obwohl ich jede einzelne Übungsaufgabe auf der oben angegebenen Seite ohne Probleme gelöst habe.
Ich hoffe die Problemstellung ist ausführlich genug geschildert...
Danke schon mal.

-K

ps. für Verbesserungsvorschläge bin ich immer offen :)


Nach oben
 Profil  
Mit Zitat antworten  
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 1 Beitrag ] 

Alle Zeiten sind UTC + 1 Stunde


Du darfst keine neuen Themen in diesem Forum erstellen.
Du darfst keine Antworten zu Themen in diesem Forum erstellen.
Du darfst deine Beiträge in diesem Forum nicht ändern.
Du darfst deine Beiträge in diesem Forum nicht löschen.
Du darfst keine Dateianhänge in diesem Forum erstellen.

Suche nach:
Gehe zu:  
cron
Powered by phpBB® Forum Software © phpBB Group
Deutsche Übersetzung durch phpBB.de