2016-06-25 9 views
-3

私はFallout Lockpick Simulatorを数日間デバッグしていますが、進歩はありませんでした。このゲームをロードして、ボビーピンを動かす度にタイプするたびに、私は勝つと言います。その代わりに、ゲームはの勝利が1に設定され、次に私が勝つとまでループする必要があります。私のプログラムがこれを達成できない原因は何ですか?完全なコードは以下の通りです。ありがとう!パーソナルゲームの作成がうまくいかない(Cプログラミング)

// Fallout Lockpick Sim 
#include <stdio.h> 
#include <stdlib.h> 
#include <time.h> 
#include <math.h> 
#include <ctype.h> 

void command(int *newWin, int key); 

main() 
{ 
    time_t t; 
    char stillPlay; 
    int win; 
    int key; 

    do { 
      system("cls"); 
      win = 0; 
      srand(time(&t)); 
      key = (rand() % 359); 
      lockface(); 
      command(&win, key); 
      printf("You Won!!!\n"); 
      printf("Do you want to play again?"); 
      scanf(" %c", &stillPlay); 
    } while (toupper(stillPlay) == 'Y'); 

    return; 
} 

lockface() 
{ 
    printf("  ___ \n"); 
    printf(" / \\ \n"); 
    printf("/  \\ \n"); 
    printf(" |   | \n"); 
    printf(" |   | \n"); 
    printf(" \\  /\n"); 
    printf(" \\ ___/\n"); 
} 

void command(int *newWin, int key) 
{ 
    int cmd; 

    do { 
    printf("Angle:"); 
    scanf(" %d", &cmd); 
    if ((cmd >= 0 && cmd <= 21) || (cmd >= 338 && cmd <= 359)) 
    { 
     system("cls"); 
     face0(); 
     if (fabs(key - cmd) <= 10) 
     { 
      *newWin = 0; 
     } 
    } 
    else if (cmd >= 22 && cmd <= 67) 
    { 
     system("cls"); 
     face45(); 
     if (fabs(key - cmd) <= 10) 
     { 
      *newWin = 0; 
     } 
    } 
    else if (cmd >= 68 && cmd <= 112) 
    { 
     system("cls"); 
     face90(); 
     if (fabs(key - cmd) <= 10) 
     { 
      *newWin = 0; 
     } 
    } 
    else if (cmd >= 113 && cmd <= 157) 
    { 
     system("cls"); 
     face135(); 
     if (fabs(key - cmd) <= 10) 
     { 
      *newWin = 0; 
     } 
    } 
    else if (cmd >= 158 && cmd <= 202) 
    { 
     system("cls"); 
     face180(); 
     if (fabs(key - cmd) <= 10) 
     { 
      *newWin = 0; 
     } 
    } 
    else if (cmd >= 203 && cmd <= 247) 
    { 
     system("cls"); 
     face225(); 
     if (fabs(key - cmd) <= 10) 
     { 
      *newWin = 0; 
     } 
    } 
    else if (cmd >= 248 && cmd <= 292) 
    { 
     system("cls"); 
     face270(); 
     if (fabs(key - cmd) <= 10) 
     { 
      *newWin = 0; 
     } 
    } 
    else if (cmd >= 293 && cmd <= 337) 
    { 
     system("cls"); 
     face315(); 
     if (fabs(key - cmd) <= 10) 
     { 
      *newWin = 0; 
     } 
    } 
    else 
    { 
     printf("Not valid command!"); 
     exit(1); 
    } 
    } while (*newWin != 1); 
} 

face0() 
{ 
    printf("  ___ \n"); 
    printf(" /| \\ \n"); 
    printf("/ | \\ \n"); 
    printf(" |  |  | \n"); 
    printf(" |   | \n"); 
    printf(" \\  /\n"); 
    printf(" \\ ___/\n"); 
} 

face45() 
{ 
    printf("  ___ \n"); 
    printf(" / \\ \n"); 
    printf("/ /\\ \n"); 
    printf(" | / | \n"); 
    printf(" |   | \n"); 
    printf(" \\  /\n"); 
    printf(" \\ ___/\n"); 
} 

face90() 
{ 
    printf("  ___ \n"); 
    printf(" / \\ \n"); 
    printf("/  \\ \n"); 
    printf(" |  _____| \n"); 
    printf(" |   | \n"); 
    printf(" \\  /\n"); 
    printf(" \\ ___/\n"); 
} 

