2016-04-29 47 views
0

我正在为学校制作一款游戏,这是一款基本的老虎机,它将随机生成数字并将数字转换为独立数组中的字符。由于声明完全被忽略,这似乎不起作用。它没有给出正确的输出结果,有时候它们会变成空白。案例/开关在C不工作

输出: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

此外,你似乎已经忘了一些功能使用'y' 。另外,在'main'的开头添加'srand(time(NULL));'。 –

+0

@CoolGuy似乎仍然得到相同的输出。我更新了帖子上的代码 – Distorts

回答

5

你已经忘了保持break;所有情况后,所以它即运行所有案件从案件1箱9
在年底会节省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; 

编辑:

  • 为什么你的函数返回类型为int当你不返回任何值。将int更改为void。前main()

  • 我得到的输出喜欢这个

  • 功能game()未声明:
    enter image description here

+0

我的输出看起来还是一样的 – Distorts

+0

^^^^^^请阅读 – Distorts

+0

请阅读我无法弄清楚 – Distorts