亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? managers.cpp

?? 飛行棋游戲
?? CPP
字號:
// Managers.cpp: implementation of the Managers class.
//
//////////////////////////////////////////////////////////////////////

#include "stdafx.h"
#include "program.h"
#include "Managers.h"

#ifdef _DEBUG
#undef THIS_FILE
static char THIS_FILE[]=__FILE__;
#define new DEBUG_NEW
#endif

//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////
/*
* 函數(shù)名稱:Managers()
* 函數(shù)介紹:初始化程序
* 輸入?yún)?shù):無
* 輸出參數(shù):無
* 返回值  :無
*/
Managers::Managers()
{
	int i;
	for(i=0;i<4;i++)
	{
		GameOver[i]=true;
	}
	for(i=0;i<4;i++)
	{
		Planes[i].Color=0;
		Planes[i].image=IDB_GREENPLANE;
		PlReady[i]=false;
	}
	for(i=4;i<8;i++)
	{
		Planes[i].Color=1;
		Planes[i].image=IDB_REDPLANE;
		PlReady[i]=false;
	}
	for(i=8;i<12;i++)
	{
		Planes[i].Color=2;
		Planes[i].image=IDB_YELLOWPLANE;
		PlReady[i]=false;
	}
	for(i=12;i<16;i++)
	{
		Planes[i].Color=3;
		Planes[i].image=IDB_BLUEPLANE;
		PlReady[i]=false;
	}

	PAUSE=true;
	Game_State=-1;
}

