C++ Comment puis-je utiliser des variables d'une fonction à une autre?
Pour le dossier je suis complètement vert en C++ et tout autre langage de programmation que de la matière, donc si c'est possible je serais heureux si vous pouvez répondre d'une manière que je peux comprendre 🙂
J'ai travaillé sur une simple roche, papier, ciseaux jeu récemment, où j'ai 3 fonctions de base, une pour l'utilisateur, un pour le bot, et de l'un que de choisir celui qui gagne la partie.
Je sais à l'aide de system("cls")
n'est pas la meilleure façon d'aller, mais je n'ai pas l'intention sur l'utilisation de ce en dehors de Windows.
La fonction finale results()
besoin d'utiliser les variables x
et brand
à partir des deux fonctions précédentes, cependant je n'arrive pas à trouver une façon de le faire. Et où les gens de l'expliquer n'importe où ailleurs, ils l'expliquent trop avancé pour moi. Rappelez-vous que je n'ai pas besoin de changer l'un d'eux, je n'ai qu'à les comparer pour déterminer le vainqueur.
Je vais vous montrer mon code ici, donc vous pouvez voir ce que vous avez à faire.
Merci de me donner des commentaires sur d'autres choses que je peux améliorer ici.
#include <iostream>
#include <stdlib.h>
#include <time.h>
#include <windows.h>
using namespace std;
int bgame(), ugame(), results();
int main()
{
srand(time(NULL));
cout<<"Welcome to RPS!\n" <<"You know what to do.\n" <<"\n[ENTER]";
cin.ignore();
system("cls");
ugame();
return 0;
}
int ugame()
{
int x;
cout<<"Type a number from 1-3: ";
cin>> x;
cin.ignore();
if ( x == 1 )
{
cout<<"\nYou chose rock!\n" <<"\n[ENTER]";
cin.ignore();
bgame();
}
else if ( x == 2)
{
cout<<"\nYou chose paper!\n" <<"\n[ENTER]";
cin.ignore();
bgame();
}
else if ( x == 3 )
{
cout<<"\nYou chose scissors!\n" <<"\n[ENTER]";
cin.ignore();
bgame();
}
else
{
cout<<"\nTry again.\n" <<"\n[ENTER]";
cin.ignore();
ugame();
system("cls");
}
return 0;
}
int bgame()
{
int brand = rand()>>4;
system("cls");
cout<<"The bot will now choose an item.\n" <<"\n" <<"[ENTER]\n";
cin.ignore();
brand = rand() % 3 + 1;
if ( brand == 1)
{
cout<<"\nBot chose rock!";
cin.ignore();
results();
}
else if ( brand == 2 )
{
cout<<"\nBot chose paper!";
cin.ignore();
results();
}
else if ( brand == 3 )
{
cout<<"\nBot chose scissors!";
cin.ignore();
results();
}
else
{
cout<<"\nError.";
cin.ignore();
bgame();
system("cls");
}
return 0;
}
int results()
{
}
bgame(x)
, et enfin passer de x et de marque pour les résultats results(x,brand)
. Aussi, si vous rand de 1 à 3, il n'y a aucune erreur se produit 🙂 cplusplus.com/doc/tutorial/functionsPourquoi ne pas simplement retourner les valeurs nécessaires de bgame() et ugame()? S'ils ont besoin de quelques informations supplémentaires, puis le passer en argument la liste de @makciook a écrit.
Toutes vos fonctions valeurs de retour. Vous pouvez retourner tout entier au lieu de 0
Ce que des variables globales? learncpp.com/cpp-tutorial/42-global-variables
Ne pas utiliser de variables globales s'il vous plaît!
OriginalL'auteur Rezic | 2013-07-18
Vous devez vous connecter pour publier un commentaire.
vous pouvez envoyer des paramètres à une fonction.
C'est de créer une copie de votre variable et vous pouvez l'utiliser dans une autre fonction.
Vous devez précise avec votre nom de la fonction (c'est nommée prototype) comme ceci :
Vous mettez un nom de type et un nom de variable.
Par exemple, cette fonction prend 2 int en tant que paramètres.
Et lorsque vous appelez la fonction, vous tapez:
Si vous le souhaitez, ce lien explique avec des images et des exemples et plus de détails: http://www.cplusplus.com/doc/tutorial/functions/
int results(int achoice, int bchoice)
OriginalL'auteur Shar
Tout d'abord, apprendre comment utiliser les fonctions avec des paramètres.
Après cela, vous devriez être en mesure de faire ce que vous voulez.
Comme l'a suggéré, vous n'avez qu'à faire quelque chose comme ceci :
déclaration :
et dans ugame :
Espère que cette aide.
OriginalL'auteur Flaëndil
Les paramètres d'utilisation, le passage par valeur. Paramètres dans l'en-tête de fonction, de sorte que vous pouvez passer la valeur à la fonction.
OriginalL'auteur Thanushan
Pour vous, vous avez seulement besoin de revenir valeur 1 pour chaque fonction, de sorte que le retour serait de travailler. Au lieu de return 0;, utiliser return x; et le retour de la marque;. Dans la comparaison, de définir deux nouvelles variables, telles que y; ou crand;, puis les affecter comme ceci: y=int ugame(); et crand=int bgame();. Alors y=x et crand=marque et vous pouvez travailler à partir de là. Alors vous n'avez pas besoin de tous les paramètres ou quoi que ce soit. Aussi, ne pas essayer de définir la marque directement, il suffit de déclarer int de la marque, et que la randomisation de la fonction (qui doivent être ensemencées avec srand par la voie) affecter une valeur à la marque. Vous aussi vous n'avez pas à définir les fonctions int; ils se définissent eux-mêmes.
OriginalL'auteur Musicrafter12