ジャンケン・ゲーム

左右方向キーでジャンケンの手を選択、Enterキーで決定

▽プログラムの実行様子



▽ソースコード(動作確認:Win7)

□AA無し

#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
#include <time.h>

//カーソル移動
int KEY(int *kn,int *x,int *cMax);

int main(void)
{
int j1,j2,j3;
int you=0,cpu,kn,cMax;

char j[2][3]={" ",">>"};//カーソル
char p[3][7]={"グー","チョキ","パー"};//手

do{
system("cls");
printf(" 【じゃんけん】\n 方向キーで選択してENTERで決定してください\n\n");

//自分の手
do{

//カーソル位置
cMax=2;
if(you==0){j1=1;j2=0;j3=0;}
else if(you==1){j1=0;j2=1;j3=0;}
else if(you==2){j1=0;j2=0;j3=1;}

//手の選択
printf("\r%s[グー] %s[チョキ] %s[パー]",j[j1],j[j2],j[j3]);
KEY(&kn,&you,&cMax);

}while(kn!=0x0d);

//コンピュータの手
srand(time(NULL)); //乱数のパターン変更
cpu=rand()%3; //ジャンケンの手(乱数)を生成

//結果
printf("\n\n 相手は [%s] です\n",p[cpu]);
if(you==cpu){printf("\n【結果】引き分けになりました\n");}
else if((you==0&&cpu==1)||(you==1&&cpu==2)||(you==2&&cpu==0))
{printf("\n【結果】あなたの 勝ち です\n");}
else {printf("\n【結果】あなたの 負け です\n");}

//再戦?
you=0;
printf("\n 再戦しますか?\n\n");

do{

//カーソル位置
cMax=1;
if(you==0){j1=1;j2=0;}
else if(you==1){j1=0;j2=1;}

//選択
printf("\r%s[参戦] %s[終る]",j[j1],j[j2]);
KEY(&kn,&you,&cMax);

}while(kn!=0x0d);

}while(you!=1||kn!=0x0d);

}

//カーソル移動
int KEY(int *kn,int *x,int *cMax){
while(1){
*kn=getch( ); //1:通常キー
if (*kn==0x0d){break;}// ENTER
if (*kn!=0 ){continue;}
*kn=getch( ); //2:特殊キー
if ( 0 < *x && *kn==0x4b){(*x)--; break;}// ←
if (*x<*cMax && *kn==0x4d){(*x)++; break;}// →
}
}



□AAあり

#include <stdio.h>
#include <conio.h>
#include <windows.h>
#include <stdlib.h>
#include <time.h>


//カーソル移動
int KEY(int *kn,int *c,int *cMax);

//ジャンケンのアニメーション
void Anime(void);

//引き分け画面
void Draw(void);

//勝ち画面
void Win(void);

//負け画面
void Lose(void);

int main(void)
{
int j1,j2,j3;
int you=0,cpu,kn,cMax;

char j[2][3]={" ",">>"};//カーソル
char p[3][7]={"グー","チョキ","パー"};//手

do{
system("cls");
printf(" 【じゃんけん】\n 方向キーで選択してENTERで決定してください\n\n");

//自分の手
do{

//カーソル位置
cMax=2;
if(you==0){j1=1;j2=0;j3=0;}
else if(you==1){j1=0;j2=1;j3=0;}
else if(you==2){j1=0;j2=0;j3=1;}

//手の選択
printf("\r %s[グー] %s[チョキ] %s[パー]",j[j1],j[j2],j[j3]);
KEY(&kn,&you,&cMax);

}while(kn!=0x0d);

//コンピュータの手
srand(time(NULL)); //乱数のパターン変更
cpu=rand()%3; //ジャンケンの手(乱数)を生成

//ジャンケンのアニメーション
Anime();

//結果
printf("\n CPUは [%s] です\n",p[cpu]);
if(you==cpu){printf("\n 【結果】引き分けになりました\n");}
else if((you==0&&cpu==1)||(you==1&&cpu==2)||(you==2&&cpu==0))
{printf("\n 【結果】あなたの 勝ち です\n");}
else {printf("\n 【結果】あなたの 負け です\n");}
printf("\n >> ENTERを押してください");
Sleep(1000);
getch( );

//再戦?
system("cls");
if(you==cpu){Draw();}
else if((you==0&&cpu==1)||(you==1&&cpu==2)||(you==2&&cpu==0))
{Win();}
else {Lose();}
you=0;
printf("\n 再戦しますか?\n\n");

do{

//カーソル位置
cMax=1;
if(you==0){j1=1;j2=0;}
else if(you==1){j1=0;j2=1;}

//選択
printf("\r %s[再戦] %s[終る]",j[j1],j[j2]);
KEY(&kn,&you,&cMax);

}while(kn!=0x0d);

}while(you!=1||kn!=0x0d);

}


