電子書籍の厳選無料作品が豊富!

学校でc言語プログラミングを使って簡単なゲームを作りなさい。
という課題が出ました。
下記の条件に沿って作れとのことです。
なかなかいいアイデアが浮かばないんですが、なにかちょうどいいものないですかね?

・scanf文を使うこと。。
・if文を使うこと。
・for文(while文)を使うこと。
・rand関数を使うこと。
・自分で定義した関数を使うこと。
・配列または文字列を使うこと。

A 回答 (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;
}
    • good
    • 0

ゲームとは言わないかもしれませんが…


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

簡単なRPGゲームはどうでしょう?


 
戦う戦わないでscanf
HP判定でif
遭遇・戦闘をdo~while
攻撃力判定をrand srand
関数は敵の構造体配列など
 
    • good
    • 0

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

    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!