2015-10-12 2 views
0

J'essaye d'écrire un programme pour ma classe C++ et j'ai rencontré un problème étrange. Retourner les int "dés" choisit toujours une combinaison aléatoire de nombres et la lettre c pour une raison quelconque. Au début, je pensais que mon générateur de nombres aléatoires était faux, mais même si je mets le dé = 5, il est retourné comme les mêmes caractères aléatoires similaires. Voici le code complet, mais la partie pertinente est juste l'int dés et principal autant que je peux dire.Int retourné comme une combinaison aléatoire à 7 chiffres

#include "stdafx.h" 
#include <iostream> 
#include <ctime> 
#include <iomanip> 
#include <cmath> 
#include <fstream> 
#include <cstdlib> 
using namespace std; 
int score, devilScore, tempScore, devilTempScore; 
char input() { 
    char c; 
    bool valid=0; 

    while (!valid) { 
     cout << "[p]ass, [r]oll, or [f]orfeit: "; 
     cin >> c; 
     if (c == 'p' || c == 'r' || c == 'f') valid = true; 
     else cout << "Input invalid\n"; 
    } 
    return c; 
} 

int dice() { 
    int dice; 
    dice = (rand() % 6) + 1; 
    return dice; 
} 


void printScreen() { 
    switch(1){ 
    case 1: cout << "   Player     Devil \n"; 
    case 2: cout << "   100     100 \n"; 
    case 3: cout << "  "; if (score <= 99 && score >= 95) { cout << score << ">"; } 
      else { cout << " "; }cout << "95     95"; if (devilScore <= 99 && devilScore >= 95) { cout << "<" << devilScore << " \n"; } 
      else { cout << " \n"; } 
    case 4: cout << "  "; if (score <= 94 && score >= 90) { cout << score << ">"; } 
      else { cout << " "; }cout << "90  die  90"; if (devilScore <= 94 && devilScore >= 90) { cout << "<" << devilScore << " \n"; } 
      else { cout << " \n"; } 
    case 5: cout << "  "; if (score <= 89 && score >= 85) { cout << score << ">"; } 
      else { cout << " "; }cout << "85  ___  85"; if (devilScore <= 89 && devilScore >= 85) { cout << "<" << devilScore << " \n"; } 
      else { cout << " \n"; } 
    case 6: cout << "  "; if (score <= 84 && score >= 80) { cout << score << ">"; } 
      else { cout << " "; }cout << "80  |" << dice << "|  80"; if (devilScore <= 84 && devilScore >= 80) { cout << "<" << devilScore << " \n"; } 
      else { cout << " \n"; } 
    case 7: cout << "  "; if (score <= 79 && score >= 90) { cout << score << ">"; } 
      else { cout << " "; }cout << "75  ___  75"; if (devilScore <= 79 && devilScore >= 75) { cout << "<" << devilScore << " \n"; } 
      else { cout << " \n"; } 
    case 8: cout << "  "; if (score <= 74 && score >= 70) { cout << score << ">"; } 
      else { cout << " "; }cout << "70     70"; if (devilScore <= 74 && devilScore >= 70) { cout << "<" << devilScore << " \n"; } 
      else { cout << " \n"; } 
    case 9: cout << "  "; if (score <= 69 && score >= 65) { cout << score << ">"; } 
      else { cout << " "; }cout << "65     65"; if (devilScore <= 69 && devilScore >= 65) { cout << "<" << devilScore << " \n"; } 
      else { cout << " \n"; } 
    case 10: cout << "  "; if (score <= 64 && score >= 60) { cout << score << ">"; } 
      else { cout << " "; }cout << "60     60"; if (devilScore <= 64 && devilScore >= 60) { cout << "<" << devilScore << " \n"; } 
      else { cout << " \n"; } 
    case 11: cout << "  "; if (score <= 59 && score >= 55) { cout << score << ">"; } 
      else { cout << " "; }cout << "55     55"; if (devilScore <= 59 && devilScore >= 55) { cout << "<" << devilScore << " \n"; } 
      else { cout << " \n"; } 
    case 12: cout << "  "; if (score <= 54 && score >= 50) { cout << score << ">"; } 
      else { cout << " "; }cout << "50     50"; if (devilScore <= 54 && devilScore >= 50) { cout << "<" << devilScore << " \n"; } 
      else { cout << " \n"; } 
    case 13: cout << "  "; if (score <= 49 && score >= 45) { cout << score << ">"; } 
      else { cout << " "; }cout << "45     45"; if (devilScore <= 49 && devilScore >= 45) { cout << "<" << devilScore << " \n"; } 
      else { cout << " \n"; } 
    case 14: cout << "  "; if (score <= 44 && score >= 40) { cout << score << ">"; } 
      else { cout << " "; }cout << "40     40"; if (devilScore <= 44 && devilScore >= 40) { cout << "<" << devilScore << " \n"; } 
      else { cout << " \n"; } 
    case 15: cout << "  "; if (score <= 39 && score >= 35) { cout << score << ">"; } 
      else { cout << " "; }cout << "35     35"; if (devilScore <= 39 && devilScore >= 35) { cout << "<" << devilScore << " \n"; } 
      else { cout << " \n"; } 
    case 16: cout << "  "; if (score <= 34 && score >= 30) { cout << score << ">"; } 
      else { cout << " "; }cout << "30     30"; if (devilScore <= 34 && devilScore >= 30) { cout << "<" << devilScore << " \n"; } 
      else { cout << " \n"; } 
    case 17: cout << "  "; if (score <= 29 && score >= 25) { cout << score << ">"; } 
      else { cout << " "; }cout << "25     25"; if (devilScore <= 29 && devilScore >= 25) { cout << "<" << devilScore << " \n"; } 
      else { cout << " \n"; } 
    case 18: cout << "  "; if (score <= 24 && score >= 20) { cout << score << ">"; } 
      else { cout << " "; }cout << "20     20"; if (devilScore <= 24 && devilScore >= 20) { cout << "<" << devilScore << " \n"; } 
      else { cout << " \n"; } 
    case 19: cout << "  "; if (score <= 19 && score >= 15) { cout << score << ">"; } 
      else { cout << " "; }cout << "15     15"; if (devilScore <= 19 && devilScore >= 15) { cout << "<" << devilScore << " \n"; } 
      else { cout << " \n"; } 
    case 20: cout << "  "; if (score <= 14 && score >= 10) { cout << score << ">"; } 
      else { cout << " "; }cout << "10     10"; if (devilScore <= 14 && devilScore >= 10) { cout << "<" << devilScore << " \n"; } 
      else { cout << " \n"; } 
    case 21: cout << "  "; if (score <= 9 && score >= 5) { cout << score << ">"; } 
      else { cout << " "; }cout << " 5     5 "; if (devilScore <= 9 && devilScore >= 5) { cout << "<" << devilScore << " \n"; } 
      else { cout << " \n"; } 
    case 22: cout << "  "; if (score <= 4 && score >= 0) { cout << score << ">"; } 
      else { cout << " "; }cout << " 0     0 "; if (devilScore <= 4 && devilScore >= 0) { cout << "<" << devilScore << " \n"; } 
      else { cout << " \n"; } 

    } 






} 


