2016-04-29 15 views
0

私は学校でゲームを作っています。これは基本的なスロットマシンであり、ランダムに数字を生成し、数字を別の配列の文字に変換します。ステートメントが完全に無視されるので、これは機能していないようです。それは正しい出力を出すことはなく、ブランクに行く時間もあります。ケース/スイッチCが動作しない

出力:あなたはそれが最後でケース9
にケース1からすなわち、すべての例を実行しますので、すべてのケースの後break;を維持するのを忘れていhttp://distorts.me/imgs/files/132ca7cc1da6fc459de3e498d8e12b9f.png

#include<stdio.h> 
#include<stdlib.h> 
#include<time.h> 
/* 
George Mason 
Slots 
Date Started: 4/25/16 
Date Finished: 
Dr K. 
*/ 
void loadScreen(); 
void spacer(); 
void tabSpacer(); 
void clearScr(); 
int printMachine(char*, int); 
int randomNum(int*, int); 
int convertNum(int*, char*, int); 
int rand_int(); 
void game(); 
int main(){ 
    srand(time(NULL)); 
    int stop; 
    loadScreen(); 
    clearScr(); 
    game(); 
    scanf("%d", &stop); 
} 
void game(){ 
    int tokens = 5, randomNums[9], x, y = 9; 
    char randomChars[9], userInput; 
    randomNum(randomNums, 9); 
    convertNum(randomNums, randomChars, 9); 
    printMachine(randomChars, 9); 

} 
int printMachine(char* randomChars, int y){ 
    printf("-------------\n"); 
    printf("| %c | %c | %c | \n", randomChars[0], randomChars[1], randomChars[2]); 
    printf("| %c | %c | %c | \n", randomChars[3], randomChars[4], randomChars[5]); 
    printf("| %c | %c | %c | \n", randomChars[6], randomChars[7], randomChars[8]); 
    printf("-------------"); 
} 
int randomNum(int* randomNums, int y){ 
    int x,a = 0, b = 9; 
    for(x = 0; x < y; x++){ 
     randomNums[x] = ((rand() % (b-a+1)) + a); 
    } 
} 
int convertNum(int* randomNums, char* randomChars, int y){ 
    int x; 
    for(x = 0; x < 9; x++){ 
      switch(randomNums[x]){ 
       case 1: 
        randomChars[x] = '@'; 
        break; 
       case 2: 
        randomChars[x] = '#'; 
        break; 
       case 3: 
        randomChars[x] = '$'; 
        break; 
       case 4: 
        randomChars[x] = '+'; 
        break; 
       case 5: 
        randomChars[x] = '&'; 
        break; 
       case 6: 
        randomChars[x] = '*'; 
        break; 
       case 7: 
        randomChars[x] = '?'; 
        break; 
       case 8: 
        randomChars[x] = '!'; 
        break; 
       case 9: 
        randomChars[x] = '~'; 
        break; 
       default: 
        randomChars[x] = 'e'; 
        break; 
      } 
    } 
} 
void loadScreen(){ 
    int x; 
    for(x = 0; x < 3; x++){ 
     spacer(); 
    } 
    tabSpacer(); 
    printf("Please wait 5 seconds while we load the saved data.\n"); 
    tabSpacer(); 
    printf(" If there is no saved data one will be created."); 
    sleep(5); 
} 
void spacer(){ 
    int x; 
    for(x = 0; x < 3; x++){ 
      printf("\n"); 
    } 
} 
void tabSpacer(){ 
    printf("\t "); 
} 
void clearScr(){ 
    system("cls"); 
} 
+0

  • 機能game()main()

  • 前に宣言されていない私はこのような出力を取得しています。また、 'main'の先頭に' srand(time(NULL)); 'を追加してください。 –

  • +0

    @CoolGuyはまだ同じ出力を得ているようです。私は投稿のコードを更新しました – Distorts

    答えて

    5

    それはrandomChars[x] = '~';(ケース9)を保存します。

    case 1: 
        randomChars[x] = '@'; 
        break; 
    case 2: 
        randomChars[x] = '#'; 
        break; 
        . 
        . 
        . 
        . 
    
    case 7: 
        randomChars[x] = '?'; 
        break; 
    case 8: 
        randomChars[x] = '!'; 
        break; 
    case 9: 
        randomChars[x] = '~'; 
        break; 
    

    EDIT:

    • あなたの関数の戻り値の型を使用すると、任意の値を返すされていませんintである理由。 intvoidに変更してください。また、あなたが機能のいくつかに `y`を使用するのを忘れているように見える
      enter image description here

    +0

    私の出力はまだ同じであるようです – Distorts

    +0

    ^^^^^^ – Distorts

    +0

    を読んでください私は理解できませんをお読みください – Distorts

    関連する問題