face135() 
{ 
    printf("  ___ \n"); 
    printf(" / \\ \n"); 
    printf("/  \\ \n"); 
    printf(" |   | \n"); 
    printf(" |  \\ | \n"); 
    printf(" \\  \\/\n"); 
    printf(" \\ ___/\n"); 
} 

face180() 
{ 
    printf("  ___ \n"); 
    printf(" / \\ \n"); 
    printf("/  \\ \n"); 
    printf(" |   | \n"); 
    printf(" |  | | \n"); 
    printf(" \\ | /\n"); 
    printf(" \\ _|_/\n"); 
} 

face225() 
{ 
    printf("  ___ \n"); 
    printf(" / \\ \n"); 
    printf("/  \\ \n"); 
    printf(" |   | \n"); 
    printf(" | / | \n"); 
    printf(" \\/ /\n"); 
    printf(" \\ ___/\n"); 
} 

face270() 
{ 
    printf("  ___ \n"); 
    printf(" / \\ \n"); 
    printf("/  \\ \n"); 
    printf(" |______  | \n"); 
    printf(" |   | \n"); 
    printf(" \\  /\n"); 
    printf(" \\ ___/\n"); 
} 

face315() 
{ 
    printf("  ___ \n"); 
    printf(" / \\ \n"); 
    printf("/\\  \\ \n"); 
    printf(" |  \\  | \n"); 
    printf(" |   | \n"); 
    printf(" \\  /\n"); 
    printf(" \\ ___/\n"); 
} 
+1

どこ主な機能はありますか?私は正しく定義されたものが表示されません – Li357

+0

あなたの最新の変更を保存して、それを再コンパイルして再リンクしたことを確認してください。それを実現せずに以前のバージョンを実行している可能性があります。最も安全なことは、実行ファイルとオブジェクトファイルを再構築する前に削除することです。そうすれば、あなたは何も失効しないことが保証されます。 –

答えて

0

私はあなたのコードを試してみました。私はsystemコールを使用することができないので、Ubuntu Linuxを使用して、330またはそれ以上を入力すると、プログラムがあなたに勝つことを通知するように、330で休憩を追加しました。

// Fallout Lockpick Sim 
#include <stdio.h> 
#include <stdlib.h> 
#include <time.h> 
#include <math.h> 
#include <ctype.h> 

void command(int *newWin, int key); 

face0() { 
    printf("  ___ \n"); 
    printf(" /| \\ \n"); 
    printf("/ | \\ \n"); 
    printf(" |  |  | \n"); 
    printf(" |   | \n"); 
    printf(" \\  /\n"); 
    printf(" \\ ___/\n"); 
} 

face45() { 
    printf("  ___ \n"); 
    printf(" / \\ \n"); 
    printf("/ /\\ \n"); 
    printf(" | / | \n"); 
    printf(" |   | \n"); 
    printf(" \\  /\n"); 
    printf(" \\ ___/\n"); 
} 

face90() { 
    printf("  ___ \n"); 
    printf(" / \\ \n"); 
    printf("/  \\ \n"); 
    printf(" |  _____| \n"); 
    printf(" |   | \n"); 
    printf(" \\  /\n"); 
    printf(" \\ ___/\n"); 
} 

face135() { 
    printf("  ___ \n"); 
    printf(" / \\ \n"); 
    printf("/  \\ \n"); 
    printf(" |   | \n"); 
    printf(" |  \\ | \n"); 
    printf(" \\  \\/\n"); 
    printf(" \\ ___/\n"); 
} 

face180() { 
    printf("  ___ \n"); 
    printf(" / \\ \n"); 
    printf("/  \\ \n"); 
    printf(" |   | \n"); 
    printf(" |  | | \n"); 
    printf(" \\ | /\n"); 
    printf(" \\ _|_/\n"); 
} 

face225() { 
    printf("  ___ \n"); 
    printf(" / \\ \n"); 
    printf("/  \\ \n"); 
    printf(" |   | \n"); 
    printf(" | / | \n"); 
    printf(" \\/ /\n"); 
    printf(" \\ ___/\n"); 
} 

