mirror of https://github.com/E-Almqvist/hsf
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
96 lines
2.1 KiB
96 lines
2.1 KiB
class Coffee
|
|
|
|
attr_accessor(:location, :change, :coffees, :price, :served)
|
|
|
|
def initialize(location, change, coffees, price)
|
|
|
|
@location = location
|
|
@change = change
|
|
@coffees = coffees
|
|
@price = price
|
|
@served = 0
|
|
|
|
end
|
|
|
|
def prompt()
|
|
if @coffees > 0
|
|
puts "betala #{@price} kr"
|
|
inserted_money = await_payment()
|
|
successful_payment = verify_payment(inserted_money)
|
|
|
|
if successful_payment == true
|
|
|
|
give_coffee()
|
|
|
|
end
|
|
else
|
|
puts "Inget mera kaffe finns! :("
|
|
end
|
|
end
|
|
|
|
def give_coffee
|
|
|
|
@coffees -= 1
|
|
|
|
puts "här är ditt kaffe"
|
|
|
|
end
|
|
|
|
def await_payment()
|
|
print("Inset money: ")
|
|
inp = gets.chomp
|
|
|
|
coins = inp.gsub(" ", "").split(",")
|
|
coin_hash = Hash.new(0)
|
|
|
|
coins.each_with_index do |v, k|
|
|
coin_arr = v.split(":")
|
|
coin_type = coin_arr[0].to_i
|
|
coin_amount = coin_arr[1].to_i
|
|
|
|
coin_hash[coin_type] = coin_amount
|
|
end
|
|
|
|
return coin_hash
|
|
end
|
|
|
|
def verify_payment(coins)
|
|
|
|
summed_price = 0
|
|
|
|
coins.each do |coin_array|
|
|
summed_price += coin_array[0] * coin_array[1]
|
|
end
|
|
|
|
d_price = summed_price - @price
|
|
|
|
if d_price < 0
|
|
puts "du har betalat för lite"
|
|
return false
|
|
elsif d_price > 0
|
|
|
|
puts "Du har betalat för mycket!"
|
|
puts "Här är din change."
|
|
|
|
@change.each_key do |type|
|
|
amount = (d_price / type).to_i
|
|
if type * amount == d_price
|
|
@change[type] -= amount
|
|
puts "här är #{amount}st #{type}kr"
|
|
break
|
|
else
|
|
puts "unable to give change"
|
|
end
|
|
end
|
|
|
|
return true
|
|
elsif d_price == 0
|
|
return true
|
|
end
|
|
|
|
end
|
|
|
|
end
|
|
|
|
x = Coffee.new("Något ställe", {5=>10, 2=>2}, 1, 10)
|
|
x.prompt() |