2017-07-20 19 views
0

這是我在這個網站上的第一篇文章,希望我能得到一些關於我的問題的寶貴見解和提示,因爲我是編程方面的一個相對noob。我在Processing環境中使用Python模式。處理更新文本和函數參數

我被給了一個講座問題(老師最終會過去),但我希望能夠事先解決它。不幸的是我不知道如何。我應該創建一個程序,顯示可以從麪包和法蘭克福數量中獲得的麪包,法蘭克和熱狗的數量,並且我有鍵盤輸入來增加麪包和法蘭克的顯示量。

目前,當我輸入鍵盤輸入時,我無法弄清楚如何讓我的文本更新,也不知道如何根據我擁有的包子和坦率數量自動更新熱狗的數量。

如果我的解釋不清楚,我附上了兩個可以消除混淆的問題圖片。我還附上了當前的代碼。

picture 1 picture 2

代碼:

#Variables/Model 
    meat = "" 
    buns = "" 
    dogs = min(12 * meat, 8 * buns) 


    def setup(): 
     size(400,400) 


    def draw(): 
     global meat, buns, dogs 
     background(255) 
     meat = 0 
     buns = 0 
     dogs = min(12 * meat, 8 * buns) 
     fill(0) 
     text("Packages of meat:" + str(meat), 50, 100) 
     text("Packages of buns:" + str(buns), 250, 100) 
     text("Dogs possibly made:" + str(dogs), 150, 200) 


    def make_hotdogs(totalMeat, totalBuns): 
     global meat, buns, dogs 
     if keyPressed == "f": 
      meat += 1 
     elif keyPressed == "g": 
      meat -= 1 
     elif keyPressed == "b": 
      buns += 1 
     elif keyPressed == "n": 
      buns -= 1 
     else: 
      print("Type b, n, f or g") 
+0

函數'text()'是什麼?你使用了哪個GUI工具箱? (顯示您的進口) – Johannes

回答

0

你永遠呼喚你make_hotdogs()功能,所以你從來沒有擊中if語句檢查哪個鍵按下。

您可能想要查看keyPressed()函數。您可以在the reference中找到更多信息。

但是老實說,如果你感到困惑,也許你應該等老師在演講中解釋一切。

+0

我是否會自己調用此函數,而不是使用其他函數? – GrapeJuice

+0

@GrapeJuice Processing自動爲你調用'keyPressed()'函數,就像它自動調用'setup()'和'draw()'函數一樣。 –

+0

謝謝,我想我的邏輯工作。我將鍵盤輸入更改爲keyPressed,然後使我的make_hotdog函數只返回我想要的熱狗編號的返回值。但我仍然無法獲得鍵盤輸入來實際改變屏幕上的任何數字。 – GrapeJuice

0

已經過了一個星期,所以我們假設講座已經發生,讓我們來解決這個問題。我在OP的代碼中看到的問題是缺乏對基本Python和處理環境的理解。而且未能提供已經提供的問題術語的優勢。

返工的代碼,以解決上述問題,並生成在處理環境中運行一個可行的野餐規劃師:

# Variables/Model 

FRANKS_PER_PACKAGE = 12 
BUNS_PER_PACKAGE = 8 

frank_packages = 0 
bun_packages = 0 

def setup(): 
    size(400, 400) 
    fill(0) # black text on a 
    background(255) # white background 

def draw(): 
    hotdogs = make_hotdogs(frank_packages, bun_packages) 

    text("Packages of franks: " + str(frank_packages), 50, 100) 
    text("Packages of buns: " + str(bun_packages), 250, 100) 
    text("Hotdogs possibly made: " + str(hotdogs), 150, 200) 

def keyPressed(): 
    global frank_packages, bun_packages 

    if key == "f": 
     frank_packages += 1 
    elif key == "g": 
     if frank_packages > 0: 
      frank_packages -= 1 
    elif key == "b": 
     bun_packages += 1 
    elif key == "n": 
     if bun_packages > 0: 
      bun_packages -= 1 

    background(255) # white out old calculations 

def make_hotdogs(p_franks, p_buns): 
    return min(p_franks * FRANKS_PER_PACKAGE, p_buns * BUNS_PER_PACKAGE) 

隨着make_hotdocs()外,加工環境,讓我們調用這些函數。它在節目開始時調用setup()一次;它一遍又一遍地連續呼叫draw();每當用戶在鍵盤上鍵入時,它都會調用keyPressed(),並在key變量中按下該字母。

在Python中,我們只需要聲明global變量,我們打算改變它們的值,而不是我們打算使用它們的值。