Managers::~Managers()
{

}
////////////////////////////////////////////////////////////////////////
/*
* 函數(shù)名稱:DoMsg(int steps, 當前點的格子步數(shù)
                  int state, 當前格子所有的狀態(tài)
                  int action,動作
                  int roll)  ROLL的點數(shù)
* 函數(shù)介紹:消息響應
* 輸入?yún)?shù):action 0為鼠標經(jīng)過 1為鼠標左鍵,2鼠標右件,3表示ROLL之后的判斷
* 輸出參數(shù):bool
* 返回值  :是否響應成功
*/
bool Managers::DoMsg(int steps, int state,int action,int roll)
{
	if(PAUSE)
		return false;
	Chess *pl;
	if(state==4)//已經(jīng)到達目的地,降落了
		return false;
	if (action==1)
	{
		if((pl=Search(steps,state))==NULL)//找到目標飛機
			return false;
		if(roll<1 || roll>6 || state<0 || state>4 || steps<0 || steps> 56) //數(shù)據(jù)非法
			return false;
		PlLast=*pl;//把當前信息拷貝到PlLast中去
		PlThis=pl;//把當前改變的飛機的地址傳到PlThis中
		if(state==0)//還停在飛機場,需要Roll到6才能準備起飛
		{
			if(roll!=6)
				return false;
			pl->state=1;
		}
		return true;
	}
	else if(action==3)//自動走
	{
		if(PlAuto!=NULL)
		{
			PlThis=PlAuto;
			PlLast=*PlAuto;
			return true;
		}
		else
		{
			int k;
			for(k=Game_State*4;k<Game_State*4+4;k++)
				if(Planes[k].state!=0 && Planes[k].state!=4)
					break;

			if(k==Game_State*4+4)
			{
				if(roll==6)
					return false;
				do
				{
					Game_State=(Game_State+1)%4;
				}
				while(GameOver[Game_State]);
				return true;
			}
		}
	}
	return false;
}
////////////////////////////////////////////////////////////////////////
/*
* 函數(shù)名稱:UpData(int roll)
* 函數(shù)介紹:游戲更新
* 輸入?yún)?shù):roll的值,因為ROLL到6可以連續(xù)走棋
* 輸出參數(shù):bool
* 返回值  :true成功
*/
bool Managers::UpData(int roll)
{

	Chess &p=(*PlThis);//讓P代替PlThis存的值,提高效率,節(jié)約代碼
	if(p.step==OverStep(p.Color)+6 && p.state==3)
	{
		p.state=4;
	}
	int k;
	if(Game_State>=0 && Game_State<4 && p.state==2)//判斷飛行中的碰撞以及跳棋問題
	{
		PlBack=GoBack(PlThis,roll);//看看是不是有人要回家了
		if(PlBack==PlThis)
			return true;//更新結(jié)束,他絕對沒發(fā)讓游戲結(jié)束
		
		if(p.step==(DefStep(p.Color)+18)%52)
		{
			p.step=(p.step+12)%52;
			PlBack=GoBack(PlThis,roll);
			if(PlBack==PlThis)
				return true;//更新結(jié)束,他絕對沒發(fā)讓游戲結(jié)束
		}
		else if((p.step+3)%4==p.Color && p.step!=OverStep(p.Color))
		{
			p.step=(p.step+4)%52;
			PlBack=GoBack(PlThis,roll);
			if(PlBack==PlThis)
				return true;//更新結(jié)束,他絕對沒發(fā)讓游戲結(jié)束
		}
		if(p.step==(DefStep(p.Color)+18)%52)
		{
			p.step=(p.step+12)%52;
			PlBack=GoBack(PlThis,roll);
			if(PlBack==PlThis)
				return true;//更新結(jié)束,他絕對沒發(fā)讓游戲結(jié)束
		}
	}

	//判斷是否有玩家勝利,是否游戲結(jié)束
	for(k=Game_State*4;k<Game_State*4+4;k++)
	{
		if(Planes[k].state!=4)
			break;
	}
	if(k==Game_State*4+4)
	{
		GameOver[Game_State]=NumOfWiner;
		NumOfWiner++;
	}
	else if(roll!=6)
	{
		do
		{
			Game_State=(Game_State+1)%4;
		}
		while(GameOver[Game_State]);
	}
	if(NumOfWiner==1)//有3個玩家下玩就全部結(jié)束
	{
		Game_State=8;
		PAUSE=true;
		MessageBox(GetActiveWindow(),"勝利!恭喜你順利完成任務","游戲結(jié)束",0);
	}
	return true;
}
////////////////////////////////////////////////////////////////////////
/*
* 函數(shù)名稱:GameStart()
* 函數(shù)介紹:游戲開始初始化
* 輸入?yún)?shù):無
* 輸出參數(shù):無
* 返回值  :無
*/
void Managers::GameStart()
{
	PlAuto=NULL;
	NumOfWiner=0;
	int i;
	Game_State=0;
	for(i=0;i<4;i++)
		GameOver[i]=false;
	for(i=0;i<4;i++)
	{
		Planes[i].state=0;
		Planes[i].step=51;
		PlReady[i]=true;
		Planes[i].dou=0;
	}
	for(i=4;i<8;i++)
	{
		Planes[i].state=0;
		Planes[i].step=12;
		PlReady[i]=true;
		Planes[i].dou=0;
	}
	for(i=8;i<12;i++)
	{
		Planes[i].state=0;
		Planes[i].step=25;
		PlReady[i]=true;
		Planes[i].dou=0;
	}
	for(i=12;i<16;i++)
	{
		Planes[i].state=0;
		Planes[i].step=38;
		PlReady[i]=true;
		Planes[i].dou=0;
	}
	PAUSE=false;
}
////////////////////////////////////////////////////////////////////////
/*
* 函數(shù)名稱:Search(int step, int state)
* 函數(shù)介紹:查找在第step步,在state狀態(tài)是否存在一個飛機
* 輸入?yún)?shù):step 步數(shù) state 狀態(tài)
* 輸出參數(shù):Chess *
* 返回值  :找到的話則是那個飛機地址,沒找到是NULL
*/
Chess * Managers::Search(int step, int state)
{
	Chess *p=Planes;
	int k;
	for(k=0;k<16;k++)
	{
		if(p->state==state && p->step==step && p->Color==Game_State)
			return p;
		p++;
	}
	return NULL;
}
////////////////////////////////////////////////////////////////////////
/*
* 函數(shù)名稱:GoBack(Chess *p)
* 函數(shù)介紹:判斷飛機P的移動是否造成有飛機被打回家
* 輸入?yún)?shù):Chess *p 飛機P的地址
* 輸出參數(shù):Chess *
* 返回值  :被打回去的飛機地址,沒飛機被打回去返回NULL
*/
Chess * Managers::GoBack(Chess *p,int roll)
{
	int i;
	int dou=0;//記錄碰裝時,被碰的有幾個重疊
	int Che=0;//記錄碰撞時,被碰的是幾號
	if(p->state!=2)
		return NULL;
	for(i=0;i<16;i++)//判斷飛機是否相撞
		if(Planes[i].step==p->step && Planes[i].state==2 && Planes+i != p)
												//最后一句表示不是同一架飛機
		{
			if(Planes[i].Color==p->Color)//顏色相同,重疊之
			{
				p->dou=Planes[i].dou++;
				PlAuto=NULL;//沒有給任何飛機自動走的機會
				return NULL;
			}
			else //顏色不同,打回去;(重疊了多個不同顏色的就該自己回去了)
			{
				dou++;
				Che=Che*100+i+1;
			}
		}
	p->dou=0;//沒有自己的飛機重疊,改回0
	if(dou==1)
	{
		Che--;
		Planes[Che].state=0;
		Planes[Che].step=DefStep(Planes[Che].Color);//回到出發(fā)點
		return Planes+Che;
	}
	if(dou>=2)
	{
		if(roll!=6)//全部飛機都得回家
		{
			while(Che!=0)
			{
				i=Che%100-1;
				Che/=100;
				Planes[i].state=0;
				Planes[i].step=DefStep(Planes[i].Color);
			}
			p->state=0;
			p->step=DefStep(p->Color);
			PlAuto=NULL;//沒有給任何飛機自動走的機會
			return p;
		}
		else
		{
			PlAuto=p;//P可以停在多架飛機上,沒人回家,而且下次P必須自動走一次
			return NULL;
		}
	}
	PlAuto=NULL;//沒有給任何飛機自動走的機會
	return NULL;
}
////////////////////////////////////////////////////////////////////////
/*
* 函數(shù)名稱:DefStep(int color)
* 函數(shù)介紹:得到不同顏色飛機的起飛步數(shù)
* 輸入?yún)?shù):color 飛機顏色(不同的陣營)
* 輸出參數(shù):int
* 返回值  :出生所在步數(shù)
*/
int Managers::DefStep(int color)
{
	if(color==0)
		return 51;
	if(color==1)
		return 12;
	if(color==2)
		return 25;
	if(color==3)
		return 38;
	return 0;
}
////////////////////////////////////////////////////////////////////////
/*
* 函數(shù)名稱:OverStep(int color)
* 函數(shù)介紹:得到不同顏色飛機的降落步數(shù)
* 輸入?yún)?shù):color 飛機顏色(不同的陣營)
* 輸出參數(shù):int
* 返回值  :降落所在步數(shù)
*/
int Managers::OverStep(int color)
{
	if(color==0)
		return 49;
	if(color==1)
		return 10;
	if(color==2)
		return 23;
	if(color==3)
		return 36;
	return 0;
}

