//player status #define PLAYER_MAX 5 //最大人数 #define ITEM 3 typedef struct player { int position[i][j]; //マップiのj番目のマスにいる(0:いない 1:いる) int credit[i]; //i(0:一般 1:専門)の単位数 int item[ITEM]; //アイテム3種類([0:教科書(選択肢半分) 1:過去問(選択肢1つ) 2:時計(制限時間伸ばす)] 0:持ってない 1:持ってる) int finally; //最終結果(1:卒業 0:留年) char *pfilename; //プレイヤー画像名の格納 }PLAYER; PLAYER p[PLAYER_MAX]; //map info #define MAP_MAX 10 //マップ数 //0:4号館205 1:4号館206 2:4号館 106 3:1号館 4:テクノホール 5:...? typedef struct map { int max; //各マップの最大マス数 char *mapname; //マップ名 char *mapfilename; //マップ画像名の格納 }MAP; MAP map[MAP_MAX]; //game system #define MONTH 12 //12ヶ月(1年) #define NORMA_0 10 //一般の必要単位数 #define NORMA_1 10 //専門の必要単位数 ノルマってロシア語らしい #define IPPAN 0 #define SENMON 1 typedef struct game { int start; //1:スタート画面表示 0:非表示 int play; //1:プレイ画面表示 0:非表示 int question; //1:問題画面表示 0:非表示 int result; //1:リザルト画面表示 0:非表示 int pnum; //プレイヤー数 int pnow; //現在のプレイヤー int month[MONTH]; //時期{4,5,6,...,12,1,2,3} int date; //0〜11 }GAME; GAME game; ___________________________________________________________________________________________ 画像の表示法は頑張って main関数外でやってもいいんじゃね int main() { init(); //各変数の初期化 if(game.start == 1) { //start(); /* ・スタート画面を表示 ・スタートを選ぶと game.start = 0, game.play = 1; ・終了を選ぶとgtk_main_loopを終了 */ } else if(game.play == 1) { //gamestart(); int saikoro; //出目を格納 int i,j; //forとかで使う /* ・プレイ画面を表示 ・メッセージウィンドウ表示 ・for(i=0; i map[i].max) 別のマップに移動 else 一般or専門マスに止まる game.play = 0, game.question = 1; ※問題画面表示はmain函数内じゃなくて別に用意したほうがいいかも? ・問題解き終わった game.pnow++; //次プレイヤーへ if(game.pnow > game.pnum) game.pnow = 0; //最初のプレイヤーへ game.date++; //月更新 if(game.date == MONTH) game.play = 0 game.result = 1 //12ヶ月経ったらリザルト画面へ */ } else if(game.question == 1) { //gamequestion(); 0: 一般 1: 専門 /* ・乱数で問題を選択(ファイルから読み込み 問題番号,科目名,難易度,獲得できる単位数,制限時間,問題文,選択肢×4) ・for(i=0; i<3; i++) if(p[game.pnow].item[i] == 1)アイテムがある場合使用できる ・問題と選択肢表示 ・ラジオボタン?チェックボックス?にチェック ・回答ボタン押す 正解ならp[game.pnow].credit[0or1] += 獲得できる単位数; 不正解なら更新しない ・game.question = 0, game.play = 1 */ } else if(game.result == 1) { //gameresult(); int credit_sum[PLAYER_MAX] = {-1,-2,-3,...}; //各プレイヤーの取得単位数を降順に格納 int number[PLAYER_MAX] = {-1,-1,-1,...}; //順位を格納 /* ・成績発表 ・if(p[game.pnow].credit[0] >= NORMA_0 && (p[game.pnow].credit[1] >= NORMA_1) //単位数の評価 p[game.pnow].finally = 1; //必要単位数を取っていれば合格  else p[game.pnow].finally = 0; //取っていなければ不合格 ・順位 int n; for(i=0; i0; j--) //降順に並び替え if(n > credit_sum[j-1]) credit_sum[j] = credit_sum[j-1]; credit_sum[j-1] = n; number[j] = number[j-1]; number[j-1] = i; for(i=0; i