Difference between revisions of "Lemonade Stand"

From Sugar Labs
Jump to navigation Jump to search
 
(56 intermediate revisions by 8 users not shown)
Line 1: Line 1:
 
{{TOCright}}
 
{{TOCright}}
 +
 +
[[File:ScreenshotCloudy.jpg|500px]]
 +
 
==Description==
 
==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.  
 
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.  
 
We plan to begin with a basic framework, e.g. text based command line, and work up based on free time. Ideally, the game will consist of graphics and a refined GUI front end, similar in look to the currently available flash implementations of Lemonade Stand (although more simplistic, being based in Python).
 
  
 
Localization will be implemented in the final phase, with the stand being written to use more regional ingredients and products.
 
Localization will be implemented in the final phase, with the stand being written to use more regional ingredients and products.
  
==Goals==
+
==Project Status==
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.
+
{{:Lemonade_Stand/status}}
  
===Extra Features===
+
Any interest in helping can be directed towards project leader [[User:Qalthos|Nathaniel Case]] as well as any of the other listed active members. Lemonade Stand is to be considered an open project, which is currently undoergoing active development for the RIT fall quarter 2010.  Nathaniel will continue to have interest in the project and will continue to provide assistance and input as time allows beyond this time.
Based on available time:
 
  
- Creating a GUI based game<br />
+
==Releases==
- Incorporating counting of money (bills and coins) to make change<br />
+
* [http://wiki.sugarlabs.org/f/fe/Lemonade_Stand_Stable.xo 1.0.0]: initial release.
- Creating seasons to vary prices and product demand<br />
+
* [http://gitorious.org/lemonade-stand-olpc/lemonade-stand-olpc/commit/aaf4186bf1403a6ee2892f9c606d676d78311f17 1.1.0](git tag): Updated game code.
- Possibly making materials perishable to increase difficulty<br />
+
* [http://activities.sugarlabs.org/en-US/sugar/addons/versions/4321#version-4 2.0, XO Release 4]: Game Rewrite
- Making an intuitive program that can be easily learned, and which has replay value<br />
+
* [http://activities.sugarlabs.org/en-US/sugar/addons/versions/4321#version-5 2.1, XO Release 5]: Beautification Project
- Weather patterns impacting sales<br />
 
- Advanced mode: changing the recipe for your "lemonade"<br />
 
- Bargaining/haggling<br />
 
- Random events that may influence supplies and/or cost and/or customers<br />
 
- Potential use of network, competitive or cooperative modes<br />
 
- Choosing location of Lemonade Stand within the town, would influence sales, cost of supplies, etc.<br />
 
  
- Cool Random Events:
+
==Structure==
 +
For more detailed information on how to implement new things, please see the [[Lemonade_Stand/Developer_Documentation|Developer Documentation]]
  
Ants steal your supplies
+
The game's 'day' is split into 3 parts (Start of day, Day occurs, and End of day)
    -10% sugar
 
A lemon truck crashes in front of your stand
 
    +10 lemons
 
  
==Potential Problems==
+
[[File:GameFlow2.jpg|550px]]
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.
 
  
==Updates and Milestones==
+
===Morning===
 +
Supplies are purchased and plans are made for the day.<br/>
 +
A recipe may be chosen if more than one is available.
  
===Updates:===
+
===Day===
 +
Customers queue at the stand and buy lemonade.<br/>
  
4/28: Wiki reorganized, content added
+
===Evening===
 +
Profit is calculated by the player and 'put away'.<br/>
  
===Milestones:===
+
===Midnight===
 +
The day's activities are put together into a digest, including:
 +
* Weather forecast for the next few days
 +
* Special events that happened during the day
 +
* Current discounts on supplies
 +
* Any supplies which have perished will be listed
  
4/24: Have everyone look at the current implementations.
+
Once the digest has been displayed, the game returns to morning again.
  
5/1: produce a basic 'sugarized' build to work from.  Implement price fluctuations.
+
==Difficulty Settings==
 +
===Easy===
 +
*Supplies will not perish
 +
*Prices are fixed at multiples of 25 and products yield more money per sale.
 +
*Subtotals are listed for all math problems
 +
*Math-based screens will not close while there are problems (trying to buy too many supplies, not collecting correct change)
  
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.
+
===Normal===
 +
*Supplies will not perish
 +
*Prices are more complex multiples of 5 with slightly smaller profit margins
 +
*Subtotals are listed for all math problems
 +
*Math-based screens will not close while there are problems (trying to buy too many supplies, not collecting correct change)
  
5/15: Finishing code sugarization
+
===Hard===
 +
*Supplies will perish
 +
*Prices are the same as Normal
 +
*Subtotals are listed for all math problems
 +
*Math-based screens will allow you to give bad answers (buy too many supplies, not collecting correct change)
  
==Design Decisions==
+
===Impossible===
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.
+
*Supplies will perish
 +
*Prices are not multiples of 5
 +
*Subtotals are not listed for math problems
 +
*Math-based screens will allow you to give bad answers (buy too many supplies, not collecting correct change)
  
==Educational Standards==
+
==Goals==
[http://wiki.sugarlabs.org/go/Math4Team/Resources/Curriculum_Chart Standards found here]
+
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.
  
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
+
===Additional Ideas & Features===
 +
(Based on available time)
  
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.
+
=====Completed=====
 +
* Creating a GUI based game
 +
* Incorporating counting of money (bills and coins) to make change
 +
* Cool [[Lemonade Stand/Events|Random Events]]:
 +
* Weather patterns impacting sales
 +
* Making materials perishable to increase difficulty
 +
* Making the program more intuitive so that it can be easily learned<br />
  
4.N.10 Select and use appropriate operations (addition, subtraction, multiplication, and division) to solve problems, including those involving money.
+
=====In progress=====
 +
* Implementing multiple difficulties
 +
* Redesign UI
 +
* Advanced mode: changing the recipe for your "lemonade"<br />
 +
** Strawberry Lemonade
 +
** (Implemented but not purchaseable or usable)
  
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
+
=====Wishlist=====
 +
* Creating seasons to vary prices and product demand<br />
 +
* Random events that may influence supplies and/or cost and/or customers<br />
 +
* "Tools" to buy to increase efficiency
 +
** Juicer reduces lemon requirement of recipies by 1/2
 +
* Hidden values 'advertising' and 'loyalty'
 +
** Upgrading the stand / buying more recipies increases advertising (does not decrease)
 +
** Prices close to customer's expectations / satisfying demand increases loyalty (decreases over time)
 +
** Both could act as a multiplier to customer demand. (base demand x advertising x loyalty = actual demand)
 +
* Implementing Bargaining / Haggling<br />
 +
* Potential use of network, competitive, or cooperative modes<br />
 +
* Choosing location of Lemonade Stand within the town, would influence sales, cost of supplies, etc.<br />
 +
* Perhaps showing currency the player has letting them find total profit
  
==Contacts==
+
==Helping Out==
*[[User:Qalthos|Nathaniel Case]]
+
One of the things we always need are new [[Lemonade Stand/Events|random events]] to make the game more interesting.<br/>
*[[User:Mdd8919 | Mitchell DeMarco]]
+
Another thing which is always useful is submitting new [[Lemonade Stand/Art|artwork]].<br/>
*[[User:Epsilon748 | Anthony King]]
 
*[[User:Echo35 | Anthony Lubrani]]
 
*[[User:Jsang1|Jonathan Sanger]]
 
*[[User:Sss1406 | Steven Schoenfeld]]
 
  
==Links and Resources==
+
==Fall 2010 Milestones==
Coming soon!
+
* Week 3:
 +
** Get JT's sketches into image files
 +
** come up with more events and weather ideas
 +
** add recipes
  
==Code so far==
+
* Week 4:
<pre>
+
** new background image
#!/usr/env python
+
** get into constants.py
# -*- coding: cp1252 -*-
+
** define what difficulties entail, implement lowest difficulty
import random
+
** nail down ideas about overlays, startup screen
from counting import play_Money
 
  
 +
* Week 5:
 +
** implement two difficulties, simple and insane
 +
** Get counting game images
 +
** implement basic splash screen
  
 +
* Week 6:
 +
** Get store images
 +
** implement counting game
  
#Generisize the names of supplys to make it easily editable
+
* Week 7:
#[0] = name of the stand, [1] = first supply, [2] = second supply, [3] = third supply, [4] = the object that is being sold
+
** Get activity log images
variables = ['Lemonade Stand','cups','lemons','sugar','cups']
+
** Implement store
  
print 'Welcome to ' + variables[0]
+
* Week 8:
 +
** Implement activity log
 +
** Get images for other parts of the game (events, weather, etc.)
  
#Random weather event, if its a hot day all stock will sell,  
+
==Potential Problems==
# if its a normal day, 90% will sell, and if its a raining day 80% will sell
+
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.
  
def weather_Change( ):
+
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.
    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
+
==Educational Standards==
def take_input(text, default = 0):
+
[http://wiki.sugarlabs.org/go/Math4Team/Resources/Curriculum_Chart Standards found here]
    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
+
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
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!'
+
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.
        stored_lemons += 10
 
       
 
    elif event == 2:
 
  
        print 'It starts raining cups!'
+
4.N.10 Select and use appropriate operations (addition, subtraction, multiplication, and division) to solve problems, including those involving money.
        stored_cups += 10
 
  
    print ""
+
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==
 +
=== Current ===
 +
*[[User:Qalthos|Nathaniel Case]]
 +
*[[User:Jlew| Justin Lewis]]
 +
*[[User:Sarah Wagner|Sarah Wagner]]
 +
*[[User:JT Mengel|JT Mengel]]
  
#Decreases currently the supply's by 10% each day
+
=== Historical ===
def supply_Decay():
+
*[[User:Mdd8919 | Mitchell DeMarco]]
    global stored_sugar, stored_lemons, stored_cups
+
*[[User:Epsilon748 | Anthony King]]
    if stored_sugar > 0:
+
*[[User:Echo35 | Anthony Lubrani]]
        stored_sugar -= 10 % stored_sugar
+
*[[User:Jsang1|Jonathan Sanger]]
    if stored_lemons > 0:
+
*[[User:Sss1406 | Steven Schoenfeld]]
        stored_lemons -= 10 % stored_lemons
 
    if stored_cups > 0:
 
        stored_cups -= 10% stored_cups
 
  
    return -1
+
==Getting the Latest Snapshot from Git==
   
+
Lemonade Stand is available either under the [http://dbad-license.org/ DBAD License] or the GPLv3+
# default values
 
cup_price = .25
 
lemon_price = 1.00
 
sugar_price = .05
 
weather = 0
 
product_price = 1.50
 
  
#starting resources
+
To get the latest working version from Git, open a terminal and enter these commands:
bank = 100
 
  
stored_cups = 0
+
git clone git://gitorious.org/lemonade-stand-olpc/lemonade-stand.git<br/>
stored_lemons = 0
+
cd lemonade-stand<br/>
stored_sugar = 0
+
git clone git://git.fedorahosted.org/FortuneEngine.git fortuneengine<br/>
  
# take in input
+
mv fortuneengine/fortuneengine/* ./fortuneengine/<br/>
num_days = take_input("How many days would you like to play for?", 30)
 
  
for day in range(1, num_days + 1):
+
If you don't have pygame, then download and install it from [http://pygame.org pygame].
  
   
+
The game can then be run by executing 'python LemonadeStand.py'
  
 +
==Game Play==
 +
After entering the command to run the game the following specials keys are used to actually play:
 +
*'''<ENTER>''':
 +
**From the Welcome Screen - Enters the game.
 +
**From the Main Screen - Enter the store.
 +
**From the Store Screen - Complete transaction, Leave store.
 +
**From Daily Log - Submits values entered.
 +
*'''Arrow Keys''':
 +
**From the Store Screen - Left and right arrows select a product.
 +
**From Daily Log - Up and down arrows select a monetary value (dollars, quarters, etc).
 +
*'''Number Keys''': From the Store Screen - Used to enter the desired quantity of the selected product.
 +
**From Daily Log - Used to enter the number of dollars, quarters, etc. which make up your profit.
 +
*'''<h>''': From any screen - Causes a help message to appear or disappear.
 +
*'''<ESC>''': From any screen - Exits the game.
  
    print ""
 
    print "____________________"
 
    print "    Day number " + `day`
 
    print "¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯"
 
    print ""
 
  
    random_Event()
+
To access the different difficulty levels use the following commands to run LemonadeStand.py:
 +
*'''Easy''': python LemonadeStand.py -d 0
 +
*'''Normal''': python LemonadeStand.py -d 1
 +
*'''Hard''': python LemonadeStand.py -d 2
 +
*'''Impossible''': python LemonadeStand.py -d 3
  
 
+
==Links and Resources==
    print "You have "+`stored_cups`+ " " + variables[1] + ", " +`stored_lemons`+ " " + variables[2] + ", and "+`stored_sugar`+ " " + variables[3] + " left."
+
* [http://activities.sugarlabs.org/en-US/sugar/addon/4321/ Activity Page]
 
+
* [http://gitorious.org/lemonade-stand-olpc Git Repository]
    print variables[1] + " price: $" + `cup_price` + "    " +  variables[2] + " price: $"+ "%.2f" % lemon_price + "    " + variables[3] + " price: $"+ "%.2f" % sugar_price
+
* [https://fedorahosted.org/fossrit/wiki/LemonadeStand Project Trac]
 
 
    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>
 

Latest revision as of 12:48, 12 August 2011

ScreenshotCloudy.jpg

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

Status: Released/Hibernation
Version 2.1 Released 11/12/10
Group Members: Nathaniel Case, JT Mengel, Sarah Wagner, Mitchell DeMarco, Anthony King, Anthony Lubrani, Jonathan Sanger, Steven Schoenfeld, Justin Lewis
Lemonade stand (or more likely, *Insert produce here* stand) is a collaboration project at RIT. It is designed to test children on fractions, working with money, estimation, and other math topics. While our time restraints limit the extent to which we can implement features, the current goal is a feature complete program even if lacking in graphics. We plan on having a system based on buying and selling commodities and an eventual season based economy.

The largest and most complex task of the project will be the introduction of a basic AI to handle the economy, more graphics, and localization. We are planning on introducing the game with a generic currency model while being easy to replace for regional types.

Lemonade Stand is taking a short hiatus following the 2.1 release to identify the next series of features to implement for the next release.

Any interest in helping can be directed towards project leader Nathaniel Case as well as any of the other listed active members. Lemonade Stand is to be considered an open project, which is currently undoergoing active development for the RIT fall quarter 2010. Nathaniel will continue to have interest in the project and will continue to provide assistance and input as time allows beyond this time.

Releases

Structure

For more detailed information on how to implement new things, please see the Developer Documentation

The game's 'day' is split into 3 parts (Start of day, Day occurs, and End of day)

GameFlow2.jpg

Morning

Supplies are purchased and plans are made for the day.
A recipe may be chosen if more than one is available.

Day

Customers queue at the stand and buy lemonade.

Evening

Profit is calculated by the player and 'put away'.

Midnight

The day's activities are put together into a digest, including:

  • Weather forecast for the next few days
  • Special events that happened during the day
  • Current discounts on supplies
  • Any supplies which have perished will be listed

Once the digest has been displayed, the game returns to morning again.

Difficulty Settings

Easy

  • Supplies will not perish
  • Prices are fixed at multiples of 25 and products yield more money per sale.
  • Subtotals are listed for all math problems
  • Math-based screens will not close while there are problems (trying to buy too many supplies, not collecting correct change)

Normal

  • Supplies will not perish
  • Prices are more complex multiples of 5 with slightly smaller profit margins
  • Subtotals are listed for all math problems
  • Math-based screens will not close while there are problems (trying to buy too many supplies, not collecting correct change)

Hard

  • Supplies will perish
  • Prices are the same as Normal
  • Subtotals are listed for all math problems
  • Math-based screens will allow you to give bad answers (buy too many supplies, not collecting correct change)

Impossible

  • Supplies will perish
  • Prices are not multiples of 5
  • Subtotals are not listed for math problems
  • Math-based screens will allow you to give bad answers (buy too many supplies, not collecting correct change)

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:
  • Weather patterns impacting sales
  • Making materials perishable to increase difficulty
  • Making the program more intuitive so that it can be easily learned
In progress
  • Implementing multiple difficulties
  • Redesign UI
  • Advanced mode: changing the recipe for your "lemonade"
    • Strawberry Lemonade
    • (Implemented but not purchaseable or usable)
Wishlist
  • Creating seasons to vary prices and product demand
  • Random events that may influence supplies and/or cost and/or customers
  • "Tools" to buy to increase efficiency
    • Juicer reduces lemon requirement of recipies by 1/2
  • Hidden values 'advertising' and 'loyalty'
    • Upgrading the stand / buying more recipies increases advertising (does not decrease)
    • Prices close to customer's expectations / satisfying demand increases loyalty (decreases over time)
    • Both could act as a multiplier to customer demand. (base demand x advertising x loyalty = actual demand)
  • Implementing Bargaining / Haggling
  • Potential use of network, competitive, or cooperative modes
  • Choosing location of Lemonade Stand within the town, would influence sales, cost of supplies, etc.
  • Perhaps showing currency the player has letting them find total profit

Helping Out

One of the things we always need are new random events to make the game more interesting.
Another thing which is always useful is submitting new artwork.

Fall 2010 Milestones

  • Week 3:
    • Get JT's sketches into image files
    • come up with more events and weather ideas
    • add recipes
  • Week 4:
    • new background image
    • get into constants.py
    • define what difficulties entail, implement lowest difficulty
    • nail down ideas about overlays, startup screen
  • Week 5:
    • implement two difficulties, simple and insane
    • Get counting game images
    • implement basic splash screen
  • Week 6:
    • Get store images
    • implement counting game
  • Week 7:
    • Get activity log images
    • Implement store
  • Week 8:
    • Implement activity log
    • Get images for other parts of the game (events, weather, 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.

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

Current

Historical

Getting the Latest Snapshot from Git

Lemonade Stand is available either under the DBAD License or the GPLv3+

To get the latest working version from Git, open a terminal and enter these commands:

git clone git://gitorious.org/lemonade-stand-olpc/lemonade-stand.git
cd lemonade-stand
git clone git://git.fedorahosted.org/FortuneEngine.git fortuneengine

mv fortuneengine/fortuneengine/* ./fortuneengine/

If you don't have pygame, then download and install it from pygame.

The game can then be run by executing 'python LemonadeStand.py'

Game Play

After entering the command to run the game the following specials keys are used to actually play:

  • <ENTER>:
    • From the Welcome Screen - Enters the game.
    • From the Main Screen - Enter the store.
    • From the Store Screen - Complete transaction, Leave store.
    • From Daily Log - Submits values entered.
  • Arrow Keys:
    • From the Store Screen - Left and right arrows select a product.
    • From Daily Log - Up and down arrows select a monetary value (dollars, quarters, etc).
  • Number Keys: From the Store Screen - Used to enter the desired quantity of the selected product.
    • From Daily Log - Used to enter the number of dollars, quarters, etc. which make up your profit.
  • <h>: From any screen - Causes a help message to appear or disappear.
  • <ESC>: From any screen - Exits the game.


To access the different difficulty levels use the following commands to run LemonadeStand.py:

  • Easy: python LemonadeStand.py -d 0
  • Normal: python LemonadeStand.py -d 1
  • Hard: python LemonadeStand.py -d 2
  • Impossible: python LemonadeStand.py -d 3

Links and Resources