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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? gamecore.cpp

?? 這是一個完全使用wxWidgets開發庫開發的小游戲
?? CPP
字號:
//---------------------------------------------------------------------------
//
// Name:        GameCore
// Author:      ejoyc
// Created:     2008-6-23 19:00:35
// Description: GameCore作為游戲引擎,為游戲提供最核心功能支持
//
//---------------------------------------------------------------------------

#include "GameCore.h"

int Brick_Cell[7][4][4][4]=
{
	{//id = 0
		{//state =0
			{1,1,0,0},
			{1,1,0,0},
			{0,0,0,0},
			{0,0,0,0}
		},
		{//state =1
			{1,1,0,0},
			{1,1,0,0},
			{0,0,0,0},
			{0,0,0,0}
		},
		{//state =2
			{1,1,0,0},
			{1,1,0,0},
			{0,0,0,0},
			{0,0,0,0}
		},
		{//state =3
			{1,1,0,0},
			{1,1,0,0},
			{0,0,0,0},
			{0,0,0,0}
		} 
	},
	{//id = 1
		{//state =0
			{1,1,1,1},
			{0,0,0,0},
			{0,0,0,0},
			{0,0,0,0}
		},
		{//state =1
			{0,0,0,1},
			{0,0,0,1},
			{0,0,0,1},
			{0,0,0,1}
		},
		{//state =2
			{0,0,0,0},
			{0,0,0,0},
			{0,0,0,0},
			{1,1,1,1}
		},
		{//state =3
			{1,0,0,0},
			{1,0,0,0},
			{1,0,0,0},
			{1,0,0,0}
		} 
	},
	{//id = 2
		{//state =0
			{0,1,0,0},
			{1,1,0,0},
			{1,0,0,0},
			{0,0,0,0},
		},
		{//state =1
			{1,1,0,0},
			{0,1,1,0},
			{0,0,0,0},
			{0,0,0,0},
		},
		{//state =2
			{0,1,0,0},
			{1,1,0,0},
			{1,0,0,0},
			{0,0,0,0},
		},
		{//state =3
			{1,1,0,0},
			{0,1,1,0},
			{0,0,0,0},
			{0,0,0,0},
		} 
	},
	{//id = 3
		{//state =0
			{1,0,0,0},
			{1,1,0,0},
			{0,1,0,0},
			{0,0,0,0},
		},
		{//state =1
			{0,1,1,0},
			{1,1,0,0},
			{0,0,0,0},
			{0,0,0,0},
		},
		{//state =2
			{1,0,0,0},
			{1,1,0,0},
			{0,1,0,0},
			{0,0,0,0},
		},
		{//state =3
			{0,1,1,0},
			{1,1,0,0},
			{0,0,0,0},
			{0,0,0,0},
		} 
	},
	{//id = 4
		{//state =0
			{1,0,0,0},
			{1,0,0,0},
			{1,1,0,0},
			{0,0,0,0},
		},
		{//state =1
			{1,1,1,0},
			{1,0,0,0},
			{0,0,0,0},
			{0,0,0,0},
		},
		{//state =2
			{1,1,0,0},
			{0,1,0,0},
			{0,1,0,0},
			{0,0,0,0},
		},
		{//state =3
			{0,0,0,0},
			{0,0,1,0},
			{1,1,1,0},
			{0,0,0,0},
		} 
	},
	{//id = 5
		{//state =0
			{1,1,0,0},
			{1,0,0,0},
			{1,0,0,0},
			{0,0,0,0},
		},
		{//state =1
			{1,1,1,0},
			{0,0,1,0},
			{0,0,0,0},
			{0,0,0,0},
		},
		{//state =2
			{0,0,1,0},
			{0,0,1,0},
			{0,1,1,0},
			{0,0,0,0},
		},
		{//state =3
			{0,0,0,0},
			{1,0,0,0},
			{1,1,1,0},
			{0,0,0,0},
		} 
	},
	{//id = 6
		{//state =0
			{1,0,0,0},
			{1,1,0,0},
			{1,0,0,0},
			{0,0,0,0},
		},
		{//state =1
			{1,1,1,0},
			{0,1,0,0},
			{0,0,0,0},
			{0,0,0,0},
		},
		{//state =2
			{0,0,1,0},
			{0,1,1,0},
			{0,0,1,0},
			{0,0,0,0},
		},
		{//state =3
			{0,0,0,0},
			{0,1,0,0},
			{1,1,1,0},
			{0,0,0,0},
		} 
	}
};

