• ベストアンサー

c言語プログラミングでの質問?です。

学校でc言語プログラミングを使って簡単なゲームを作りなさい。 という課題が出ました。 下記の条件に沿って作れとのことです。 なかなかいいアイデアが浮かばないんですが、なにかちょうどいいものないですかね? ・scanf文を使うこと。。 ・if文を使うこと。 ・for文(while文)を使うこと。 ・rand関数を使うこと。 ・自分で定義した関数を使うこと。 ・配列または文字列を使うこと。

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

  • ベストアンサー
回答No.4

身近なところで「ジャンケン」。 G(グー)/C(チョキ)/P(パー)のいずれかを入力し、次にZキーを押せば、コピュータとのジャンケンができるというプログラム例です。 もし、Zキーを押さずに更にG/C/Pキーを押すと、「コンピュータ」対「あなた」対「+α」の3者以上の対戦となります。 調子にのってG/C/Pの3つを入力すれば、ジャンケンが成立しないのは当然のことです。 プログラムは、下4ビットの状態を利用し、ビットの OR 論理計算を行って、ジャンケンの場を判断しています。 また、プログラム中の 0x01 などの表示は、0x0 を省いた整数値に換えても OK です。 まあ、このコンパクトなプログラムをお気に召されますでしょうか? /* ジャンケン プログラム 0x00 0000 0x01 0001 :P 0x02 0010 :C 0x03 0011 :C>P 0x04 0100 :G 0x05 0101 :P>G 0x06 0110 :G>C 0x07 0111 :P=C=G */ #include <stdio.h> #include <stdlib.h> //rand() #include <time.h> //time(h) #define SIZE 32 int input(char *comment, char buf[]){ printf(comment); return scanf("%s", buf); } int main(void) { char buf[SIZE], hand[]="_PC_G"; signed char judge, computer, flag; srand((unsigned) time(NULL)); do{ while((computer = rand() % 4 + 1) == 3); judge = computer; flag = 0; while(input("グー(G)、チョキ(C)、パー(P)を入力=", buf)){ if (*buf == 'G') judge |= 0x04; else if(*buf == 'C') judge |= 0x02; else if(*buf == 'P') judge |= 0x01; else break; flag = 1; } printf("パソコン=%c : ", hand[computer]); if(judge == 0x03) printf("C チョキの勝ち!!\n"); else if(judge == 0x05) printf("P パーの勝ち!!\n"); else if(judge == 0x06) printf("G グーの勝ち!!\n"); else { if(flag == 0) printf("N 無効です。\n"); else printf("A アイコ\n"); //入力したのに同じ手。 } printf("続けますか(Y/N)? "); scanf("%s", buf); }while(*buf == 'Y'); return 0; }

その他の回答 (3)

  • hrsmmhr
  • ベストアンサー率36% (173/477)
回答No.3

ゲームとは言わないかもしれませんが… モンティ・ホールの問題を計算機に出題させて やる人が何回も繰り返せるようにして 1回毎ゲーム終了時点で当選確率を表示させてみたら 変える場合と変えない場合とどう違うかとか見れて面白いかなぁ? と思います

回答No.2

簡単なRPGゲームはどうでしょう?   戦う戦わないでscanf HP判定でif 遭遇・戦闘をdo~while 攻撃力判定をrand srand 関数は敵の構造体配列など  

noname#138894
noname#138894
回答No.1

この手の課題だと占いゲームなんかは定番だと思いますよ