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>
| |