GameCell::GameCell()
{
	snd_award=new wxSound("IDW_Award",true);
	snd_start=new wxSound("IDW_Start",true);
	snd_lost =new wxSound("IDW_Lost",true);
	snd_move =new wxSound("IDW_Move",true);
	snd_fixup=new wxSound("IDW_Fixup",true);
	//-----------------------------------------
	srand((unsigned   int)wxGetUTCTime());   
	//-----------------------------------------
	for(int Y=0;Y<20;Y++)
	{
		for(int X=1;X<9;X++)
		{
			ShowWall[Y][X]=1;
			TrueWall[Y][X]=1;				
		}			
	}
	Brick_Y=0;
	Brick_X=3;
	Brick_ID=0;
	Brick_Type=0;
	Brick_Next_Type=rand()%4;
	Brick_Next_ID=rand()%7;

	sum_score=0;
}

int GameCell::GetCurrentScore()
{
	return sum_score*100;
}

wxBitmap GameCell::GetMsgBitmap()
{
	wxBitmap bmp(220,100);
	wxBitmap brick(wxBITMAP(IDB_Brick));
	wxMemoryDC memDC;
	memDC.SelectObject(bmp);
	memDC.SetBackground(*wxBLACK);
	memDC.SetTextBackground(*wxBLACK);
	memDC.SetTextForeground(*wxBLUE);
	//------------------------------------
	wxFont font(12, wxFONTFAMILY_SWISS, wxNORMAL, wxFONTWEIGHT_BOLD );
	memDC.SetFont(font);
	//-------------------------------------
	wxString info;
	wxDateTime now=wxDateTime::Now();
	info.Printf(wxT("時間[%02d:%02d:%02d]   分數[%06d]"),now.GetHour(),now.GetMinute(),now.GetSecond(),GetCurrentScore());
	memDC.DrawText(info,wxPoint(0,0));
	memDC.DrawText(wxT("空格鍵:暫停/開始"),wxPoint(0,20));
	memDC.DrawText(wxT("方向鍵:方向/變形"),wxPoint(0,40));
	memDC.DrawText(wxT("ESC 鍵:退出游戲"),wxPoint(0,60));
	memDC.DrawText(wxT("[Powered by ejoyc]"),wxPoint(0,80));	
	//-------------------------------------
	for(int Y=0;Y<4;Y++)
	{
		for(int X=0;X<4;X++)
		{
			if(Brick_Cell[Brick_Next_ID][Brick_Next_Type][Y][X]==1)
			{
				memDC.DrawBitmap(brick,20*X+140,20*Y+20);
			};
		}
	}
	memDC.SelectObject(wxNullBitmap);
	return bmp;
}

wxBitmap GameCell::GetCurrentWall()
{
	wxBitmap bmp(wxBITMAP(IDB_Wall));
	wxBitmap brick(wxBITMAP(IDB_Brick));
	wxMemoryDC memDC;
	memDC.SelectObject(bmp);
	//-------------------------------------
	for(int Y=0;Y<20;Y++)
	{
		for(int X=0;X<10;X++)
		{
			if(ShowWall[Y][X]==1)memDC.DrawBitmap(brick,20*X,20*Y,true);
			if(TrueWall[Y][X]==1)memDC.DrawBitmap(brick,20*X,20*Y,true);
		}
	}
	memDC.SelectObject(wxNullBitmap);
	return bmp;
}

