C言語でクイズゲームを作成する方法

このQ&Aのポイント
  • C言語を使用してクイズゲームを作成する方法について解説します。
  • 問題、選択肢、解答を1つのファイルに書き、それを読み込む流れを紹介します。
  • スコアの保存、ランキング表示、問題ファイルの暗号化についても触れます。
回答を見る
  • ベストアンサー

C言語でクイズゲームを作らなければ、いけなくなりました。

C言語でクイズゲームを作らなければ、いけなくなりました。 一つのファイルに問題、選択肢、解答を書き、それを読み込むと言うものです。流れは、 (1)(初めてなら、スコアファイルを新規作成)⇒(2)前回のスコアファイルを読み込む⇒(3)問題ファイルを読み込む⇒(4)解答を入力させる⇒(5)答えが正解か判定し、スコアを更新⇒(6)今回のスコアを棒グラフで表示⇒(7)今回のスコアをスコアファイルに保存⇒(8)続けるか確認。続けない場合終了。続ける場合(2)にループ。 という流れです。また、スコアランキングの表示と問題ファイルを暗号化(メモ帳を開いても読めない)もしなければいけません。 期限が迫っているのに、全然分からないので、出来ればソースを教えて頂けないでしょうか・・・。もしくは、ヒントやアドバイスをお願いします。

  • BNR33
  • お礼率14% (5/34)

質問者が選んだベストアンサー

  • ベストアンサー
  • askaaska
  • ベストアンサー率35% (1455/4149)
回答No.3

> クイズのファイルが読めこめません kuizu.txt これよね。 見えていないんじゃないかしら? フルパスで指定するとか パスに追加してみるとかしてみてはどお?

その他の回答 (2)

  • e00083
  • ベストアンサー率31% (25/80)
回答No.2

素直にできませんとサジを投げるのも一手ですよ。 私はAccess VBAで似たようなものを作りましたが。それでも先生に聞きまくって1カ月以上かかりました。

  • askaaska
  • ベストアンサー率35% (1455/4149)
回答No.1

まず、それぞれの機能でやらなければいけないことを全て箇条書きにすること。 間違いなくそれぞれの項目は今までに習ってきたこと もしくは教科書に載っていることのはずよ。 その上で分からないことを再度質問してくれるかしら。

BNR33
質問者

補足

#include <stdio.h> #include <stdlib.h> #include <string.h> int knum; int kNO; char **kstr; int *ans; int get_score(void) {  FILE *fp;  int best;  if((fp = fopen("score.txt","r")) == NULL)  {   printf("初回起動ですね。\nスコアファイルを新規作成します。\n");   best = 0;  }  else  {  fscanf(fp,"%d%d",&best,&knum);  printf("最高点は%d問中%d問です。\n",knum,best);  fclose(fp);  } } int read_kuizu(void) {  int i;  FILE *fp;  if((fp = fopen("kuizu.txt","r")) == NULL) return(-1);  fscanf(fp,"%d",&kNO);  if((kstr = (char **)calloc(kNO,sizeof(char *))) == NULL) return(-1);  if((ans = (int *)calloc(kNO,sizeof(int))) == NULL) return(-1);  for(i = 0; i<kNO; i++)  {   char temp[1024];   size_t len;   fscanf(fp,"%s",temp);   fscanf(fp,"%d",&ans[i]);   len = strlen(temp);   if((kstr[i] = (char *)malloc(len + 1)) == NULL) return(-1);   strcpy(kstr[i],temp);  }  fclose(fp);  return(0); } int kuizu_game(void) {  int i;  int score = 0;  for(i = 0; i<kNO; i++)  {   int unans;   printf("\nクイズ%d\n", i + 1);   printf("%s YES(0)/NO(1)\n",kstr[i]);   do   {    printf("答を選んで番号を入力して下さい。=>\n");    scanf("%d",&unans);   }   while(unans!=0 && unans!=1);   if(unans == ans[i])   {    score++;    printf("正解です!\n");   }   else   printf("残念ながら不正解・・・\n");   }   return(score); } void result(int best,int score) {  printf("\n今回%d問中%d問正解でした。\n",kNO,score);  printf("前回は%d問中%d問正解していました。\n",knum,best); } int main(void) {  int score;  int best;  best = get_score();  if(read_kuizu() == -1)  {   printf("エラー\n");   return(-1);  }  score = kuizu_game();  result(best,score);  if(score>best)  {   printf("最高点を更新!\n");   best = score;  }  FILE *fp;  fp = fopen("score.txt","w");  fclose(fp);  return(0); } とりあえずこれでコンパイルしたんですけど、クイズのファイルが読めこめません。どこが問題なんでしょうか?

