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;
}
No.3
- 回答日時:
ゲームとは言わないかもしれませんが…
モンティ・ホールの問題を計算機に出題させて
やる人が何回も繰り返せるようにして
1回毎ゲーム終了時点で当選確率を表示させてみたら
変える場合と変えない場合とどう違うかとか見れて面白いかなぁ?
と思います
No.2
- 回答日時:
簡単なRPGゲームはどうでしょう?
戦う戦わないでscanf
HP判定でif
遭遇・戦闘をdo~while
攻撃力判定をrand srand
関数は敵の構造体配列など
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- その他(プログラミング・Web制作) Pythonを用いたフラッシュ暗算ソフトの開発に必要なもの 2 2023/01/29 02:22
- C言語・C++・C# C言語のエラーについて 2 2022/07/11 13:56
- C言語・C++・C# 画像の画素値を変えるC言語のプログラムで指定された画像の中に白い三角形を右上に表示させるにはどのよう 3 2022/10/30 01:16
- HTML・CSS HTMLの・要素・属性・属性値 はプログラム言語の「変数」みたいに変更できますか? 5 2022/10/04 05:27
- その他(プログラミング・Web制作) プログラミングって本来数学的な計算をする為のものではないのですか? 学校で配られたFortran90 11 2022/08/25 22:14
- その他(プログラミング・Web制作) Pythonでこのプログラミングを作成するには 2 2022/10/25 21:19
- C言語・C++・C# 至急教えてください。プログラミングの問題です。 malloc関数を使ってください!お願いします! 最 1 2022/07/21 09:28
- Excel(エクセル) エクセル関数の変わった使い方 3 2022/05/13 17:12
- C言語・C++・C# C言語の課題が出たのですが自力でやっても分かりませんでした。 要素数がnであるint型の配列v2の並 3 2022/11/19 17:41
- Visual Basic(VBA) 集めたシートのシート名を変更したい。 下記のコードでサブフォルダにあるファイルのSheet3を集めて 6 2022/08/23 10:38
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
10個出力で改行したいのですが...
-
printf で二進表示を行いたい。
-
【C言語教えてください】sin波...
-
strcmp
-
コンパイルエラーについて
-
c言語でAからZまでを表示する...
-
コマンドラインに出力した文字...
-
cshの文字列操作(0埋め)
-
4の倍数を論理演算で表す。。
-
C言語 プログラミング
-
%P と %X の違い
-
8人分のテストの点数を入力し、...
-
C言語での、年複利の計算方法...
-
printf( " %2d", p * q );
-
hit&bolwのプログラミングがで...
-
scanfに文字が入力されたときに...
-
error C2143: 構文エラー : ';'...
-
printfの出力内の文字をdefine...
-
テキストカーソル位置の取得
-
unsigned int型について
おすすめ情報