void GameCell::InitWall()
{
	sum_score=0;
	for(int Y=0;Y<20;Y++)
	{
		for(int X=0;X<10;X++)
		{
			ShowWall[Y][X]=0;
			TrueWall[Y][X]=0;				
		}
	}
	PlayMusic(Game_Start);
	wxMilliSleep(500);
}

void GameCell::NewBrick()
{
	for(int Y=0;Y<20;Y++)
	{
		for(int X=0;X<10;X++)
		{
			if(ShowWall[Y][X]==1)
			{
				TrueWall[Y][X]=1;
			}
		}
	}	
	CleanupBrick();
	//------------------------------------------
	Brick_Y=0;
	Brick_X=3;
	Brick_ID=Brick_Next_ID;
	Brick_Type=Brick_Next_Type;
	Brick_Next_ID=rand()%7;
	Brick_Next_Type=rand()%4;
	if (GameOverTest())
	{
		for(int Y=0;Y<20;Y++)
		{
			for(int X=0;X<10;X++)
			{
				ShowWall[Y][X]=0;
				TrueWall[Y][X]=0;
			}
		}
		for(int Y=0;Y<20;Y++)
		{
			for(int X=1;X<9;X++)
			{
				ShowWall[Y][X]=1;
				TrueWall[Y][X]=1;				
			}			
		}
		PlayMusic(Game_Lost);	
	}	
	CleanupBrick();
}

void GameCell::UpdateWall()
{
	//--------------------------------------------
	//檢測Brick與Truewall存在重疊	
	for(int Y=0;Y<4;Y++)
	{
		for(int X=0;X<4;X++)
		{
			if(Brick_Cell[Brick_ID][Brick_Type][Y][X]==1&&TrueWall[Brick_Y+Y][Brick_X+X]==1)
			{
				NewBrick();
			}
		}
	}
	//--------------------------------------------
	//復位ShowWall
	for(int Y=0;Y<20;Y++)
	{
		for(int X=0;X<10;X++)
		{
			ShowWall[Y][X]=0;	
		}
	}
	//--------------------------------------------
	//映射Brick的矩陣坐標到ShowWall矩陣坐標
	for(int Y=0;Y<4;Y++)
	{
		for(int X=0;X<4;X++)
		{
			if(Brick_Cell[Brick_ID][Brick_Type][Y][X]==1)
			{
				ShowWall[Brick_Y+Y][Brick_X+X]=1;
			};
		}
	}
}

void GameCell::CleanupBrick()
{
	int old_score=sum_score;

	for(int Y=19;Y>-1;Y--)
	{
		for(int X=0;X<10;X++)
		{
			if (TrueWall[Y][X]==0)
			{
				X=11;
			}
		}
		if(X<11)
		{
			for(int X=0;X<10;X++)
			{
				TrueWall[Y][X]=0;
			}
			sum_score++;
		}
	}
	//--------------------------------------------------
	if(sum_score==old_score)return;
	PlayMusic(Game_Fixup);
	if(sum_score-old_score>=4)
	{
		sum_score+=10;
		PlayMusic(Game_Award);
		wxMilliSleep(2500);
	}
	if(sum_score==100)
	{
		for(int Y=0;Y<20;Y++)
		{
			for(int X=0;X<10;X++)
			{
				TrueWall[Y][X]=0;
			}
		}
		PlayMusic(Game_Award);
		wxMilliSleep(2500);
	}
	
	//--------------------------------------------------
	//--------------------------------------------------
	int tempWall[20][10];
	for(int Y=0;Y<20;Y++)
	{
		for(int X=0;X<10;X++)
		{
			tempWall[Y][X]=TrueWall[Y][X];
			TrueWall[Y][X]=0;
		}
	}
	//--------------------------
	for(int Y=19,tY=19;tY>-1;tY--)
	{
		for(int X=0;X<10;X++)
		{
			if (tempWall[tY][X]==1)
			{
				X=11;
			}
		}
		if(X>10)
		{
			for(int X=0;X<10;X++)
			{
				TrueWall[Y][X]=tempWall[tY][X];
			}
			Y--;
		}
	}
}

