まだ1枚ずつしか出せませんけどね。
#include
#include
#include
#define TYPE (4)
#define NUMBER (13)
#define CARD_NUMBER (TYPE*NUMBER)
#define PEOPLE (4)
#define HANDCARD_NUM (CARD_NUMBER/PEOPLE)
#define CARD_NUMS(x) (x-1)
#define TYPE_CLAB (0)
#define TYPE_DIAMOND (1)
#define TYPE_HEART (2)
#define TYPE_SPADE (3)
#define UNUSE (0)
#define USED (1)
#define NONE (-1)
#define TRUE (1)
#define FALSE (0)
//プレイヤー情報
struct Players{
int Rank;
int Pass;
int HandNum;
int HandCards[HANDCARD_NUM];
};
//場情報
struct Fields{
int Field;
int Order;
int PlayersNum;
int PassPlayersNum;
};
//グローバルに使われるにくいあんちくしょう
int Cards[CARD_NUMBER];
struct Fields Field;
struct Players Player[PEOPLE];
//交換する部分
void swap(int *x, int *y){
int t;
t = *x;
*x = *y;
*y = t;
}
//ソートはバブリッシュにいこうず
void sort(int allow[], int num){
int i, j, a, b;
for(i=0;i 13) number -= 13;
switch(type){
case TYPE_CLAB:
printf("クラブの");
break;
case TYPE_DIAMOND:
printf("ダイアの");
break;
case TYPE_HEART:
printf("ハートの");
break;
case TYPE_SPADE:
printf("スペードの");
break;
}
printf("%d%s\n", number, s);
}
//カードを捨てる
int throw_card(struct Players *p, int n){
int x = p->HandCards[n]%NUMBER;
int y = Field.Field%NUMBER;
//カードが無いという情報の場合
if(p->HandCards[n] == -1) return FALSE;
//各々の数を確認し、大きいなら出せるようにする。
if(y HandCards[n]%NUMBER;
else return FALSE;
//結果表示
draw(p->HandCards[n], "を出しました");
//カードを減らす
p->HandCards[n] = -1;
p->HandNum--;
return TRUE;
}
//超簡易AI
void easy_ai(struct Players *p){
int i=0;
//全部のトランプを見て、出せたら出し、出せなかったらパスする
while(throw_card(p, i) == FALSE && i = HANDCARD_NUM){
printf("パスします\n");
p->Pass = TRUE;
Field.PassPlayersNum++;
}
}
int main(void){
int i, j;
//乱数初期化
srand((unsigned int)time(NULL));
//山札初期化
for(i=0;i 1){
printf("場のカード:%d\n", Field.Field);
printf("プレイヤー%dさんは、", Field.Order+1);
//行動は全部AIにお任せ
easy_ai(&Player[Field.Order]);
//上がったかどうかの確認
if(Player[Field.Order].HandNum = Field.PlayersNum-1){
printf("場を切りました\n");
Field.Field = NONE;
Field.PassPlayersNum = 0;
for(i=0;i= PEOPLE) Field.Order = 0;
}while(Player[Field.Order].Rank != 0 || Player[Field.Order].Pass == TRUE);
}
//結果表示
printf("\nゲーム本番\n");
for(i=0;i<PEOPLE;i++){
if(Player[i].Rank <= 0) Player[i].Rank = PEOPLE;
printf("プレイヤー%dさんは%d位でした\n", i+1, Player[i].Rank);
}
return 0;
}
1人目
ハートの3です。
クラブの4です。
クラブの5です。
ダイアの5です。
ハートの6です。
ハートの7です。
クラブの7です。
ハートの9です。
ハートの10です。
ダイアの11です。
ハートの12です。
スペードの1です。
ダイアの1です。
2人目
クラブの3です。
ダイアの3です。
スペードの5です。
ダイアの6です。
ダイアの8です。
スペードの9です。
クラブの9です。
クラブの11です。
クラブの12です。
スペードの13です。
ダイアの13です。
ハートの13です。
ダイアの2です。
3人目
ハートの4です。
ダイアの4です。
スペードの4です。
スペードの6です。
クラブの6です。
ダイアの7です。
ハートの8です。
クラブの8です。
ダイアの9です。
スペードの11です。
クラブの1です。
スペードの2です。
クラブの2です。
4人目
スペードの3です。
ハートの5です。
スペードの7です。
スペードの8です。
クラブの10です。
スペードの10です。
ダイアの10です。
ハートの11です。
スペードの12です。
ダイアの12です。
クラブの13です。
ハートの1です。
ハートの2です。
ゲーム本番
場のカード:-1
プレイヤー1さんは、ハートの3を出しました
場のカード:0
プレイヤー2さんは、スペードの5を出しました
場のカード:2
プレイヤー3さんは、スペードの6を出しました
場のカード:3
プレイヤー4さんは、スペードの7を出しました
場のカード:4
プレイヤー1さんは、ハートの9を出しました
場のカード:6
プレイヤー2さんは、クラブの11を出しました
場のカード:8
プレイヤー3さんは、クラブの1を出しました
場のカード:11
プレイヤー4さんは、ハートの2を出しました
場のカード:12
プレイヤー1さんは、パスします
場のカード:12
プレイヤー2さんは、パスします
場のカード:12
プレイヤー3さんは、パスします
場を切りました
場のカード:-1
プレイヤー4さんは、スペードの3を出しました
場のカード:0
プレイヤー1さんは、クラブの4を出しました
場のカード:1
プレイヤー2さんは、ダイアの6を出しました
場のカード:3
プレイヤー3さんは、ダイアの7を出しました
場のカード:4
プレイヤー4さんは、スペードの8を出しました
場のカード:5
プレイヤー1さんは、ハートの10を出しました
場のカード:7
プレイヤー2さんは、クラブの12を出しました
場のカード:9
プレイヤー3さんは、スペードの2を出しました
場のカード:12
プレイヤー4さんは、パスします
場のカード:12
プレイヤー1さんは、パスします
場のカード:12
プレイヤー2さんは、パスします
場を切りました
場のカード:-1
プレイヤー3さんは、ハートの4を出しました
場のカード:1
プレイヤー4さんは、ハートの5を出しました
場のカード:2
プレイヤー1さんは、ハートの6を出しました
場のカード:3
プレイヤー2さんは、ダイアの8を出しました
場のカード:5
プレイヤー3さんは、ダイアの9を出しました
場のカード:6
プレイヤー4さんは、クラブの10を出しました
場のカード:7
プレイヤー1さんは、ダイアの11を出しました
場のカード:8
プレイヤー2さんは、スペードの13を出しました
場のカード:10
プレイヤー3さんは、クラブの2を出しました
場のカード:12
プレイヤー4さんは、パスします
場のカード:12
プレイヤー1さんは、パスします
場のカード:12
プレイヤー2さんは、パスします
場を切りました
場のカード:-1
プレイヤー3さんは、ダイアの4を出しました
場のカード:1
プレイヤー4さんは、スペードの10を出しました
場のカード:7
プレイヤー1さんは、ハートの12を出しました
場のカード:9
プレイヤー2さんは、ダイアの13を出しました
場のカード:10
プレイヤー3さんは、パスします
場のカード:10
プレイヤー4さんは、ハートの1を出しました
場のカード:11
プレイヤー1さんは、パスします
場のカード:11
プレイヤー2さんは、ダイアの2を出しました
場のカード:12
プレイヤー4さんは、パスします
場を切りました
場のカード:-1
プレイヤー1さんは、クラブの5を出しました
場のカード:2
プレイヤー2さんは、スペードの9を出しました
場のカード:6
プレイヤー3さんは、スペードの11を出しました
場のカード:8
プレイヤー4さんは、スペードの12を出しました
場のカード:9
プレイヤー1さんは、スペードの1を出しました
場のカード:11
プレイヤー2さんは、パスします
場のカード:11
プレイヤー3さんは、パスします
場のカード:11
プレイヤー4さんは、パスします
場を切りました
場のカード:-1
プレイヤー1さんは、ダイアの5を出しました
場のカード:2
プレイヤー2さんは、クラブの9を出しました
場のカード:6
プレイヤー3さんは、パスします
場のカード:6
プレイヤー4さんは、ダイアの10を出しました
場のカード:7
プレイヤー1さんは、ダイアの1を出しました
場のカード:11
プレイヤー2さんは、パスします
場のカード:11
プレイヤー4さんは、パスします
場を切りました
場のカード:-1
プレイヤー1さんは、ハートの7を出しました
場のカード:4
プレイヤー2さんは、ハートの13を出しました
場のカード:10
プレイヤー3さんは、パスします
場のカード:10
プレイヤー4さんは、パスします
場のカード:10
プレイヤー1さんは、パスします
場を切りました
場のカード:-1
プレイヤー2さんは、クラブの3を出しました
場のカード:0
プレイヤー3さんは、スペードの4を出しました
場のカード:1
プレイヤー4さんは、ハートの11を出しました
場のカード:8
プレイヤー1さんは、パスします
場のカード:8
プレイヤー2さんは、パスします
場のカード:8
プレイヤー3さんは、パスします
場を切りました
場のカード:-1
プレイヤー4さんは、ダイアの12を出しました
場のカード:9
プレイヤー1さんは、パスします
場のカード:9
プレイヤー2さんは、パスします
場のカード:9
プレイヤー3さんは、パスします
場を切りました
場のカード:-1
プレイヤー4さんは、クラブの13を出しました
プレイヤー4さんが1位で上がりました
場のカード:10
プレイヤー1さんは、パスします
場のカード:10
プレイヤー2さんは、パスします
場を切りました
場のカード:-1
プレイヤー3さんは、クラブの6を出しました
場のカード:3
プレイヤー1さんは、クラブの7を出しました
プレイヤー1さんが2位で上がりました
場のカード:4
プレイヤー2さんは、パスします
場を切りました
場のカード:-1
プレイヤー3さんは、ハートの8を出しました
場のカード:5
プレイヤー2さんは、パスします
場を切りました
場のカード:-1
プレイヤー3さんは、クラブの8を出しました
プレイヤー3さんが3位で上がりました
場を切りました
ゲーム本番
プレイヤー1さんは2位でした
プレイヤー2さんは4位でした
プレイヤー3さんは3位でした
プレイヤー4さんは1位でした