スカートをCで

関数は明日書きます。

データ構造のヘッダー

/* 構造体のプロトタイプ宣言 */
struct card;
struct person;
struct base_info;
struct auction_info;
struct decision_info;
struct playing_info;

typedef int Boolean;
#define Btrue			1
#define Bfalse			0

typedef int Position;
#define NONE		(-1)
#define DEALER		0
#define FOREHAND	1
#define MIDDLEHAND	2
#define REARHAND	3

/* whenの定義 */
#define OUT_OF_GAME	0
#define AUCTION		1
#define DECISION	2
#define PLAYING		3
#define SCORING		4

/* gametypeの定義 */
/* !この数値を点数計算に利用してはならない! */
#define DIA_GAME	9
#define HEART_GAME	10
#define SPADE_GAME	11
#define CLUB_GAME	12
#define NuLL_GAME	23
#define GRAND_GAME	24
#define PASSED		0
#define NOT_DECIDED	(-1)

/* declarationの定義 */
#define NOTHING		0
#define SCHNEIDER	1
#define SCHWARZ		2
#define OBERT		3
#define NOT_DECIDED	(-1)

/* ビッド可能な最大値の定義 */
#define MAX_BID	360

データ構造

/* ここでヘッダーをinclude */

struct card{
	Boolean	seeming_or_not;
	union{
		struct{
			char	sign;/* カードに書いてあるマーク。 'C','S','H','D'を用いる。ゴミ値は'n'とか */
			char	number;/* カードに書いてある数字 'J','A','0', ..., '7'を用いる。ゴミ値は'n'とか */
		}seeming;
		struct{
			int		gametype;
			char	suit;/* 'C','S','H','D','J'を用いる('J'はグランドの時のみ)。ゴミ値は'n' */
			int		strength;/* 強いものに大きな数を割り当てるため、-1,-2,...を用いる。ゴミ値は33 */
			int		points;/* カード点。ヌルの時は1をすべてに割り当てる(?) ゴミ値は121 */
		}semantic;
	}property;
}


struct person{
	Boolean			PC_or_not;/* 人間が操るpersonかどうか */
	Position		position;
	struct card		hand[12];
	struct card		have_gotten[30];
	int				score;
	
	struct card		hand_for_postmortem[10];
}

struct base_info{
	int				when;
	Position		waited;
	struct person *	ptr_fore;
	struct person *	ptr_middle;
	struct person *	ptr_rear;
	struct card		skat_cards[2];
	
	struct card		skat_cards_for_postmortem[2];
}

struct auction_info{
	/* 競りを勝ち抜き戦と見て、何回戦なのかをstageに、勝ち抜き者をwinnerに保存 */
	int			stage;
	Position	winner;
	int			current_bid;
}

struct decision_info{
	/* 競りが終わってからgametypeとかを決定するまでの情報 */
	Position		soloist;
	int				contract;
	Boolean			looked;/* スカートを見たか */
	Boolean			decided;
	
	int				gametype;/* ここは、decidedがBfalseのときはNOT_DECIDED。 */
	int				declaration;/* ここも、decidedがBfalseのときはNOT_DECIDED。 */
}

struct playing_info{
	Position		soloist;
	int				contract;
	int				gametype;
	int				declaration;
	Boolean			handgame_or_not;
	
	Position		first_hand;
	struct card		cards_in_this_trick[3];/* ここには、出された順番通りに保存。 */
	
	int				howmany_cards_in_this_trick;
	int				howmany_cards_in_this_deal;
	
	struct card *	ptr_being_played;
}

追記

インデント4文字分だとちょうどいいはずなんですが、8文字で表示されるみたいです。普通はどのくらいなんでしょうか?>NITA先生とか
インデントの長さをどこかでいじるべきなんでしょうけど、どこでいじれるのかわからないので、とりあえず放置します。