J'ai codé un jeu d'aventure de texte. Lorsque le programme est exécuté, la méthode Boot()
est appelée, en lisant% APPDATA% .ilan \ texert pour définir les fichiers (en attendant, il n'y a que nom_utilisateur.txt). Après Boot()
, il va à MainMenu()
, où l'utilisateur peut choisir de jouer, aller à des options, ou quitter. Lorsque l'utilisateur accède au menu Options et revient, puis essaie de jouer au jeu ou de revenir au menu des options, le jeu se ferme, ce qui n'est pas supposé se produire. Source
Boot()
= Ligne 455
MainMenu()
= Ligne 579
Main()
= Ligne 504
Je crois qu'il est parce que le int
est déclaré dans la méthode elle-même, et parce que la méthode est appelée plusieurs fois la variable int
conserve sa valeur précédente . Est-ce qu'il y a un moyen de réparer ceci?C# méthode de rappel conduit à la sortie du programme
Répondre
À la ligne 610 vous récupérez les résultats de votre méthode MainMenu, puis appelez votre méthode OptionMenu à la ligne 617, mais une fois la méthode OptionMenu() déclenchée, vous ne faites rien pour empêcher votre application de se terminer à la méthode Main(). Même si vous appelez MainMenu() dans votre méthode OptionMenu(), il n'y a rien d'évaluer les résultats de cet appel, tout ce que vous faites est d'écrire le menu sur la console et de revenir à Main(). Vous devez placer une boucle dans la méthode Main() qui appellera plusieurs fois votre méthode MainMenu(), en évaluant les résultats sélectionnés, et d'autres options de menu comme OptionMenu() retourneront simplement à cette boucle plutôt que d'appeler le menu principal eux-mêmes. Quelque chose comme ceci:
string whatToDo = "null";
bool exitApp = false;
while (!exitApp)
{
whatToDo = AdvTime.MainMenu();
if (whatToDo.Contains("play"))
{
Menu("null", false);
}
if (whatToDo.Contains("options"))
{
AdvTime.OptionMenu();
}
if (whatToDo.Contains("exit"))
{
exitApp = true;
}
if (whatToDo.Contains("null"))
{
AdvTime.MMError("OM");
}
}
Je l'ai essayé, mais c'est toujours le même .. – Ilan321
Si vous mettez à jour votre code à pastebin, je vais jeter un autre coup d'oeil. En fin de compte, tout devrait revenir à cette boucle qui devrait se déclencher et appeler à nouveau MainMenu() jusqu'à ce que l'utilisateur choisisse de quitter. Si vous avez d'autres endroits où vous appelez Environment.Exit(), cela pourrait contourner cette boucle. –
[Voilà.] (Http://pastebin.ca/2463151) Je ne sais pas pourquoi ça ne marche pas, j'ai essayé de mettre le OptionMenu() dans une boucle while, mais le même problème. – Ilan321
- 1. C# À la touche - programme de sortie
- 2. Lire la sortie du programme C++
- 3. Expliquer la sortie du programme C++ suivant
- 4. Sortie du programme C suivant
- 5. Sortie du programme C/CUDA
- 6. Erreurs de mémoire C++ à la sortie du programme
- 7. Rappel de la méthode Java à partir de C++
- 8. Rappel à VBScript du C#
- 9. cocos2d-x lors du rappel de sortie?
- 10. Problème avec C++ sortie du programme
- 11. Mocking Sortie Paramètre Dans la méthode de rappel
- 12. Programme C - sortie déroutante
- 13. Script Bash pour tester automatiquement la sortie du programme - C
- 14. Erreur dans la sortie du programme CUDA
- 15. Sortie d'un programme C
- 16. Obtenir la sortie du programme externe au code C++
- 17. Programme C++, sortie
- 18. Entrée, Sortie C Programme
- 19. sortie du programme to_erl
- 20. Eclipse CDT sortie inattendue après la compilation du programme C
- 21. Sortie du programme Java
- 22. Sortie du programme Java
- 23. Méthode de rappel dynamique pour System.Threading.ThreadPool.QueueUserWorkItem C#
- 24. Lecture par programme de la sortie du programme Hadoop Mapreduce
- 25. Problème avec la sortie du programme
- 26. Batch Script: Colonne de sortie du programme à la variable?
- 27. Sortie du programme C est source de confusion
- 28. Problème avec la méthode de rappel dans l'API SetTimer Windows appelée à partir du code C#
- 29. Expliquer la sortie d'un programme c
- 30. Comment rediriger la sortie d'un appel système à l'intérieur du programme en C/C++?
Vous n'avez pas de boucle dans 'public static void Main()'. Mettez un point d'arrêt dans cette méthode et passez à l'étape suivante, et vous verrez ce qui ne va pas. EDIT: Cela dit, vous avez sérieusement besoin de repenser votre * architecture * entière ... – dialer
Je sais que mon architecture est nulle, je ne suis qu'un débutant .. (Je n'ai aucune idée de la façon d'améliorer mon code, donc je le fais) – Ilan321