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