関連するQ&A

  • C言語の質問です。クイズをテキストファイルに書き、それを読み込むという

    C言語の質問です。クイズをテキストファイルに書き、それを読み込むというモノなのですが、その前に前回のスコアを読み込み、棒グラフにして出力しなければいけません。また、問題も1行ずつ読み込み正否を判定します。問題のテキストは、「1,問題文 1.○○ 2,○○ 3.○○」とし、頭に解答を書いています。最後に、正解した数をスコアファイルに書き、終了とします。一応、初めてなら、スコアファイルを新規作成し、2回目ならスコアファイルを開く、というところまでは、出来ましたが、その後がどうにも進みません・・。どなたか教えて頂けないでしょうか・・。 #include <stdio.h> int main(void) { FILE *fp; char str[256]; if((fp = fopen("score.txt","r")) == NULL){  printf("このゲームを初めて実行しますね。\nスコアファイルを新規作成します。\n");  fp = fopen("score.txt","w");  fclose(fp);} else{  printf("スコアファイルを読み込みます。\n");  fp = fopen("score.txt","r");  fclose(fp);} return 0; } 一応ここまでは、出来ています。

  • 携帯のクイズについて

    携帯のクイズについて 携帯での4択クイズで10問を作っていましたが、1問のみのクイズにしました。 流れは以下の通りです。 問題インデックスから各問題へ移動 ↓ 4択クイズで、選択肢のどれかを選び、決定ボタンを押す ↓ 正解か、不正解がの表示と問題インデックスへ戻る為のアンカータグがある といった具合となっております。 不正行為を防ぐ為に、正解か、不正解がの表示の時点で携帯の戻るを押したら、 「不正な操作がありました」 という表示を入れたいのです。 なお、上記の処理は1つのファイルで処理しています。 どなたか、アドバイスをお願いします

    • 締切済み
    • PHP
  • Flash lite1.0の計算クイズ

    初めまして。 初心者ですがモバイル版のFlash lite1.0で計算クイズを作成したいと思っています。 スタート画面でスタートを押すとクイズが始まり ランダムで問題が表示され、答えを数字ボタンで入力後 正解だと○不正解だと×と表示され また問題へ進んでいき、100問終了後 正解率とかかった時間をランキングに飛ばす と言う仕様で作成していきたいと思っているのですが 現在作成しているスクリプトではランダムはできているのですがクイズが9問までしかできません。 また、問題を表示できても答えを入力し、正解・不正解の表示をさせる方法がわかりません。 問題を100問作成する方法と答えを入力する方法を教えてください。(答えは二桁まで入力可能にしたいです) 説明がわかりづらいかもしれませんが 宜しくお願いします。

    • ベストアンサー
    • Flash
  • javascriptでクイズ

    HP上で簡単なクイズのページを作りたいのですが、 私はjavascript初心者なのでさっぱり分かりません。。。 --内容としてはこんな感じです----------- 3択クイズでラジオボタンをつける。 全部で5問くらいを5つの枠にわけ1ページに表示 「回答する」ボタンで判定 全問正解なら別ページにリンク。 不正解の場合はその箇所の背景の色を変える。 ----------------------------------------- ちょっと分かりにくくてすみません・・・ ご回答いただけると、とっても助かります! よろしくお願いいたします。

  • Perでクイズを作っています。「戻る」対策を教えて

    只今、Perl言語を使ってクイズを作っています。 問題を表示して、<INPUT TYPE=radio・・・>と言うとても簡単なものですが、1問毎に正解を表示させて、20問終了後に正解率を表示させています。 1問毎にPerlプログラムで正誤をカウントして正解率を計算しているのですが、「戻る」をクリックされると正解を再度選択できますので正確な採点にはなりません。 私には、サーバー側に存在するPerlでのプログラムで正誤の計算をしたものを「戻る」で、その計算が無かったことに出来る、言い換えれば「時間を戻す」ことが出来ること自体がとても不思議でたまりません!! 何故、そんなことが出来るのかも知りたいのですが、今回の質問は、Perl言語を使ったプログラムで「戻る」をクリックされたか否かを知る方法を教えて下さい。クイズの入口はhtmlで記述しているのですが、問題の表示、解答等はPerlで記述していますので、Perlプログラムの制御下の時のみ「戻る」を無効に出来ればその方法も教えて頂ければ大変助かります。 よろしく、お願い致します。

    • ベストアンサー
    • Perl
  • クイズゲームのフォームについて

    こんばんは。VB初心者です。 VB6.0を用いてのクイズゲームを作成することになりました。 フォームの内容は以下のようなものです。 ・問題文(ラベルorテキストボックス) ・ヒントの動画(MCIコントロール) ・四択選択肢(オプションボタン) ・正解不正解(ピクチャボックス) ・解説(ラベルorテキストボックス) これを20問作るのですが、フォームを20個作らずに各コントロールの中身だけを変化させていきたいのですが、どのようなプログラムになるのか検討がつきません。 そこで、大まかなプログラムの流れだけでもいいので教えて欲しいです。 また、クイズ作成において参考になるHPがあれば教えて下さい。宜しくお願いします。

  • クイズサイトの作成

    20問程度のクイズを行うサイトの作成を考えています。ほしい機能は、最終的に点数、正解率が表示される。解答は、5つぐらいのプルダウンメニューもしくは、ボタンから選ぶ。1問、1ページで解答するごとに次のページに進む。一度答えたら、元のページには戻れない。正解、不正解は1問ごとに表示。問題は50問程度の中から、ランダムで20問を出題。 以上のような、サイトを作りたいのですが、一番向いているのは、JAVAScript、ShockWave、CGIなど、どれでしょうか。皆さんのご意見をお願いします。

    • ベストアンサー
    • HTML
  • C言語について

    問題文が表示され、その解答を数字で入力すると正解の場合は「大正解」、不正解の場合は「はずれ」と表示されるプログラムなのですが、?部分がどうしても分りません・・・ 正しいと思えば0、間違ってると思うなら1と入力するプログラムです。 どなたかご教授いただけるとありがたいです>< main() { int i,k; i=0; while(i<5){ printf("次の文章が正しければ0、間違っていれば1を入力してください。\n"); printf("%s",q[i]); scanf("%d",&k); if(a[?]==?) {printf("大正解\n");} else {printf("はずれ\n");} i????; } printf("おしまい\n"); }

  • 早押しクイズの戦略

    よろしくお願いします。 お暇でしたらお付き合いください。 1週間は締め切らずにお待ちしております。 早押しクイズで、 正解の確率(勿論、ほかの解答者が正解する前ですが)を最大にするためには、 問題文が読まれ始めてから何秒後にボタンを押せばよいか、 について考え始めているところです。 与えなければいけない条件として、 ・問題文が読まれ始めてからの秒数と、問題内容の理解度との関係を表す関数  (問題文が読まれ始めてからの秒数と、問題文の全容が予想できるまでの時間というイメージ) ・仮に問題文全文がわかった場合の、自分の正答率 (他の解答者にも同じ正答率が適用できるならば、その問題の「難易度の逆」) ・解答者の全人数 (人数が多いほど、早めに押さなくてはいけなくなるはず) ・簡単のため、自分が不正解した後は、ほかの誰かが必ず正解してしまう、と決めるのがよい? などが考えられるかなと勝手に思っています。 ほかの解答者達も同じ戦略で来る場合、同時にボタンを押すことになってしまうので、それをどう扱うかも悩みどころです。 【質問】 モデルの立て方、数式、アイデア、コメント、どれでもよいですから、 膨らましていただけますと幸いです。(ある意味、ブレインストーミング) 今回は、最終的な答えまでたどり着かなくてもよいと思っています。

  • クイズ作成2:リンクした複数ページの中で、ファイル名に「○○」という文字列を含むファイルの数を検出

    昨日もこちらで質問させていただいたのですが、新たな課題が発生しましたので、再度質問させていただきました。何度も質問して申し訳ありませんが、もしよければアドバイスをいただけますようお願いいたします。 ○目的○ 10問のクイズを行い、最終画面に正解数を表すこと。 ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー 現在、HTMLとJavaScriptを用いてクイズの作成を行っております。 具体的な流れを記述いたします。 10問のクイズ(1ページに1問)を順番に表示し、1問答えるごとに正否画面を表示する。 用いるファイルの名前は「クイズ1」「正解1」「残念1」というように、数字が「1から10」まで変動するだけです。 クイズ1  ↓ 正解1 (or 残念1)  ↓ クイズ2  ↓ 正解2 (or 残念2)  ↓ クイズ3  ↓  :  ↓ クイズ10  ↓ 正解10 (or 残念10)  ↓ 最終画面 上のような流れで、「最終画面」で正解数の合計を表示したいと思っているのですが、具体的にどのようなプログラムを組んだらいいのか悩んでおります。 現在の私の考えとしましては、最終画面に達するまでに、「正解」という文字列を含むファイルにリンクした「数」をカウントすればいいのではないか、と思っています。 よかったらアドバイスをいただけますようお願い申し上げます。

専門家に質問してみよう