スカートを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先生とか
インデントの長さをどこかでいじるべきなんでしょうけど、どこでいじれるのかわからないので、とりあえず放置します。