#include "DxLib.h"
void hajimennogamen(); //ゲームの最初の画面を担当する社員
void gamemain(); //ゲーム画面を担当する社員
void make(); //ゲームオーバー画面を担当する社員
void kachi(); //ゲームクリア画面を担当する社員
char m; //ゲームモードを決定する整数 0:ゲームの最初の画面 1:ゲーム画面 2:ゲームオーバー 3:ゲームクリア画面
int x=100,y=100; //整数型の箱xとyを用意
int h ; //画像に付けられた出席番号を収納する箱を用意
int siro = GetColor(255, 255, 255); //白色の出席番号収納する箱
int kiiro = GetColor(255, 255, 0); //黄色の出席番号収納する箱
int mizuiro = GetColor(0, 255, 255); //水色の出席番号を収納する箱
char taisyoutonarukey_mae[100];
char jyu(int taisyoutonarukey);
void chizusakusei(); //地図作成(壁建設）社員
char chizu[12][27]; //配置担当
void block(); //ブロックを描く社員
int WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR, int) {
	ChangeWindowMode(true);  //ウィンドウモードの切り替え
	SetGraphMode(440, 540, 32); //ウインドウサイズの変更
	if (DxLib_Init() == -1)return(-1);   // DXライブラリ初期化処理

	SetDrawScreen(DX_SCREEN_BACK); //裏画像を描画対象に加える（2017/06/28追加） 画面のちらつき対策
	m=1;
	while (ScreenFlip() == 0 && ProcessMessage() == 0 && ClearDrawScreen() == 0) {
		if(m==0)hajimennogamen();
		if(m==1)gamemain();
		if(m==2)make();
		if(m==3)kachi();
	}

	WaitKey();      // キー入力待ち
	DxLib_End();    // DXライブラリ終了処理
	return 0;
}
void block(){
	int x,y;
	for (x = 0; x < 4; x++) {
		chizu[2][2 + x] = 2;
	}
	for (x = 0; x < 4; x++) {
		chizu[4+x][2] = 2;
	}
	for (x = 0; x < 12; x++) {
		for (y = 0; y < 27; y++) {
			if (chizu[x][y] == 2) {
				DrawBox(20 * x, 20 * y, 20 * (x + 1) - 1, 20 * (y + 1) - 1, kiiro, true);
			}
		}
	}
}
void chizusakusei() {
	int x, y;
	int gazou = LoadGraph("画像/kb00.png");
	for (x = 0; x < 12; x++) {
		for (y = 0; y < 27; y++) {
			chizu[x][y] = 0;
		}
	}
	for (y = 0; y < 27; y++) {
		chizu[0][y] = 1;
		chizu[11][y] = 1;
	}
	for (x = 1; x < 11; x++) {
		chizu[x][0] = 1;
		chizu[x][26] = 1;
	}
	for (x = 0; x < 12; x++) {
		for (y = 0; y < 27; y++) {
			if (chizu[x][y] == 1) {
				DrawGraph(20 * x, 20 * y, gazou, true);
			}
		}
	}
	DeleteGraph(gazou);
}
void hajimennogamen(){ //ゲームの最初の画面
	int gazou;
	gazou = LoadGraph("画像/02.png");
	DrawGraph(0, 0, gazou, true);
	if (jyu(KEY_INPUT_RETURN) != 0) m=1;
}
void gamemain(){ //ゲーム画面	
	chizusakusei(); //地図作成(壁建設）
	block(); //ブロックを描く
}
void make(){ //ゲームオーバー画面
	int gazou;
	gazou = LoadGraph("画像/03.png");
	DrawGraph(0, 0, gazou, true);
	if (jyu(KEY_INPUT_RETURN) != 0) m=3;
}
void kachi(){ //ゲームクリア画面
	int gazou;
	gazou = LoadGraph("画像/04.png");
	DrawGraph(0, 0, gazou, true);
	if (jyu(KEY_INPUT_RETURN) != 0) m=0;
}
char jyu(int taisyoutonarukey) { //taisyoutonarukey（たいしょうとなるキー）は、今対象としているキーの出席番号
	if (CheckHitKey(taisyoutonarukey) != 0) {
		if (taisyoutonarukey_mae[taisyoutonarukey] == 0) {
			taisyoutonarukey_mae[taisyoutonarukey] = 1;
			return 1;
		}
	}
	else {
		taisyoutonarukey_mae[taisyoutonarukey] = 0;
		return 0;
	}
	return 0;
}