Language: Python
Program required: Processing 3.0
Purpose: To practice list operations such as adding, removing and finding indices Degree of Difficulty: Moderate The Sesame Street Bakery sells four items at the following prices. Bread ($5) Doughnut ($2) Muffin ($3) Cookie ($1) For this question, you will write a program that allows the user to place an order at the bakery. Here is how your program should behave. Use a 500 times 500 white canvas as your background On the left side of the canvas. display the bakery’s menu, which consists of the name and price of each item. On the right side of the canvas, display all of the items in the user’s order so far. Initially, the order will be empty. It is okay if the order gets too big for the screen: you don’t need to handle this case. Below the user’s order, display the total cost of the entire order. Initially the cost is O. When the user presses the ‘b’, ‘d’, ‘m’ or ‘c’ keys: Add the appropriate item to the order (‘b’ for Bread, ‘c’ for Cookie, etc…) When the user presses the ‘u’ (for “undo”) key: Remove the most recently-added item from the order and adjust the total cost accordingly. It is not possible to solve this question without making at least some use of lists (in particular, you will need a list to store the order). However, to get full marks for this question, you must make effective use of lists beyond the bare minimum in the following ways: Store the items in the bakery’s menu in a list, i.e. at the top of your program you will have a statement like menu = [“Bread”, “Doughnut”, “Muffin”. “COOKIE”]. Your program should be designed such that if the bakery were to add another item to its menu, your draw) function would not need to change at all!! Store the prices for each menu item in a list as well, i.e., prices = [5, 2, 3, 1]. Your program should be designed such that if the bakery were to change the price of an item, changing this list of prices is the ONLY thing you would need to do for your program!! Finally designing a graphical picture/logo for the bakery involving gratuitous use of cookies and/or furry blue monsters with googly eyes is not required, but cannot possibly hurt you.
Expert Answer
copyable code
import tkinter as tk
root = tk.Tk()
root.title(“Seesamee street bakery “)
root.resizable(0, 0)
#500 multiply 500 canvas background
canvas = tk.Canvas(root, width=500, height=500)
canvas.pack()
menuitem = [“Bread”,”Doughnut”,”Muffine”,”COOKIE”]
pricessesame = [5,2,3,1]
orderitem = []
cost1 = 0
cost1_id = ”
h1 = 100
def draw():
global cost1_id
canvas.create_line(250,0,250,500)
canvas.create_text(100,50,text=”menuitem”)
h1 = 100
for k in range(len(menuitem)):
string1 = menuitem[k] + ” : $” + str(pricessesame[k])
canvas.create_text(130,h1,text=string1)
h1 = h1+20
canvas.create_text(350,50,text=”Your orderitem”)
cost1_id=canvas.create_text(350,450,text=”cost value : $0″)
def key(eve):
global h1
global cost1
global cost1_id
if eve.char == ‘b’ :
k=0
elif eve.char == ‘d’ :
k=1
elif eve.char == ‘m’ :
k=2
elif eve.char == ‘c’ :
k=3
elif eve.char == ‘u’ :
k=-1
h1 = h1+20
if k == -1 :
if len(orderitem) > 0:
itemval = orderitem.pop()
string1 = canvas.itemcget(itemval, ‘text’)
canvas.delete(itemval)
for k in range(len(menuitem)):
if menuitem[k] == string1 :
cost1 = cost1 – pricessesame[k]
canvas.delete(cost1_id)
string1 = “cost1 : $” + str(cost1)
cost1_id=canvas.create_text(350,450,text=string1)
else :
orderitem.append(canvas.create_text(350,h1,text=menuitem[k]))
cost1 = cost1+pricessesame[k]
canvas.delete(cost1_id)
string1 = “cost : $” + str(cost1)
cost1_id=canvas.create_text(350,450,text=string1)
draw()
canvas.bind_all(“<b>”, key)
canvas.bind_all(“<d>”, key)
canvas.bind_all(“<m>”, key)
canvas.bind_all(“<c>”, key)
canvas.bind_all(“<u>”, key)
root.mainloop()