c言語を始めたばかりの者です。
c言語のプログラムで自作のゲームを作成中なのですが、
#include<stdio.h> #include<string.h> #include<stdlib.h> #include <time.h> #define RAND_MAX 0x7fffffff struct status{ char name[64]; int HP; int attack; int speed; }; int main(void){ //敵キャラのステータス。 struct status A,B,C,D,E,F,You; strcpy(A.name,"A"); A.HP=1000;//敵のHP。 A.attack=100;//敵の攻撃力。 A.speed=100;//敵の速さ。以下同様。 strcpy(B.name,"B"); B.HP=100; B.attack=100; B.speed=100; strcpy(C.name,"C"); C.HP=100; C.attack=100; C.speed=100; strcpy(D.name,"D"); D.HP=100; D.attack=100; D.speed=100; strcpy(E.name,"E"); E.HP=100; E.attack=100; E.speed=100; strcpy(F.name,"F"); F.HP=100; F.attack=100; F.speed=100; strcpy(F.name,"You"); You.HP=1000; You.attack=200; You.speed=100; puts("一人目の敵です。"); puts("クイズに1か2か3か4で答えてください。"); int s; int flag[10]; int ans; int i; flag[0]=0; flag[1]=0; flag[2]=0; flag[3]=0; flag[4]=0; flag[5]=0; flag[6]=0; flag[7]=0; flag[8]=0; flag[9]=0; do{ do{ srand(time(NULL)); i = rand()%10+1; }while(flag[i]==1); if(i==0){ puts("天文対話を書いたのは誰か"); puts("0. ガリレオ 1.ケプラー 2.ニュートン 3.ファラデー"); scanf("%d",ans); if(ans==0){ puts("正解です"); A.HP-=You.attack; puts("敵にダメージ!"); } else{ puts("不正解です"); You.HP-=A.attack; puts("【!】敵の攻撃!"); } flag[0]=1; } if(i==1){ puts("母の日に贈る花で有名な「カーネーション」。"); puts("さて、黄色のカーネーションの花言葉は次のうちどれ?"); puts("0.家族愛 1.感謝 2.嫉妬 3.軽蔑"); scanf("%d",ans); if(ans==3){ puts("正解です"); A.HP-=You.attack; puts("敵にダメージ!"); } else{ puts("不正解です"); You.HP-=A.attack; puts("【!】敵の攻撃!"); } flag[1]=1; } if(i==2){ puts("日常的に「マジ?」って言葉がよく使われますが、その「マジ」という言葉は、一体いつからあったでしょう?"); puts("0.江戸時代 1.明治時代 2.昭和 3.平成"); scanf("%d",ans); if(ans==0){ puts("正解です"); A.HP-=You.attack; puts("敵にダメージ!"); } else{ puts("不正解です"); You.HP-=A.attack; puts("【!】敵の攻撃!"); } flag[2]=1; } if(i==3){ puts("次のうち、実際に北海道に存在する川はどれ?"); puts("0.イトオシイ川 1.クルオシイ川 2.ヤリキレナイ川 3.チョウシデナイ川"); scanf("%d",ans); if(ans==2){ puts("正解です"); A.HP-=You.attack; puts("敵にダメージ!"); } else{ puts("不正解です"); You.HP-=A.attack; puts("【!】敵の攻撃!"); } flag[3]=1; } if(i==4){ puts("伊勢神宮で祀られている神は?"); puts("0.天照大神 1.伊弉諾尊 2.須佐之男命 3.倭建命"); scanf("%d",ans); if(ans==0){ puts("正解です"); A.HP-=You.attack; puts("敵にダメージ!"); } else{ puts("不正解です"); You.HP-=A.attack; puts("【!】敵の攻撃!"); } flag[4]=1; } if(i==5){ puts("日本三大奇祭の一つ、御柱祭は○年に一度開催される。"); puts("0…5 1…6 2…7 3…8"); scanf("%d",ans); if(ans==2){ puts("正解です"); A.HP-=You.attack; puts("敵にダメージ!"); } else{ puts("不正解です"); You.HP-=A.attack; puts("【!】敵の攻撃!"); } flag[5]=1; } if(i==6){ puts("カリウムは英語で"); puts("0.sodium 1.hydrogen 2.sulfur 3.potassium"); scanf("%d",ans); if(ans==3){ puts("正解です"); A.HP-=You.attack; puts("敵にダメージ!"); } else{ puts("不正解です"); You.HP-=A.attack; puts("【!】敵の攻撃!"); } flag[6]=1; } if(i==7){ puts("「○○の猫」では、猫の生と死が重なり合った状態を考える。"); puts("0.シュレディンガー 1.ブール 2.チューリング 3.メビウス"); scanf("%d",ans); if(ans==0){ puts("正解です"); A.HP-=You.attack; puts("敵にダメージ!"); } else{ puts("不正解です"); You.HP-=A.attack; puts("【!】敵の攻撃!"); } flag[7]=1; } if(i==8){ puts("真空状態が負のエネルギーを持つ電子によって完全に占められている状態であるというモデルは「○○の海」という"); puts("0.ケプラー 1.ディラック 2.パップス 3.ユークリッド"); scanf("%d",ans); if(ans==1){ puts("正解です"); A.HP-=You.attack; puts("敵にダメージ!"); } else{ puts("不正解です"); You.HP-=A.attack; puts("【!】敵の攻撃!"); } flag[8]=1; } if(i==9){ puts("3 以上の自然数 n について、xn + yn = zn となる自然数の組 (x, y, z) は存在しない、という定理を「○○の最終定理」という"); puts("0.ピタゴラス 1.オイラー 2.プラトン 3.フェルマー"); scanf("%d",ans); if(ans==3){ puts("正解です"); A.HP-=You.attack; puts("敵にダメージ!"); } else{ puts("不正解です"); You.HP-=A.attack; puts("【!】敵の攻撃!"); } flag[9]=1; } }while(You.HP>=0||A.HP>=0); //こっから先はクリアした場合のみ表示される。 time_t current =time(NULL); struct tm*timer=localtime(¤t); char *wday_name[]={"日","月","火","水","木","金","土"}; FILE *fp; fp=fopen("file.txt","w"); if((fp)==NULL){ printf("cannnot open file"); } else{ printf("wrote the result."); fprintf(fp,"クリアしました!\nクリア日時:%d年%d月%d日(%s)%d時%d分%d秒", timer->tm_year+1900,timer->tm_mon+1, timer->tm_mday,wday_name[timer->tm_wday],timer->tm_hour, timer->tm_min,timer->tm_sec ); fclose(fp); } return (0); }
このプログラムなのですが(まだ作り始めですが・・・)、コンパイルは通るのですが、プログラム実行時にクイズの答えを入力すると(クイズに対し例えば「1」と入力すると)cmdの動作が停止(フリーズ)してしまいます。回答が間違っている時も合っているときもフリーズしてしまいます。理由がわからず困っております。どのようにすれば解決できるでしょうか。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/12/15 13:24
2017/12/15 13:46
2017/12/15 13:47