//カーソル移動
int KEY(int *kn,int *c,int *cMax){
while(1){
*kn=getch( ); //1:通常キー
if (*kn==0x0d){break;}// ENTER
if (*kn!=0 ){continue;}
*kn=getch( ); //2:特殊キー
if ( 0 < *c && *kn==0x4b){(*c)--; break;}// ←
if (*c<*cMax && *kn==0x4d){(*c)++; break;}// →
}
return 0;
}

//ジャンケンのアニメーション
void Anime(void){
system("cls");
printf("\n\n\n"
"\n     ∧__∧ジャン∧__∧ \n"
"    (・∀・∩  ∩・∀・)\n"
"    (つ 丿  ヾ ⊂)\n"
"    (ヽ ノ    ヽ/ )\n"
"     し(_)    (_)J \n");
Sleep(1000);
system("cls");

printf("\n\n\n"
"\n    ∧__∧  ケン ∧__∧ \n"
"   (・∀・ )   ( ・∀・) \n"
"    / \   / \ \n"
"   ⊂( ヽノ つ ⊂ヽ/ )つ\n"
"    し(_)    (_) J \n");
Sleep(1000);
system("cls");

printf("\n\n\n"
"\n    ∧__∧ ポン!! ∧__∧ \n"
"   ( ・∀)   (∀・ )∩\n"
"   ( (`つ   ⊂ ノ\n"
"    > 〉\ \  _/ /> > \n"
"   (__)(__)(__ノ \_) \n");
}

//引き分け画面
void Draw(void){
printf("\n\n\n"
"\n         + \n"
"     +        +     + \n"
"   + \n"
"      ∧__∧  +.  ∧__∧アハハハ +\n"
" マテヨコノヤロー( ´∀`)   (´∀` ) \n"
"     (つ つ    (つ つ \n"
"   +  ( ヽノ     ( ヽノ + \n"
"      し(_)     し(_) \n");
}

//勝ち画面
void Win(void){
printf("\n\n\n"
"\n    ∧ ∧ ∧ \n"
"    / ヽ / ヽ_ / ∧ \n"
"   / `、___/ `、⌒ヾ⌒ヽ/ ∧ \n"
"  / / (..ノ(.ノ / ヽ\n"
"  l:ノ( | ι ι:(.ノノ\n"
"  |::⌒ -=・=- / ̄ ̄ ヽ :::::/`ヽ\n"
"  |:::::::..\_(___ノ ::::::(.ノノ\n"
"  ヽ::::::::..\/ヽ ι..:::::::::ノ \n");
}

//負け画面
void Lose(void){
printf(
"\n     ⊂⊂ヽ、 /)/) \n"
"    ((c、 `っ( ヽ \n"
"     ; ( v)c、 `っ\n"
"    ∴  V''V ( v)/ ̄`⊃\n"
"    ・       V''V | ⊃\n"
"              ( v) ハ,,ハ \n"
"               V''V (゚∀゚;) \n"
"  ∧__∧             ⊂⊂ ヽ \n"
" ( ・∀・∩ 国へ帰りな!       > )\n"
"⊂ ノ             (/(/ \n"
" (___つ※                <⌒/ヽ-、__\n"
"  し' )))               /<_/____/\n");
}
[ 2012/06/26 18:50 ] C言語 | TB(0) | CM(-)
SPONSORED LINK
人気ブログランキング
トラックバック
この記事のトラックバックURL
http://8cmp.blog.fc2.com/tb.php/5-413195b1

▲ページトップ