int main() { 
    srand (time(NULL)); 
    int score = 30; 
    int devilScore = 25; 

    cout << dice << endl; 
} 
+1

'Commutateur (1)'? À quoi sert cet interrupteur? Cela équivaut à aucun cas de commutation du tout. – molbdnilo

+0

Je pensais ajouter des difficultés optionnelles qui changeraient la façon dont l'écran est imprimé. A partir de maintenant, ce n'est que mon début. – Bray610

+0

Notez que votre compilateur pourrait vous aider à diagnostiquer des problèmes comme ceux-ci; assurez-vous que le niveau d'avertissement le plus élevé est activé. – TartanLlama

Répondre

1

Vous imprimez l'adresse de la fonction int dice(); si vous voulez l'appeler, devrait ajouter entre parenthèses:

cout << dice() << endl; 
+0

Wow, je me sens bête. Y a-t-il une utilisation courante pour imprimer l'adresse? – Bray610

+0

@ Bray610 Il y a une utilisation pour les pointeurs de fonction. – aslg

+0

@ Bray610 Eh bien, par ex. Si vous écrivez un débogueur, vous devez montrer ce genre de choses –

1

Remplacer (adresse de la fonction d'impression)

cout << dice << endl; 

avec (appeler une fonction et le résultat d'impression)

cout << dice() << endl; 

Le reste Votre code semble fonctionner correctement. Vous devez également remplacer NULL par nullptr - un moyen moderne d'exprimer un pointeur nul. Cela supprime également un avertissement du compilateur.

BTW: La fonction printScreen n'est pas utilisée. Lorsque vous posez une question, vous devriez nous donner un exemple de travail minimal. Ce n'est pas minimal.

+0

Désolé pour ajouter la fonction inutilisée, je n'étais pas sûr si c'était pertinent au problème parce que changer le hasard à un nombre ne l'a pas réparé. – Bray610

+0

Ok, pas de problème. Juste un conseil amical. :) –