Lemonade Stand: Difference between revisions

Jlew (talk | contribs)
Jlew (talk | contribs)
Removed code, now in repo, updated links
Line 88: Line 88:


==Links and Resources==
==Links and Resources==
Coming soon!
* [http://activities.sugarlabs.org/en-US/sugar/addon/4321/ Activity Page]
 
  * [http://gitorious.org/lemonade-stand-olpc/lemonade-stand-olpc Git Repository]
==Code so far==
* [https://fedorahosted.org/fossrit/wiki/LemonadeStand Project Trac]
<pre>
#!/usr/env python
# -*- coding: cp1252 -*-
import random
from counting import play_Money
 
 
 
#Generisize the names of supplys to make it easily editable
#[0] = name of the stand, [1] = first supply, [2] = second supply, [3] = third supply, [4] = the object that is being sold
variables = ['Lemonade Stand','cups','lemons','sugar','cups']
 
print 'Welcome to ' + variables[0]
 
#Random weather event, if its a hot day all stock will sell,
# if its a normal day, 90% will sell, and if its a raining day 80% will sell
 
def weather_Change( ):
    global weather
    weather = random.randint( -1, 1 )
   
    if weather == -1:
        print "It looks like its going to rain tomorrow"
    elif weather == 0:
        print "Its a normal day tomorrow"
    elif weather == 1:
        print "Tomorrow looks to be very hot"
 
#Format the input text, and make it return a 0 if input is incorrect
def take_input(text, default = 0):
    try:
        in_text = input(text+" ["+`default`+"]: ")
    except:
        return default
    if in_text < 0:
        in_text = 0
   
    return in_text
 
#Declare a random event, More events can be added easily by building a new case statment
def random_Event():
    global stored_sugar, stored_lemons, stored_cups
    event = random.randint(0, 10) 
   
    if event == 0:
       
        if stored_sugar > 10:
            stored_sugar -= 10
            print 'Ants steal your supplies!'
        else:
            stored_sugar = 0
           
    elif event == 1:
 
        print 'A lemon truck crashes in front of your stand!'
        stored_lemons += 10
       
    elif event == 2:
 
        print 'It starts raining cups!'
        stored_cups += 10
 
    print ""
 
 
#Decreases currently the supply's by 10% each day
def supply_Decay():
    global stored_sugar, stored_lemons, stored_cups
    if stored_sugar > 0:
        stored_sugar -= 10 % stored_sugar
    if stored_lemons > 0:
        stored_lemons -= 10 % stored_lemons
    if stored_cups > 0:
        stored_cups -= 10% stored_cups
 
    return -1
   
# default values
cup_price = .25
lemon_price = 1.00
sugar_price = .05
weather = 0
product_price = 1.50
 
#starting resources
bank = 100
 
stored_cups = 0
stored_lemons = 0
stored_sugar = 0
 
# take in input
num_days = take_input("How many days would you like to play for?", 30)
 
for day in range(1, num_days + 1):
 
   
 
 
    print ""
    print "____________________"
    print "    Day number " + `day`
    print "¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯"
    print ""
 
    random_Event()
 
 
    print "You have "+`stored_cups`+ " " + variables[1] + ", " +`stored_lemons`+ " " + variables[2] + ", and "+`stored_sugar`+ " " + variables[3] + " left."
 
    print variables[1] + " price: $" + `cup_price` + "    " + variables[2] + " price: $"+ "%.2f" % lemon_price + "    " + variables[3] + " price: $"+ "%.2f" % sugar_price
 
    expenses = 0
 
    cost_over = 1
 
 
    #Checks to make sure you dont go over your bank amount while buying.
 
    while cost_over == 1:
 
        potential_expense = 0
        in_num = take_input("How many " + variables[1])
        potential_expense = expenses + (in_num * cup_price)
 
        if potential_expense < bank:
            cost_over = -1
            expenses += in_num * cup_price
            stored_cups += in_num
        else:
            print 'You cant afford that many ' + variables[1]
 
    cost_over = 1
 
    while cost_over == 1:
 
        potential_expense = 0
        in_num = take_input("How many " + variables[2])
        potential_expense = expenses + (in_num * cup_price)
 
        if potential_expense < bank:
            cost_over = -1
            expenses += in_num * lemon_price
            stored_lemons += in_num
        else:
            print 'You cant afford that many ' + variables[2]
 
    cost_over = 1
 
    while cost_over == 1:
 
      potential_expense = 0
      in_num = take_input("How much " + variables[3])
      potential_expense = expenses + (in_num * cup_price)
 
      if potential_expense < bank:
          cost_over = -1
          expenses += in_num * sugar_price
          stored_sugar += in_num
 
      else:
          print 'You can not afford that many ' + variables[3]
 
 
 
    # Find the lowest amount of supplys, and make that many of lemonade that day
    sales = max(min(stored_cups, stored_lemons, stored_sugar),0)
 
    # Option 2: make as many as requested
    stored_cups -= sales
    stored_lemons -= sales
    stored_sugar -= sales
   
    if weather == 0:
        sales -= 10 % sales
    elif weather == -1:
        sales -= 20 % sales
 
 
   
    print `sales`+ ' ' + variables[4]+ " made for $"+ "%.2f" % expenses
 
    profit = sales * product_price
    print `sales`+ " " + variables[4] +" were sold today for $"+ "%.2f" % profit
   
    print "You made $"+ "%.2f" % (profit - expenses)+" today."
   
   
    if (profit - expenses) <= 0:
   
        print "You lost money today"
       
    else:   
   
        #If you didnt lose money that day, play the small money game to put away your change
        #If you put away change right, you get to keep the profit, otherwise you lose it
 
        print "You go to put profits away"
                 
        if play_Money( int(profit - expenses) ) == 1:
            print "you put the money away correctly"
            bank += profit - expenses
        else:
            print "You lost the money when putting it away"
   
   
    print "Current funds: $"+ "%.2f" % bank
   
    #Decrease the supply's by 10%
    #Warn for the next days weather
 
    supply_Decay()
    weather_Change()
   
   
    print
   
print "Done!"
 
 
</pre>
 
Counting code
 
<pre>
 
 
dollar = 1
quarter = .25
dime = .10
nickel = .05
penny = .01
 
 
 
def take_input(text, default = 0):
    try:
        in_text = input(text+" ["+`default`+"]: ")
    except:
        return default
    if in_text < 0:
        in_text = 0
   
    return in_text
 
 
def play_Money( money_Find ):
    global quarter, dime, nickel, penny
   
    total = 0
   
    #Takes the amount of money
    total += dollar*take_input( "How many dollars? ")
 
   
    total += quarter*take_input( "How many quarters? ")
 
    total += dime*take_input( "How many dimes? ")
 
    total += nickel*take_input( "How many nickels? ")
 
    total += penny*take_input( "How many pennies? ")
           
    if total == money_Find:
        return 1
           
    else:
        return -1
       
 
</pre>