face270() { 
    printf("  ___ \n"); 
    printf(" / \\ \n"); 
    printf("/  \\ \n"); 
    printf(" |______  | \n"); 
    printf(" |   | \n"); 
    printf(" \\  /\n"); 
    printf(" \\ ___/\n"); 
} 

face315() { 
    printf("  ___ \n"); 
    printf(" / \\ \n"); 
    printf("/\\  \\ \n"); 
    printf(" |  \\  | \n"); 
    printf(" |   | \n"); 
    printf(" \\  /\n"); 
    printf(" \\ ___/\n"); 
} 

lockface() { 
    printf("  ___ \n"); 
    printf(" / \\ \n"); 
    printf("/  \\ \n"); 
    printf(" |   | \n"); 
    printf(" |   | \n"); 
    printf(" \\  /\n"); 
    printf(" \\ ___/\n"); 
} 

int main(void) { 
    time_t t; 
    char stillPlay; 
    int win; 
    int key; 

    do { 
     //system("cls"); 
     win = 0; 
     srand((unsigned) time(&t)); 
     key = (rand() % 359); 
     lockface(); 
     command(&win, key); 
     printf("You Won!!!\n"); 
     printf("Do you want to play again?"); 
     scanf(" %c", &stillPlay); 
    } while (toupper(stillPlay) == 'Y'); 

    return 0; 
} 


void command(int *newWin, int key) { 
    int cmd; 

    do { 
     printf("Angle:"); 
     scanf(" %d", &cmd); 
     if ((cmd >= 0 && cmd <= 21) || (cmd >= 338 && cmd <= 359)) { 

      face0(); 
      if (fabs(key - cmd) <= 10) { 
       *newWin = 0; 
      } 
     } 
     else if (cmd >= 22 && cmd <= 67) { 

      face45(); 
      if (fabs(key - cmd) <= 10) { 
       *newWin = 0; 
      } 
     } 
     else if (cmd >= 68 && cmd <= 112) { 

      face90(); 
      if (fabs(key - cmd) <= 10) { 
       *newWin = 0; 
      } 
     } 
     else if (cmd >= 113 && cmd <= 157) { 

      face135(); 
      if (fabs(key - cmd) <= 10) { 
       *newWin = 0; 
      } 
     } 
     else if (cmd >= 158 && cmd <= 202) { 

      face180(); 
      if (fabs(key - cmd) <= 10) { 
       *newWin = 0; 
      } 
     } 
     else if (cmd >= 203 && cmd <= 247) { 

      face225(); 
      if (fabs(key - cmd) <= 10) { 
       *newWin = 0; 
      } 
     } 
     else if (cmd >= 248 && cmd <= 292) { 

      face270(); 
      if (fabs(key - cmd) <= 10) { 
       *newWin = 0; 
      } 
     } 
     else if (cmd >= 293 && cmd <= 337) { 

      face315(); 
      //if (fabs(key - cmd) <= 10) { 
      *newWin = 1; 
      //} 
     } 
     else { 
      printf("Not valid command!"); 
      exit(1); 
     } 
    } while (*newWin != 1); 
} 

出力コードブロックとWindows 10と

 ___ 
    / \ 
/  \ 
|   | 
|   | 
    \  /
    \ ___/
Angle:90 
     ___ 
    / \ 
/  \ 
|  _____| 
|   | 
    \  /
    \ ___/
Angle:290 
     ___ 
    / \ 
/  \ 
|______  | 
|   | 
    \  /
    \ ___/
Angle:330 
     ___ 
    / \ 
/\  \ 
|  \  | 
|   | 
    \  /
    \ ___/
You Won!!! 
Do you want to play again? 

、それは同じです:

enter image description here

+0

あなたは、(Ubuntu Linuxのリミックスを除いた)コードは、必要に応じて動作していると言っていますか?私は現在CodeBlocksを使用してコードを作成しています。このCodeBlocks独自のエラーですか? –

+0

@SamuelFはい、それはうまくいって、毎回「あなたが勝つ」とは言いませんでした。あなたの環境には何かがあるかもしれませんが、私はそれがコードで何かだと思います。あなたが好きなら、コードブロックで試してみることもできます。Windows OSもあります。コードブロックを使ってエラーを再現できるかどうか試してみることができます。 –

+0

不都合がなければ、試してみるととても感謝しています。 –

関連する問題