忍者ブログ

黄昏は雨の日に

あろーん

[PR]

×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。

c test

貼れるかテスト
これはひどい

/*コンピュータとポーカーゲームするプログラム*/
/*ジョーカーはなし*/


#include
#include
#include


/*数値からカードにする関数(定義)*/

void changeCard(int number){

if(number<=12){ //0~12:スペード
printf("スペードの%d,",number+1);
}
else if((13<=number)&&(number<=25)){ //13~25:ダイヤ
printf("ダイヤの%d,",number-12);
}
else if((26<=number)&&(number<=38)){ //26~38:クローバー
printf("クローバーの%d,",number-25);
}
else if((39<=number)&&(number<=51)){ //39~51:ハート
printf("ハートの%d,",number-38);
}

}



/*役かどうかを判断する関数*/

int checkCard(int hand[]){
int a,b,c,d,n; //カウント用変数
int memo,max; //メモ用変数
int pos[5]; //メモ用配列
int num1[5]; //メモ用配列
int x=0; //係数
int i=0; //カウント変数・pit[]専属
int pit[20]; //役を判断するための配列
int point=0; //最終的な役を入力するための変数


/*配列の初期化*/
for(n=0;n<=10;n++){
pit[n]='\0';
}

/*
フラッシュ
aを走査させ、手札の最後まで条件が真ならば得点50を配列に入力
*/

for(a=1;a<=4;a++){
if(hand[0]/13==hand[a]/13){
if(a==4){
pit[i]=50;
i++;
}
}
else{
break;
}
}

/* ストレート
*/
/*初期化作業*/
memo=0;
b=0;
for(n=0;n<=4;n++){
pos[n]='\0';
}

/*手札の中で最も大きいナンバーの添え字を探す*/
for(a=0;a<5;a++){
if((hand[memo]%13)<(hand[a]%13)){
max=a;
}
}
memo=max;
pos[memo]=hand[memo];

/*走査作業を5回繰り返す*/
for(c=0;c<5;c++){
for(a=0;a<=4;a++){
/*hand[memo]から一つ小さい数があれば、その添え字をmemoに入力
*/
if(hand[a]%13==(hand[memo]%13)-1){
memo=a;
pos[a]=hand[a]; //この作業はK~Aのストレートの場合使用
b++; //値を変えた回数を数えておく
break;
}
}
}
/*↑のif文が3回しか繰り返されなかった場合(10~KとAである可能性有)*/
if(3==b){
for(c=0;c<5;c++){
if(('\0'==pos[c])){
if((0==hand[c]%13)&&(12==hand[max]%13)){
pit[i]=45; //k~A
i++;
}else{
break;
}
}
}
}
if(4==b){
pit[i]=40;
i++;
}




/* スリーカード
*/
for(a=0;a<4;a++){
for(b=a+1;b<=4;b++){
for(c=b+1;c<=4;c++){
if((hand[a]%13==hand[b]%13)&&(hand[a]%13==hand[c]%13)){
pit[i]=30;
i++;
}
}
}
}


for(a=0;a<4;a++){
for(b=a+1;b<=4;b++){
if((hand[a]%13)==(hand[b]%13)){ //同じnumberのカードがあるなら
for(c=a+1;c<=4;c++){
for(d=c+1;d<=4;d++){
if((b!=c)&&(b!=d)&&((hand[c]%13)==(hand[d]%13))){
if((hand[a]%13)==(hand[c]%13)){
/*フォーカード*/
pit[i]=70;
i++;
}
else if((hand[a]%13)!=(hand[c]%13)){
/*ツーペア*/
pit[i]=20;
i++;
}
}
}
}
}
}
}

/*ワンペア*/
d=0; //初期化
for(a=0;a<4;a++){
for(b=a+1;b<=4;b++){
if((hand[a]%13)==(hand[b]%13)){
d=0;
for(c=0;c<=i;c++){
if((20!=pit[c])&&(30!=pit[c])&&(70!=pit[c])){
d++;
if(d-1==i){ //全部見たけど一つもなかったら
pit[i]=10;
i++;
}
}

}
}
}
}


/*フルハウス*/

memo=0;
c=0;
for(a=0;a<4;a++){
for(b=a+1;b<=4;b++){
if((hand[a]%13==hand[b]%13)){
c++;
}
}
}
if(c<4){
memo=-1;
}
c=0;
for(a=0;a<=i;a++){
if(70==pit[a]){
c++;
}
}
if(c>0){
memo=-1;
}

if(-1!=memo){
pit[i]=60;
i++;
}



/*ストレートフラッシュ*/
for(a=0;a for(b=a+1;b<=i;b++){
if(((50==pit[a])&&(40==pit[b]))||((40==pit[a])&&(50==pit[b]))){
pit[i]=80;
i++;
}
}
}

/*ロイヤルストレートフラッシュ*/
for(a=0;a for(b=a+1;b if(((45==pit[a])&&(50==pit[b]))||((50==pit[a])&&(45==pit[b]))){
pit[i]=90;
i++;
}
}
}


n=0;
while(n!=i){
if(point<=pit[n]){
point=pit[n];
}
n++;
}


return point;
}


