コード例 #1
0
ファイル: atan.c プロジェクト: AustenConrad/plan-9
double
atan(double arg)
{

	if(arg > 0)
		return satan(arg);
	return -satan(-arg);
}
コード例 #2
0
ファイル: CGameEngine.cpp プロジェクト: isra17/toursatan
//Notifie le jeu qu'un Hero est mort
void CGameEngine::heroDied(boost::shared_ptr<CHero> deadHero)
{
	deadHero->setActive(false);

	bool areAllPlayerDead = true;
	for(std::map<Int8, CPlayer>::const_iterator i=m_players.begin(); i != m_players.end(); i++)
		if(i->second.getEntity()->isActive())
			areAllPlayerDead = false;

	if(areAllPlayerDead)
	{
		CLog::debug("Partie perdu");
		pause();
		boost::shared_ptr<CGameLostState> loseState(new CGameLostState());
		pushState(loseState);
	}
	else
	{
		boost::shared_ptr<IModel> satanModel = getResEngine()->getModel("Satan");
		satanModel->setAnim("Fly");
		boost::shared_ptr<CSatanModel> model(new CSatanModel(deadHero->getModel(),satanModel));
		boost::shared_ptr<IEntity> satan(new CSatan(200,deadHero,model));
		satan->setDim(sf::Vector2f(140,200));
		addEntity(satan);
	}
}
コード例 #3
0
ファイル: extractnumber.cpp プロジェクト: plonk/haisin20f
// 数字1字を認識する
int ExtractNumber::number(cv::Mat character)
{
	// 輪郭抽出で分別する
	// 12357, 0469, 8
	/// @see http://opencv.jp/cookbook/opencv_img.html#id54
	std::vector<std::vector<cv::Point> > contours; // 輪郭情報
	std::vector<cv::Vec4i> hierarchy; // 階層構造
	// 2値画像,輪郭(出力),階層構造(出力),輪郭抽出モード,輪郭の近似手法
	cv::findContours(character, contours, hierarchy, cv::RETR_TREE, cv::CHAIN_APPROX_SIMPLE);

	// 8, 02469, 12357
	// 輪郭数で分別する
	if ( 3 == hierarchy.size())
	{
		return 8;
	}
	else if( 2 == hierarchy.size() )
	{
		// 6, 049
		// 第2輪郭始点が上部3分の1にないとき6
		if ( contours[1][0].y > (character.rows/3) )
		{
			return 6;
		}
		else
		{
			// 9, 04
			// 中央部の縦の輝点パターン
			// 9: 10101
			// 0,4: 101
			if( 3 == rowBrightPattern(character, character.cols/2) )
			{
				return 9;
			}else
			{
				// 4, 0
				// 右端の上から3分の1に輝点があるとき0
				int u = utan(character);
				if ( 0 < character.data[character.rows/3*character.cols+u] )
				{
					return 0;
				}else
				{
					return 4;
				}
			}
		}
	}
	else if ( 1 == hierarchy.size() )
	{
		// 17, 235
		// 左端の輝点パターン
		// 17: 1
		// 235: 101
		int s = satan(character);
		switch (rowBrightPattern(character, s) )
		{
		case 1:
			// 1, 7
			// 中央部の縦の輝点パターン
			// 1: 1
			// 7: 101
			switch (rowBrightPattern(character, character.cols/2))
			{
			case 1:
				return 1;
			case 2:
				return 7;
			default:
				return 0;
			}
		case 2:
			// 5, 23
			// 右端の上から3分の1に暗点があるとき5
			int u = utan(character);
			if ( 0 == character.data[character.rows/3*character.cols+u] )
			{
				return 5;
			}
			// 2, 3
			// 右端の上から3分の2に暗点があるとき2
			if ( 0 == character.data[character.rows/3*2*character.cols+u] )
			{
				return 2;
			}
			return 3;
		}
	}

	return 0;
}