Je viens de commencer à coder en C, et je ne peux pas comprendre comment ajouter l'idée de doubles em>, où le programme détecte lorsqu'un joueur a roulé le même numéro sur les matrices et le signaler comme succès critique, échec critique ou cravate critique. Ceci est un simple vérificateur de dés:
4 Réponses :
Je ne sais pas s'il y a une meilleure réponse, mais la façon dont je le ferais, c'est juste vérifier l'égalité au moment où les valeurs des deux dés sont saisies: et Faites vos chèques quant à savoir si elles gagnent ou non de là? P> P>
Votre problème est l'ordre du Lorsque le premier si vous donne true em> ne plus être testés parce qu'ils sont tous sous l'autre. P> Cela signifie que si code> s si (die1 == die2) code> ne sera jamais testé si la somme était supérieure à Secret_Target. p> if (total > SECRET_TARGET) {
//...
} else {
// here total <= SECRET_TARGET
if (die1 == die2 && total > SECRET_TARGET) {...}
// ^^^^^^^^^^^^^^^^^^^^^ no, this is impossible
}
L'erreur est dans votre logique: dans votre "if-ele-ele-ele-ele-ele" em> séquence vous exécutez le chèque Pour vérifier votre Double Dice condition em> strong>, gère simplement le cas particulier Votre première branche: p> si (Dieone = = Dietwo && Total> Secret_Target) Code> Après Si (Total> Secret_Target) code>. N'oubliez pas que seule une des branches sera exécutée alors, lorsque Dieone == Dietwo && Total> Secret_Target Code> Aussi Total> Secret_Target code> est vrai. Ce dernier vient d'abord et la seconde ne sera même pas évaluée. P>
Apparemment, la typo a été éditée ... J'ai édité ma réponse en conséquence.
Vous jetez la possibilité d'avoir des prédicats corrects si vous avez malommé le si code> tests (clauses logiques sont discutés dans les commentaires à votre code, incorporé dessus): if (total > SECRET_TARGET) {
if (dieOne == dieTwo) {
printf("Critical Success! Large applause\n");
}
// else { // you have not included this case
// // (total > ST && dice different)
// }
} else if (total == SECRET_TARGET) {
printf("Close, but not close enough, try again please\n");
} else {
printf("Skill Roll failed, Try Again\n");
}