2017-07-20 3 views
0

Ceci est mon tout premier article sur ce site Web, et j'espère pouvoir obtenir des informations et des conseils utiles concernant mon problème, car je suis relativement novice en programmation. J'utilise le mode Python dans l'environnement de traitement.Traitement de la mise à jour du texte et des paramètres de la fonction

On m'a donné un problème de cours (que l'enseignant finira par dépasser) mais je voulais être capable de le résoudre à l'avance. Malheureusement, je ne suis pas sûr de savoir comment. Je suis censé créer un programme qui affiche la quantité de petits pains, de franks et de hot-dogs que l'on peut faire à partir du nombre de petits pains et de franks, et j'ai des entrées clavier pour augmenter la quantité affichée pour les pains et les franks. À l'heure actuelle, je n'arrive pas à déterminer comment mettre mon texte à jour lorsque je saisis des saisies au clavier, et je ne sais pas comment mettre à jour automatiquement le nombre de hot-dogs en fonction de la quantité de petits pains et de francs.

J'ai joint deux photos de la question qui éclaircira toute confusion si mon explication n'était pas claire. J'ai également joint le code actuel que j'ai.

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

Quelle est la fonction 'text()'? Quelle boîte à outils d'interface graphique avez-vous utilisée? (Montrez vos importations) – Johannes

Répondre

0

Vous n'êtes jamais appeler votre fonction make_hotdogs(), de sorte que vous n'êtes jamais frapper les déclarations if qui vérifient quelle touche est enfoncée.

Vous voudrez peut-être regarder dans la fonction keyPressed(). Vous pouvez trouver plus d'informations dans the reference. Mais honnêtement, si vous êtes confus, vous devriez peut-être attendre que l'enseignant explique tout dans la conférence.

+0

Est-ce que j'appellerais cette fonction juste par elle-même, pas sous n'importe quelle autre fonction? – GrapeJuice

+0

@GrapeJuice Processing appelle automatiquement la fonction 'keyPressed()' pour vous, de la même façon qu'elle appelle automatiquement les fonctions 'setup()' et draw() '. –

+0

Merci, je pense que j'ai la logique de travail. J'ai changé l'entrée du clavier en keyPressed et puis j'ai fait ma fonction make_hotdog juste donner une valeur de retour de ce que je veux que le numéro hotdog soit.Mais je n'arrive toujours pas à saisir les entrées du clavier pour changer les chiffres sur l'écran. – GrapeJuice

0

Cela fait une semaine donc supposons que lecture a eu lieu et nous allons résoudre ce problème. Les problèmes que je vois avec le code OP est un manque de compréhension de base de Python et l'environnement de traitement. Et un échec à prendre avantage de la terminologie du problème qui a été fournie.

Retravailler le code pour résoudre les problèmes ci-dessus et générer un planificateur de pique-nique viable qui fonctionne dans l'environnement de traitement:

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

À l'exception de make_hotdocs(), l'environnement de traitement des appels de ces fonctions pour nous. Il appelle setup() une fois au début du programme; il appelle draw() sans interruption encore et encore; il appelle keyPressed() chaque fois que l'utilisateur tape sur le clavier, en laissant la lettre enfoncée dans la variable key.

En Python, nous avons seulement besoin de déclarer global variables où nous prévoyons de changer leurs valeurs, pas où nous avons simplement l'intention d'utiliser leurs valeurs.