Je fais une machine à états finie pour une classe de codage. Comment puis-je utiliser la valeur de retour pour modifier la valeur de contre HP dans ma principale, donc je n'aurai aucun autre problème avec mon code. Je veux juste le rendre capable de manipuler la valeur de HP et d'utiliser la nouvelle valeur de HP pour plus de fonctions.
Désolé si la solution à ce problème est vraiment simple. Je me lance de comprendre comment fonctionnent les fonctions de C ++ et ne peuvent pas sembler trouver une solution d'autre endroit en ligne ou en lecture des tutoriels. P>
#include <iostream> #include <time.h> using namespace std; int forage(int HP) { cout << "The ant is in foraging state."<<endl; if (rand() % 100 < 60) { cout << "The ant found something!"<<endl; if (rand() % 100 < 10) { cout << "The ant found poison!" << endl; HP -= 1; } else { cout << "The ant found food!" << endl; HP += 1; } } int mHP = HP; return mHP; } int main() { srand(time(NULL)); int mHP = 0; cout << "Welcome to Ant Simulator"<<endl; forage(10); cout << mHP; system("pause"); return 0; }
3 Réponses :
Changer Votre fonction fourrage (10); code> à
MHP = fourrage (10); code> p> p>
Forage code> est de type de retour
int code>. Si vous souhaitez obtenir cette valeur de retour dans votre variable
MHP code>, vous devez affecter la valeur de retour de la fonction à la variable comme décrit ci-dessus. P>
S'il vous plaît élaborer, donner une explication de ce que le changement fait.
@ABYX La personne qui demande la question a évidemment peu de connaissances sur C ++, je viens de jeter du code à celui-ci ne changera rien à ce sujet. Si vous ajoutez du contexte à votre réponse, il peut en apprendre.
@ABYX " Pourquoi diriez-vous de vous donner une explication à votre commentaire? I>" En plus de cela, toutes les informations, pertinentes pour une réponse, doivent être présentes dans la réponse elle-même, pas dans les commentaires.
Vous avez quelques choix. Une possibilité est de passer Une autre possibilité est de simplement utiliser le résultat renvoyé de Si vous allez faire cela, vous pouvez ajouter une annotation afin qu'un compilateur récent vous indique Le problème si vous ignorez accidentellement la valeur, elle est renvoyée: p> comme de côté, je préférerais également que Cela peut aider avec les choses Comme portant le jeu pour travailler sous un système de fenêtrage, si vous décidez de faire quelque chose comme ça. p> p> hp code> par référence et d'avoir
fourrage code> modifier ce qui a été transmis:
fourrage code>: p>
[[nodiscard]] code> indique au compilateur que vous souhaitez assurer que la valeur renvoie la valeur renvoyée. De cette fonction n'est pas rejetée comme si votre code dans la question a fait. P>
fourrage code> soit séparé en quelques pièces séparées. Je préférerais avoir une pièce qui traite strictement avec l'interface utilisateur (affichant les cordes sur ce qui s'est passé) et une autre qui traite strictement de la logique du jeu lui-même. En tant que point de départ, vous pourriez envisager de passer un flux en tant que paramètre et ayant
Forge code> à ce flux: p>
juste pour ajouter aux réponses précédentes ... Pour une compréhension de base Comment une fonction fonctionne avec votre fonction définie comme exemple: Toutes les fonctions qui n'ont pas le type de retour int code> antérieur Pour le nom de la fonction définit le type de retour, de sorte que votre fonction redonne à la fin de l'exécution.
Vient ensuite le nom de votre fonction, dans ce cas
fourrage code>, suivi des paramètres d'entrée. Dans votre cas, il n'y a qu'un seul paramètre d'entrée qui est une valeur entière
int HP code>. Tout le code à l'intérieur des supports bouclés est exécuté à l'appel de la fonction. P>
void code> ont une déclaration de retour quelque part (la plupart des temps à la fin) dans leur code. La valeur de retour réelle est attribuée à une variable comme celle-ci: p>
Quelque chose comme
MHP = fourrage (10); code> peut-être?
Bonjour, bienvenue dans le débordement de la pile. Étant donné qu'il s'agissait d'une question plutôt fondamentale, il pourrait être plus bénéfique pour vous de saisir et de suivre un Good C ++ Book ; Cela vous donnera une compréhension plus solide et intégrée que les questions au coup par coup.
AVERTISSEMENT B>: Utilisation de
Rand () code> est considéré comme nocif
et vous êtes fortement encouragé à utiliser un Installation de générateur de nombres aléatoires dans la bibliothèque standard qui produit des valeurs aléatoires de haute qualité. Votre utilisation deTime (NULL) code> en tant que graines de nombres aléatoires signifie que cela produira des résultats identiques si elle fonctionnera dans la même seconde, et sur de nombreuses plateformes
rand () code> est à peine i> aléatoire du tout .