|
|
| 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>
| |
Description
This is your basic "Lemonade Stand" style game, where the player manages a lemonade stand (or similar such store) and tries to make as much money as possible. The game is designed to incorporate money and fractional math skills to teach basic operations.
Localization will be implemented in the final phase, with the stand being written to use more regional ingredients and products.
Project Status
The project has just been re-written and should be a bit easier to localized in the future.
Any interest in helping can be directed towards project leader Nathaniel Case as well as the other listed members below, under contacts. Lemonade Stand is to be considered an open project, with updates varying based on availability. Nathaniel will continue to have interest in the project and will continue to provide assistance and input as time allows.
Releases
Goals
We're looking to create a workable prototype with the ability to buy materials and sell a product.However, the most important goal is to have a working game. While possibly not feature complete, the game should have basic functions working.
Additional Ideas & Features
(Based on available time)
Completed
- Creating a GUI based game
- Incorporating counting of money (bills and coins) to make change
- Cool Random Events:
Ants steal your supplies
-10% sugar
A lemon truck crashes in front of your stand
+10 lemons
In progress
- Creating seasons to vary prices and product demand
- Weather patterns impacting sales
- Making materials perishable to increase difficulty
- Making the program more intuitive so that it can be easily learned
Wishlist
- Advanced mode: changing the recipe for your "lemonade"
- Implementing Bargaining / Haggling
- Random events that may influence supplies and/or cost and/or customers
- Potential use of network, competitive, or cooperative modes
- Choosing location of Lemonade Stand within the town, would influence sales, cost of supplies, etc.
Potential Problems
Localization is likely to be a big problem in this game. Not simply translating the words, but also translating the idea, ie. finding out what kind of shop would be reasonable to open in a country, what it might stock, etc.
This becomes even more difficult when moving to a graphical environment. For every localized region we will need a different set of graphics depending on what the stand is selling.
Updates and Milestones
Updates:
4/28: Wiki reorganized, content added
12/03: 1.1 release imminent
Milestones:
4/24: Have everyone look at the current implementations.
5/1: produce a basic 'sugarized' build to work from. Implement price fluctuations.
5/8: Move to a 'graphical interface' based off of pyGTK or pygame. Add any art we have managed to collect where it seems appropriate.
5/15: Finishing code sugarization
Design Decisions
Is lemonade made at the beginning of the day (make all available lemonade at once) or on the fly (a customer asks for lemonade and it is made for them)? This is important as it impacts the resources from day to day. In the former, normally non-perishable objects like cups will be used if they can make another drink (even beyond demand), however in the latter, it makes the game easy if you stock up on resources and slowly sell them each day. This is usually mitigated by having perishable resources (lemons, etc) and variable prices.
Educational Standards
Standards found here
4.N.4 Select, use, and explain models to relate common fractions and mixed numbers (1/2, 1/3, 1/4, 1/5, 1/6, 1/8, 1/10, 1/12, and 11/2), find equivalent fractions, mixed numbers, and decimals, and order fractions
4.N.6 Exhibit an understanding of the base ten number system by reading, naming, and writing decimals between 0 and 1 up to the hundredths.
4.N.10 Select and use appropriate operations (addition, subtraction, multiplication, and division) to solve problems, including those involving money.
4.D.3 Construct, draw conclusions, and make predictions from various representations of data sets, including tables, bar graphs, pictographs, line graphs, line plots, and tallies
Contacts
Links and Resources
* Activity Page
* Git Repository
* Project Trac