2017-07-20 2 views
0

Dies ist mein aller erster Beitrag auf dieser Website, und hoffentlich kann ich einige wertvolle Einblicke und Hinweise in Bezug auf mein Problem bekommen, da ich ein relativer Anfänger bin, wenn es um Programmierung geht. Ich verwende den Python-Modus in der Verarbeitungsumgebung.Aktualisierung von Text- und Funktionsparametern

Ich bekam ein Vorlesungsproblem (dass der Lehrer irgendwann gehen wird), aber ich wollte es vorher lösen können. Leider bin ich nicht sicher, wie. Ich soll ein Programm erstellen, das die Menge an Brötchen, Franken und Hotdogs anzeigt, die aus der Menge an Brötchen und Franken gemacht werden können, und ich habe Tastatureingaben, um den Betrag zu erhöhen, der für Brötchen und Franken angezeigt wird.

Derzeit kann ich nicht herausfinden, wie ich meinen Text aktualisieren kann, wenn ich Tastatureingaben eingib, noch kann ich herausfinden, wie ich automatisch die Anzahl der Hotdogs basierend auf der Anzahl der Brötchen und Franken aktualisieren kann.

Ich habe zwei Bilder der Frage beigefügt, die jede Verwirrung klären wird, wenn meine Erklärung nicht klar war. Ich habe auch den aktuellen Code beigefügt, den ich habe.

picture 1 picture 2

Code:

#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

Was ist die Funktion 'text()'? Welches GUI Toolkit hast du benutzt? (Zeigen Sie Ihre Importe) – Johannes

Antwort

0

Sie nie Ihre make_hotdogs() Funktion aufrufen, so dass Sie nie die if Aussagen treffen, die überprüfen, welche Taste gedrückt wird.

Vielleicht möchten Sie in die keyPressed() Funktion schauen. Sie können mehr Informationen in the reference finden.

Aber ehrlich gesagt, wenn Sie verwirrt sind, sollten Sie vielleicht einfach warten, bis der Lehrer alles in der Vorlesung erklärt hat.

+0

Würde ich diese Funktion nur für sich selbst aufrufen, nicht unter einer anderen Funktion? – GrapeJuice

+0

@GrapeJuice Die Verarbeitung ruft automatisch die Funktion 'keyPressed()' für Sie auf, ähnlich wie sie automatisch die Funktionen 'setup()' und 'draw()' aufruft. –

+0

Danke, ich denke, ich habe die Logik funktioniert. Ich habe die Tastatureingabe in keyPressed geändert und dann habe ich meiner make_hotdog-Funktion nur einen Rückgabewert gegeben, wie die Hotdog-Nummer sein soll.Aber ich kann immer noch nicht die Tastatureingaben erhalten, um tatsächlich irgendwelche der Zahlen auf dem Bildschirm zu ändern. – GrapeJuice

0

Es war eine Woche also nehmen wir an, dass Vortrag stattgefunden hat und lassen Sie uns dieses Problem lösen. Die Probleme, die ich mit dem OP-Code sehe, sind ein mangelndes Verständnis von Python und der Verarbeitungsumgebung. Und ein Versäumnis, die Problemterminologie zu nutzen, die bereitgestellt wurde.

den Code nacharbeiten die oben genannten Probleme zu lösen und eine tragfähige Picknick Planer zu erzeugen, die in der Verarbeitungsumgebung ausgeführt wird:

# 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) 

Mit Ausnahme von make_hotdocs() ruft die Verarbeitungsumgebung für uns, diese Funktionen. Es ruft setup() einmal beim Start des Programms auf; es ruft draw() kontinuierlich immer wieder auf; Er ruft keyPressed() auf, wenn der Benutzer auf der Tastatur tippt und den Buchstaben in der Variablen key gedrückt hält.

In Python müssen wir nur global Variablen deklarieren, in denen wir ihre Werte ändern wollen, und nicht dort, wo wir einfach ihre Werte verwenden wollen.

Verwandte Themen