bool GameCell::GameOverTest()
{
	for(int Y=0;Y<4;Y++)
	{
		for(int X=0;X<4;X++)
		{
			if(Brick_Cell[Brick_ID][Brick_Type][Y][X]==1&&TrueWall[Y+Brick_Y][X+Brick_X]==1)
			{
				return true;
			};
		}
	}
	return false;
}

void GameCell::ShapeBrick()
{
	Brick_Type=(Brick_Type+1)%4;
	//--------------------------------------------
	//檢測Brick與Truewall存在重疊	
	for(int Y=0;Y<4;Y++)
	{
		for(int X=0;X<4;X++)
		{
			if(Brick_Cell[Brick_ID][Brick_Type][Y][X]==1&&TrueWall[Brick_Y+Y][Brick_X+X]==1)
			{
				Brick_Type=(Brick_Type+3)%4;
			}
		}
	}

	for(int Y=0;Y<4;Y++)
	{
		for(int X=0;X<4;X++)
		{
			if(Brick_Cell[Brick_ID][Brick_Type][Y][X]==1&&(Brick_X+X>9))
			{
				Brick_Type=(Brick_Type+3)%4;
				X=4,Y=4;
			}
		}
	}

	for(int Y=0;Y<4;Y++)
	{
		for(int X=0;X<4;X++)
		{
			if(Brick_Cell[Brick_ID][Brick_Type][Y][X]==1&&(Brick_X+X<0))
			{
				Brick_Type=(Brick_Type+3)%4;
				X=4,Y=4;
			}
		}
	}
	PlayMusic(Game_Move);
}
void GameCell::MoveToLeft()
{
	Brick_X--;
	if(Brick_X<4)
	{
		for(int Y=0;Y<4;Y++)
		{
			for(int X=0;X<4;X++)
			{
				if(Brick_Cell[Brick_ID][Brick_Type][Y][X]==1&&(Brick_X+X)<0)
				{
					Brick_X++;
					X=4,Y=4;
				};
			}
		}
	}
	for(int Y=0;Y<4;Y++)
	{
		for(int X=0;X<4;X++)
		{
			if(Brick_Cell[Brick_ID][Brick_Type][Y][X]==1&&TrueWall[Brick_Y+Y][Brick_X+X]==1)
			{
				Brick_X++;
				X=4,Y=4;
			}
		}
	}
}
void GameCell::MoveToRight()
{
	Brick_X++;
	if(Brick_X>5)
	{
		for(int X=3;X>-1;X--)
		{
			for(int Y=0;Y<4;Y++)
			{
				if(Brick_Cell[Brick_ID][Brick_Type][Y][X]==1&&(Brick_X+X)>9)
				{

					Brick_X=9-X;
					X=-2,Y=5;
				};
			}
		}		
	}
	for(int Y=0;Y<4;Y++)
	{
		for(int X=0;X<4;X++)
		{
			if(Brick_Cell[Brick_ID][Brick_Type][Y][X]==1&&TrueWall[Brick_Y+Y][Brick_X+X]==1)
			{
				Brick_X--;
				X=4,Y=4;
			}
		}
	}

}

