"状態遷移の基本(フレームカウントで状態遷移)"
#include <iostream>
//列挙型(数え上げ enumurate)
enum human_state
{
	IDLE,  //何もしてない
	WALK,  //歩いている
	JUMP,  //㌧㌦
	CROUCH, //しゃがみ
};
 
void PrintMyState(human_state mystate)
{
	switch(mystate)
	{
		case human_state::IDLE:
			std::cout << "なーんもしてない" << std::endl;
			break;
		case human_state::WALK:
			std::cout << "歩いています" << std::endl;
			break;
		case human_state::JUMP:
			std::cout << "空中です" << std::endl;
			break;
		case human_state::CROUCH:
			std::cout << "体育座り中" << std::endl;
			break;
		default:
			std::cout << "状態異常!" << std::endl;
	}
}
 
int frameCount = 0; //どこからでもアクセスできそうなフレームカウント
 
// frameCount
// 0~5
//  何もしない
// 5~8
//  歩く
// 9-12
//   飛ぶ
// 13-16
//   何もしない
// 17-20
//   しゃがむ
// 20-
//  ひたすら歩く
void ShowIdleScnene(human_state &mystate)
{
	PrintMyState(mystate);
	//待ち状態の時の処理 ある条件で歩く状態に移行
	if(frameCount == 5)
		mystate = human_state::WALK;
	else if(frameCount == 17)
		mystate = human_state::CROUCH;	
}
void ShowWalkScnene(human_state &mystate)
{
	PrintMyState(mystate);
	//歩き状態の時の処理 ある条件で飛ぶ状態に移行
	if(frameCount == 8)
		mystate = human_state::JUMP;
}
 
void ShowJumpScnene(human_state &mystate)
{
	PrintMyState(mystate);
	//ジャンプ状態の時の処理 ある条件で飛ぶ状態に移行
	if(frameCount == 12)
		mystate = human_state::IDLE;
}
 
void ShowCrouchScnene(human_state &mystate)
{
		PrintMyState(mystate);
	//しゃがみ状態の時の処理 ある条件で飛ぶ状態に移行
	if(frameCount == 20)
		mystate = human_state::WALK;
}
 
int main() {
	human_state hstate = human_state::IDLE;
 
	while(true){
		//状態が変化していくよ!
		std::cout << frameCount << std::endl;
		switch(hstate)
		{
			case human_state::IDLE:
 
				//アイドル状態の処理
				ShowIdleScnene(hstate);
				break;
			case human_state::WALK:
				//歩行状態の処理
				ShowWalkScnene(hstate);
				break;
			case human_state::JUMP:
				//ジャンプ状態の処理
				ShowJumpScnene(hstate);
				break;
			case human_state::CROUCH:
				//しゃがみ状態の処理
				ShowCrouchScnene(hstate);
				break;
			default:
				hstate = human_state::IDLE;
		}
		//PrintMyState(hstate);
		getchar();
		frameCount++;
	}
}
 
//クリックなどの入出力
//ゲームの状態を動かす条件
//ゲームの状態がいくつあるか、何か?
   TITLE, PLAY, GAMEOVER
// → enumで書いて,
//    switch文かいて
//  それぞれの状態の処理を関数化してみる!