试图编写代码,当按下某个键时,单词在画布上弹出(在这种情况下,它们都是饮料)。当用户持续按下某些键来添加饮料时,总费用就加起来了。
但是,在我的代码中唯一可以做的事情是“水”这个词,总成本不断增加。
如何修复代码,以便每个菜单项出现在画布上以及如何修复总成本?
(我尝试移动背景色,但是仍然无法使用。同样,该编码来自处理过程,不是Java脚本)
def setup():
size (500, 500)
background (255)
menu = ["Mocha","Coffee","Juice","water"]
prices = [5,2,3,1]
order = []
total = ''
cost = 0
Mocha = 5
Coffee = 2
Juice = 3
Water = 1
undo = -1
space = 0
i = 0
str1= 1
def draw():
global total
space = 100
fill (0)
line(250,0,250,500)
textSize (30)
text("Menu", 60, 50)
textSize (15)
for i in range(len(menu)):
str1 = menu[i] + " : $" + str(prices[i])
text(str1, 70, space)
space = space+20
textSize (30)
text( "Your Order:", 260,50)
textSize (15)
#total = text("Cost : $0", 300,450)
total= text(str1, 350, 450)
def keyPressed():
global space
global cost, total, menu, str1, i
if key == 'm' :
i=0
elif key == 'c' :
i=1
elif key == 'j' :
i=2
elif key == 'w' :
i=3
elif undo == 'u' :
i=-1
space = space+20
if i == -1 :
if len(order) > 0:
menu = order.pop(0)
menu.pop(item)
for i in range(len(menu)):
if menu[i] == str1 :
cost = cost - prices[i]
menu.pop(total)
str1 = "Cost : $" + str(cost)
total= text(str1, 350, 450)
else :
order.append(text( menu[i], 300, space+90))
cost = cost+prices[i]
str1 = "Cost : $" + str(cost)
total = text( str1, 360, 450)
答案 0 :(得分:0)
总成本不断增加,因为没有在draw()循环之间清除该阶段。在绘制循环的顶部添加background(255)
,以便刷新舞台。但是,这样做会导致需要遍历该订单并在每个循环的“您的订单:”部分中绘制其内容。
您得到的名称与变量i
冲突,这使您的代码执行起来很奇怪。删除程序顶部附近的i = 0
声明。这解决了“仅水”问题。
这需要更改:order.append(text( menu[i], 300, space+90))
。您无法将处理绘图(text()
)方法添加到这样的数组中。
将所有内容(以及其他一些内容)放在一起可以得到以下信息:
def setup():
size (500, 500)
background (255)
menu = ["Mocha","Coffee","Juice","Water"]
prices = [5,2,3,1]
order = []
cost = 0
def draw():
background(255)
fill(0)
line(250,0,250,500)
textSize (30)
text("Menu", 60, 50)
space = 100
textSize (15)
for i in range(len(menu)):
str1 = menu[i] + " : $" + str(prices[i])
text(str1, 70, space)
space = space+20
textSize (30)
text( "Your Order:", 260,50)
textSize (15)
text("Cost : $" + str(cost), 350, 450)
for ypos, item in enumerate(order):
text(menu[item] + ".... $" + str(prices[item]), 270, ypos*20 + 80)
def keyPressed():
global cost, menu
if key == 'm' :
i=0
elif key == 'c' :
i=1
elif key == 'j' :
i=2
elif key == 'w' :
i=3
elif key == 'u' :
i=-1
else: # do nothing if the key is undefined
return
if i == -1 :
if len(order) > 0:
cost -= prices[order[-1]] # subtract cost
order.pop() # pop the order, not the menu!
else :
cost += prices[i]
order.append(i)