void GameCell::MoveToDown()
{
	int tBrick_Y=(++Brick_Y);
	if(Brick_Y>15)
	{
		for(int Y=0;Y<4;Y++)
		{
			for(int X=0;X<4;X++)
			{
				if(Brick_Cell[Brick_ID][Brick_Type][Y][X]==1&&(tBrick_Y+Y)==20)
				{
					X=4,Y=4;
					NewBrick();
					return ;
				};
			}
		}
	}
	//--------------------------------------------
	//檢測Brick與Truewall存在重疊	
	for(int Y=0;Y<4;Y++)
	{
		for(int X=0;X<4;X++)
		{
			if(Brick_Cell[Brick_ID][Brick_Type][Y][X]==1&&TrueWall[tBrick_Y+Y][Brick_X+X]==1)
			{
				NewBrick();
				return;
			}
		}
	}
	PlayMusic(Game_Move);
}

void GameCell::PlayMusic(int music_type)//播放聲音
{
	switch (music_type)
	{
	case 0:
		if (snd_move->IsOk())
			snd_move->Play(wxSOUND_ASYNC);
		break;
	case 1:
		if (snd_fixup->IsOk())
			snd_fixup->Play(wxSOUND_ASYNC);
		break;
	case 2:
		if (snd_award->IsOk())
			snd_award->Play(wxSOUND_ASYNC);
		break;
	case 3:
		if (snd_start->IsOk())
			snd_start->Play(wxSOUND_ASYNC);
		break;
	case 4:
		if (snd_lost->IsOk())
			snd_lost->Play(wxSOUND_ASYNC);

	}
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
色猫猫国产区一区二在线视频| 久久蜜桃香蕉精品一区二区三区| 精品乱人伦小说| 亚洲欧美国产高清| 国产一区二区三区免费| 欧美三日本三级三级在线播放| 欧美激情一区二区三区不卡 | 91精品国产综合久久国产大片| 国产亚洲综合在线| 日本美女一区二区| 欧美熟乱第一页| 国产精品久久久久久亚洲伦| 国产很黄免费观看久久| 日韩欧美国产高清| 五月激情丁香一区二区三区| 色狠狠一区二区三区香蕉| 国产精品少妇自拍| 成人美女视频在线观看18| 欧美tickling挠脚心丨vk| 日韩电影网1区2区| 欧美日韩精品高清| 亚洲一区二区成人在线观看| 色悠悠久久综合| 亚洲三级免费观看| www.欧美色图| 亚洲欧洲av在线| av在线综合网| 亚洲视频在线一区二区| 99精品欧美一区| 亚洲欧美日韩国产另类专区| 99久久精品免费| 亚洲女人的天堂| 91福利在线免费观看| 亚洲乱码中文字幕| 色爱区综合激月婷婷| 亚洲影视在线播放| 欧美伦理电影网| 日本欧美一区二区三区| 欧美第一区第二区| 丰满白嫩尤物一区二区| 亚洲视频电影在线| 欧美日韩精品欧美日韩精品一 | 日精品一区二区三区| 欧美色倩网站大全免费| 日韩不卡免费视频| 久久精品在这里| av资源网一区| 亚洲午夜在线电影| 日韩欧美一级二级三级| 国产成人在线免费观看| 最新欧美精品一区二区三区| 欧美系列在线观看| 国产中文字幕精品| 国产精品伦一区| 欧美日韩一区三区四区| 久久99精品国产麻豆婷婷洗澡| 国产精品网站一区| 欧美日韩一区不卡| 经典三级一区二区| 国产精品久久99| 欧美一区二区女人| av一区二区久久| 日本亚洲免费观看| 国产精品美女久久久久久2018| 91电影在线观看| 激情深爱一区二区| 一区二区三区欧美日| 精品日韩一区二区三区免费视频| 成人av中文字幕| 日韩av成人高清| 中文字幕亚洲精品在线观看| 日韩午夜在线影院| 一本色道久久综合亚洲91| 六月丁香婷婷色狠狠久久| 亚洲免费电影在线| 久久久综合视频| 欧美美女一区二区三区| 99久久婷婷国产综合精品电影 | 国产亚洲女人久久久久毛片| 欧美主播一区二区三区美女| 国产呦精品一区二区三区网站| 一区二区三区四区在线| 国产午夜精品一区二区| 日韩欧美色电影| 欧美性大战久久久| 99视频精品免费视频| 国产乱淫av一区二区三区| 天天色 色综合| 亚洲另类色综合网站| 国产欧美一区二区精品久导航| 欧美二区在线观看| 国产日韩v精品一区二区| 精品久久人人做人人爽| 色综合久久99| 99久久精品一区二区| 国内久久精品视频| 免费成人深夜小野草| 婷婷亚洲久悠悠色悠在线播放| 亚洲天堂av一区| 国产精品国产三级国产普通话蜜臀| 日韩午夜在线影院| 欧美色图激情小说| 91久久国产最好的精华液| 99精品视频一区| av不卡免费在线观看| 成人一区二区三区视频| 国产精品自拍毛片| 国产精一区二区三区| 精品一区二区影视| 国内精品伊人久久久久影院对白| 99精品欧美一区二区三区小说| 国产一区高清在线| 国产一区二区三区四区五区入口| 精品中文av资源站在线观看| 精品一区二区三区免费观看| 狠狠色丁香婷婷综合久久片| 国内精品国产三级国产a久久| 美日韩黄色大片| 久久不见久久见免费视频7| 激情都市一区二区| 国产一区视频网站| 成人在线视频首页| 91在线观看免费视频| 91成人免费电影| 欧美性一区二区| 亚洲一区二区3| 麻豆极品一区二区三区| 亚洲v日本v欧美v久久精品| 亚洲在线视频一区| 视频一区二区中文字幕| 男女激情视频一区| 国产成人aaa| 99re这里都是精品| 欧美日韩一区二区三区在线看| 欧美日本精品一区二区三区| 一区二区三区四区高清精品免费观看 | 亚洲综合激情另类小说区| 一区精品在线播放| 久久99精品国产91久久来源| 国产精品无人区| 日韩欧美一二三四区| 日韩一区二区中文字幕| 精品日产卡一卡二卡麻豆| 日韩一区二区电影在线| 欧美电影免费提供在线观看| 26uuu亚洲| 中文av一区二区| 亚洲视频一区在线| 午夜精品久久久久久久99水蜜桃| 激情久久久久久久久久久久久久久久| 一区二区三区精品久久久| 日本欧美在线看| 91丨九色丨黑人外教| 欧美日韩国产一级| 久久综合久久综合亚洲| 伊人色综合久久天天| 免费在线观看成人| 99r国产精品| 久久久久97国产精华液好用吗| 亚洲视频中文字幕| 国产精品一品视频| 欧美日韩精品高清| 国产精品免费视频网站| 久久国产精品免费| 在线视频欧美精品| 亚洲成人激情自拍| 成人黄色小视频| 337p亚洲精品色噜噜| 日韩久久一区二区| 欧美大片顶级少妇| 午夜精品福利视频网站| 蜜桃视频一区二区三区在线观看 | 欧美一区二区三区四区在线观看| 欧美电影免费观看高清完整版在 | 欧美大胆一级视频| 亚洲va欧美va人人爽| wwwwxxxxx欧美| 日本成人在线不卡视频| 欧美一区二区三区四区五区| 日本中文在线一区| 蜜桃在线一区二区三区| 国产一区二区三区在线观看免费 | 日本午夜一本久久久综合| 99久久精品99国产精品| 久久你懂得1024| 美腿丝袜亚洲综合| 欧美日本国产视频| 亚洲一卡二卡三卡四卡五卡| 成人精品在线视频观看| 国产三区在线成人av| 国产一区二区三区不卡在线观看| 日韩一区二区中文字幕| 日韩国产欧美在线观看| 欧美精品高清视频| 一级做a爱片久久| 在线观看亚洲精品| 亚洲一二三区在线观看| 色噜噜夜夜夜综合网| 亚洲精品中文在线| 色婷婷久久久久swag精品 |