faire des actions au hasard dans un jeu lui donne une apparence vraiment réel ... donc si un personnage a beaucoup capabilities
comme move
, work
, study
... donc dans la programmation une fonction de ceux-ci est appelée en fonction de certaines conditions. ce que nous voulons est une action plus aléatoire et réelle comme si aucune condition n'est là mais en fonction d'une condition aléatoire le caractère prend une action aléatoire ..appelant la fonction en fonction de l'indice de tableau de tableau de noms de fonctions
Je pensais faire des actions (fonctions) dans un tableau puis déclarer un pointeur de fonction et le programme peut générer au hasard un indice sur lequel le pointeur de fonction sera attribué le nom de la fonction correspondante du tableau:
#include <iostream>
void Foo() { std::cout << "Foo" << std::endl; }
void Bar() { std::cout << "Bar" << std::endl; }
void FooBar(){ std::cout << "FooBar" << std::endl; }
void Baz() { std::cout << "Baz" << std::endl; }
void FooBaz(){ std::cout << "FooBaz" << std::endl; }
int main()
{
void (*pFunc)();
void* pvArray[5] = {(void*)Foo, (void*)Bar, (void*)FooBar, (void*)Baz, (void*)FooBaz};
int choice;
std::cout << "Which function: ";
std::cin >> choice;
std::cout << std::endl;
// or random index: choice = rand() % 5;
pFunc = (void(*)())pvArray[choice];
(*pFunc)();
// or iteratley call them all:
std::cout << "calling functions iteraely:" << std::endl;
for(int i(0); i < 5; i++)
{
pFunc = (void(*)())pvArray[i];
(*pFunc)();
}
std::cout << std::endl;
return 0;
}
- le programme fonctionne très bien, mais je n'est bon ou il y a une alternative. chaque commentaire est le bienvenue
@asblinkenlight: une dernière question: pourquoi je dois fournir la taille du tableau 'void (* ptrFunc [5])();' si je le définis plus tard? ou je dois initialiser pendant la déclaration: comme dans votre exemple: 'void (* pFunc [])() = {Foo, Barre, FooBar, Baz, FooBaz};' sinon erreur: 'void (* pFunc [])(); '? – Raindrop7
@ Raindrop7 C++ a toujours besoin de la taille. Vous pouvez soit le fournir explicitement, soit laisser le compilateur le déterminer pour vous à partir de l'initialiseur. – dasblinkenlight
oui c'est comme n'importe quel tableau où soit l'initialiser sans dire explicitement la taille ou juste le déclarer mais en fournissant la taille – Raindrop7