////////////////////////////////////////////////////////////////////////
/*
* 函數(shù)名稱:StepUp(Chess *pl, int roll)
* 函數(shù)介紹:飛機向前進
* 輸入?yún)?shù):pl 飛機 roll點數(shù)
* 輸出參數(shù):bool
* 返回值  :是否成功移動
*/
bool Managers::StepUp(Chess *pl, int roll)
{
	int ro=roll;
	if(pl->state==1 && roll!=0)
		pl->state=2;
	while(ro!=0 && pl->state==2)
	{
		pl->step++;
		if(ro>0)
			ro--;
		else
			ro++;
		if(pl->step==OverStep(pl->Color)+1)//判斷飛機是否該降落
		{
			pl->state=3;
		}
		else if(SearchTwice(pl->step,pl->Color))
		{
			if(roll==6)
				ro=0;
			else
				ro*=-1;
		}
		else if(pl->step>51)
			pl->step-=52;
	}
	if(pl->state==3 && ro!=0)
	{
		int k;
		k=OverStep(pl->Color)+6;//飛機降落點
		if(pl->step+ro==k)
		{
			pl->step=k;
			pl->state=4;
		}
		else if(pl->step+ro<k)
			pl->step+=ro;
		else
		{
			pl->step=k-ro+(k-pl->step);
		}
	}
	return true;
}