int main(void){

int mount[52]; //最初のデッキ・札の並びはランダム
int user[5]; //プレイヤーの手札
int dealer[5]; //ディーラーの手札
int User,Dealer;
int input[5];
int i,n;

srand((unsigned)time(NULL));

for(i=0;i<=51;i++){
mount[i]=(rand())%52;
/*同じカードがほかにないか確認する*/
for(n=0;n<=i-1;n++){
if((i!=n)&&(mount[i]==mount[n])){
i=i-1;
break;
}
}
}


/*カードを5枚ずつ配る*/
n=0;
for(i=0;i<=4;i++){
user[i]=mount[n];
mount[n]='\0';
n++;
}
for(i=0;i<=4;i++){
dealer[i]=mount[n];
mount[n]='\0';
n++;
}


for(i=0;i<=4;i++){
if((user[i]<0)||(52 printf("Error1\n");
return -1;

}else{
changeCard(user[i]); //手札を表示(関数)
}
}
printf("\n入れ替え:1 入れ替えない:0\n");
printf("ex)0,1,0,1,1\n" );

scanf("%d,%d,%d,%d,%d",&input[0],&input[1],&input[2],&input[3],&input[4]); //捨てるカードを入力



/*入れ替え作業*/

for(i=0;i<=4;i++){
if((0!=input[i])&&(1!=input[i])){
printf("Error2\n");
return -1;
}
else {
if(1==input[i]){
user[i]=mount[n];
mount[n]='\0';
n++;
}
}
}



/*勝ち負け判定*/
User=checkCard(user);
Dealer=checkCard(dealer);//配列にアドレスを関数に読ませたい


printf("\n user:");
for(i=0;i<=4;i++){
changeCard(user[i]); //手札を表示(関数)
}

printf("\ndealer:");
for(i=0;i<=4;i++){
changeCard(dealer[i]); //手札を表示(関数)
}
printf("\nu点数%d",User);
printf("\nd点数%d\n",Dealer);

if(User>Dealer){
printf("\nYou win!\n");
}else if(User printf("\nYou lose..\n");
}else{
printf("\nEven.\n");
}

return 0;
}

PR

Comment

テストするの?

  • BlogPetのロッド
  • URL
  • 2009-12-21 15:07
  • edit
テストするの?
お名前
タイトル
E-MAIL
URL
コメント
パスワード

Trackback

この記事にトラックバックする

ランキング参加中

ブログランキング・にほんブログ村へ

にほんブログ村 大学生日記ブログ 理系大学生へ

ランキングに登録しています。
よろしければクリックお願いします。

カレンダー

10 2024/11 12
S M T W T F S
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30

ブログ内検索

プロフィール

HN:
ヒロ
年齢:
34
性別:
非公開
誕生日:
1990/03/08
職業:
大学生
趣味:
ネットサーフィン
自己紹介:
国立S大学の工学部生。おんなのこに日々飢えています。

twitter


個人が特定されてしまいそうなtwitter。フォローなどはお気軽に。

最新コメント

無題(返信済)
(04/25)
(12/22)
(12/10)

amazon

最新トラックバック

カウンター

ブクログ

バーコード

解析中

Copyright © 黄昏は雨の日に : All rights reserved

TemplateDesign by KARMA7

忍者ブログ [PR]