////////////////////////////////////////////////////////////////////////
/*
* 函數(shù)名稱:SearchTwice(int step,int notcolor)
* 函數(shù)介紹:搜索在step的地方是否存在2個或以上不是notcolor的飛機重疊(只有state==2才算)
* 輸入?yún)?shù):step 步數(shù),notcolor 重疊飛機不能是的顏色
* 輸出參數(shù):bool
* 返回值  :是否存在
*/
bool Managers::SearchTwice(int step,int butcolor)
{
	int k,i;
	i=0;
	for(k=0;k<16;k++)
		if(Planes[k].state==2 && Planes[k].step==step && Planes[k].Color!=butcolor)
			i++;
	if(i>1)
		return true;
	return false;
}

////////////////////////////////////////////////////////////////////////
/*
* 函數(shù)名稱:OneStep(int gh, int roll)
* 函數(shù)介紹:飛機一次只非一步
* 輸入?yún)?shù):gh 向前飛還是向后飛,roll 丟的色子數(shù)
* 輸出參數(shù):int
* 返回值  :下一步是向前飛還是向后飛
*/
int Managers::OneStep(int gh, int roll)
{
	Chess *pl=PlThis;
	if(pl->state==1)
		pl->state=2;
	if(pl->state==2)
	{	
		if(SearchTwice(pl->step,pl->Color) && pl!=PlAuto)
		{
			if(roll!=6)
			{
				pl->step-=gh;
				gh*=-1;
			}
			else
			{
				return 1;
			}
		}
		else
		{
			pl->step+=gh;
		}
		if(pl->step==OverStep(pl->Color)+1)//判斷飛機是否該降落
		{
			pl->state=3;
		}
		else if(pl->step>51)
			pl->step-=52;
		else if(pl->step<0)
			pl->step=51;
	}
	else if(pl->state==3)
	{
		int k;
		k=OverStep(pl->Color)+6;//飛機降落點
		if(pl->step==k)
		{
			pl->step--;
			gh=-1;
		}
		else
		{
			pl->step+=gh;
		}
	}
	return gh;
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
91视频观看视频| 51久久夜色精品国产麻豆| 欧美精选午夜久久久乱码6080| 亚洲国产精品传媒在线观看| 久久se精品一区精品二区| 日韩不卡免费视频| 91麻豆精品国产91久久久使用方法| 亚洲成在线观看| 91精品一区二区三区久久久久久 | 国产一区二区三区精品欧美日韩一区二区三区 | 欧美性xxxxx极品少妇| 一区二区三区在线视频免费| 午夜国产不卡在线观看视频| 欧美精品一二三区| 久久久高清一区二区三区| 国产suv精品一区二区三区| 综合网在线视频| 欧美中文字幕一区| 日韩欧美色电影| 欧美日韩免费视频| 亚洲国产精品精华液2区45| 在线观看91视频| 国产一区二区三区黄视频 | 美女视频网站黄色亚洲| 国产精品视频在线看| 欧美日韩精品一区二区三区蜜桃| 久久久久久久久一| 欧美亚洲动漫制服丝袜| 丰满亚洲少妇av| 激情久久久久久久久久久久久久久久| 国产午夜精品一区二区三区视频 | 欧美精品免费视频| 亚洲欧洲av在线| 亚洲精品一线二线三线| 7777女厕盗摄久久久| eeuss影院一区二区三区 | 久久国产综合精品| 亚洲一级片在线观看| 国产亚洲欧洲一区高清在线观看| 欧美日韩精品一区二区在线播放| 国产精品一区专区| 久久99精品久久只有精品| 午夜久久久久久久久| 亚洲黄色小说网站| 成人免费在线观看入口| 国产精品不卡一区| 国产精品理论在线观看| 久久精品夜色噜噜亚洲a∨| 欧美一区二区三区人| 日韩视频在线永久播放| 日韩欧美国产三级| 国产精一区二区三区| 亚洲国产经典视频| 国产精品剧情在线亚洲| 亚洲日本在线天堂| 亚洲激情综合网| 三级影片在线观看欧美日韩一区二区 | 久久精品国产亚洲高清剧情介绍 | 日韩一区欧美一区| 一区二区三区四区在线| 亚洲va欧美va国产va天堂影院| 亚洲第一搞黄网站| 久久疯狂做爰流白浆xx| 春色校园综合激情亚洲| 99视频精品全部免费在线| 午夜电影久久久| 欧美日韩一区二区三区高清| 日韩一区二区三免费高清| 久久午夜国产精品| 亚洲欧美日韩国产一区二区三区| 亚洲在线中文字幕| 激情久久久久久久久久久久久久久久| 国产乱一区二区| 欧美日韩一区在线观看| 欧美xingq一区二区| 久久婷婷综合激情| 亚洲大尺度视频在线观看| 免费久久精品视频| 国产成人综合亚洲91猫咪| 色香蕉久久蜜桃| 久久久久亚洲综合| 日本视频中文字幕一区二区三区| 国产麻豆精品在线| 欧美一区中文字幕| 亚洲免费av网站| 成人av免费在线| 亚洲一区影音先锋| 国产精品久久99| 亚洲精品一区二区三区四区高清| 国产精品国产三级国产普通话99| 日本三级韩国三级欧美三级| 在线观看免费视频综合| 亚洲色图第一区| 99re免费视频精品全部| 久久午夜色播影院免费高清| 精品亚洲成a人| www成人在线观看| 麻豆成人久久精品二区三区小说| 色综合天天在线| 日韩一区有码在线| 91网址在线看| 亚洲电影一区二区三区| 色婷婷av一区二区三区gif| 中文字幕二三区不卡| 国产精品99久久久久| 中文欧美字幕免费| 成人性色生活片| 亚洲婷婷国产精品电影人久久| 在线看日本不卡| 午夜一区二区三区视频| 经典三级在线一区| 国产农村妇女精品| 99精品视频一区| 麻豆一区二区三| 久久免费精品国产久精品久久久久| 国产一区二区91| 亚洲综合另类小说| 日韩久久精品一区| 高清不卡一二三区| 亚洲国产精品人人做人人爽| 欧美一二三在线| 91色在线porny| 狠狠v欧美v日韩v亚洲ⅴ| 亚洲欧美视频一区| 欧美一区二区精品| 91国模大尺度私拍在线视频| 免费成人美女在线观看.| 国产精品天天摸av网| 欧美一级夜夜爽| 日本二三区不卡| 韩国欧美国产一区| 日本亚洲免费观看| 亚洲欧洲99久久| 久久众筹精品私拍模特| 宅男在线国产精品| 亚洲综合一二三区| 中文字幕字幕中文在线中不卡视频| 欧美一区二区三区四区五区| 日本精品一级二级| 99久久er热在这里只有精品15| 蜜桃视频在线观看一区| 亚洲成人免费av| 亚洲图片自拍偷拍| 亚洲精品videosex极品| √…a在线天堂一区| 中文字幕第一区二区| 国产成人av电影在线播放| 激情偷乱视频一区二区三区| 亚洲精选一二三| 亚洲综合在线视频| 亚洲成人激情av| 午夜a成v人精品| 日韩av网站在线观看| 欧美aaa在线| 狠狠色丁香久久婷婷综合_中| 国产综合久久久久久鬼色| 精品一区二区三区在线播放| 国产在线播放一区二区三区| 中文字幕第一区综合| 一区二区三区四区在线| 亚洲国产精品一区二区久久| 99九九99九九九视频精品| 亚洲激情图片qvod| 亚洲成人免费av| 国产精品综合av一区二区国产馆| 国产成人精品aa毛片| 26uuu国产电影一区二区| 51精品秘密在线观看| 国产精品色一区二区三区| 亚洲国产美女搞黄色| 国模少妇一区二区三区| 久久久久久久久一| 日韩一区和二区| 在线免费观看日本一区| 日韩片之四级片| 色婷婷av一区二区三区软件| 欧美成人a视频| 亚洲国产视频网站| 国产a级毛片一区| 5月丁香婷婷综合| 亚洲精品视频免费观看| 国产精品一区二区黑丝| 欧美艳星brazzers| 久久日一线二线三线suv| 亚洲永久精品大片| 成人性视频网站| 成人一二三区视频| 精品国产sm最大网站免费看| 图片区小说区区亚洲影院| 91一区二区三区在线播放| 欧美激情一区二区三区蜜桃视频 | 欧美激情一区在线| 九九国产精品视频| 日韩午夜三级在线| 老司机精品视频线观看86| 日韩一区二区在线观看视频 | 国产成人亚洲综合a∨猫咪| 日韩女同互慰一区二区| 欧美v国产在线一区二区三区| 国内精品伊人久久久久av一坑|