SDXFrameWork  0.10
SDXFrameWork
 All Classes Namespaces Functions Variables Enumerations Enumerator Pages
Public Member Functions | Public Attributes | Protected Attributes | List of all members
SDX::Model< TShape, TSprite > Class Template Reference

Modelの基本クラス. More...

#include <Model.h>

Inherits SDX::IModel.

Public Member Functions

 Model (TShape &&図形と位置, TSprite &&描画方法)
 コンストラクタ. More...
 
bool GetRemoveFlag () const
 消滅フラグの取得. More...
 
virtual void Update ()
 更新処理を行う. More...
 
void SetShadowSize (double 影の表示倍率)
 影の大きさを設定. More...
 
virtual void Draw () const
 描画する. More...
 
void DrawShadow (double X座標ずれ, double Y座標ずれ)
 影を描画する. More...
 
void SetPos (double X座標, double Y座標) override
 指定座標に移動. More...
 
void MultiZoom (double X倍率, double Y倍率) override
 縦横別で拡大率を掛ける. More...
 
void MultiZoom (double 倍率)
 拡大率を掛け算する. More...
 
void Move (double X移動量, double Y移動量) override
 相対座標で移動. More...
 
void Rotate (double 回転角度) override
 回転させる. More...
 
double GetAngle () const override
 角度を取得する. More...
 
double GetX () const override
 X座標を取得. More...
 
double GetY () const override
 Y座標を取得. More...
 
double GetW () const override
 X座標を取得. More...
 
double GetH () const override
 Y座標を取得. More...
 
void SetColor (const Color &描画色)
 色をまとめて変更する、透明度も含む. More...
 
double GetZoomX () const
 横方向の拡大率を取得. More...
 
double GetZoomY () const
 縦方向の拡大率を取得. More...
 
bool Hit (const IModel *判定を行うModel) const
 Modelとの衝突判定. More...
 
bool Hit (const IShape *判定を行うShape) const
 Shapeとの衝突判定. More...
 
void SetZoom (double X拡大率, double Y拡大率)
 拡大率を設定. More...
 
virtual void SetZoom (double X拡大率, double Y拡大率)
 拡大率を設定. More...
 
void MoveA (double 距離, double 方向)
 極座標で移動. More...
 
void MoveA (double 距離, double 方向)
 極座標で移動. More...
 
void MoveF (double 距離)
 前方に移動. More...
 
void SetAngle (double 指定角度)
 角度を指定する. More...
 
virtual void SetAngle (double 指定角度)
 角度を指定する. More...
 
double GetDirect (IPosition *比較対象) const
 対象との角度を取得. More...
 
double GetDirect (IPosition *比較対象) const
 対象との角度を取得. More...
 
double GetDistance (IPosition *比較対象) const
 対象との相対座標を取得. More...
 
double GetDistance (IPosition *比較対象) const
 対象との相対座標を取得. More...
 
double CompareAngle (double 角度)
 角度の差を計算する
 

Public Attributes

TShape shape
 対応Shape
 
TSprite sprite
 対応Sprite
 
IShapeiShape
 対応Shape
 
ISpriteiSprite
 対応Sprite
 

Protected Attributes

bool isRemove = false
 消滅フラグ
 
double zoomX = 1
 図形の拡大率
 
double zoomY = 1
 図形の拡大率
 

Detailed Description

template<class TShape, class TSprite>
class SDX::Model< TShape, TSprite >

Modelの基本クラス.

//Copyright © 2014 SDXFramework
//[License]GNU Affero General Public License, version 3
//[Contact]http://sourceforge.jp/projects/dxframework/
//初期化を行い何かキーを押すと終了する
bool SampleModel()
{
using namespace SDX;
System::Initialise("sample", 640, 480);
Image くま("data/pipo-enemy037.png");
Font フォント(SystemFont::Gothic, 10);
Film がいこつ("data/hone.png", 12, 3, 4,12);
ImagePack 枠画像("data/pipo-WindowBase001.png",9,3,3);
BmpFrame 枠(&枠画像);
がいこつ.SetType(FilmType::Reverse);
//各種スプライトと組み合わせたモデル
Model<Point, SpImage> modelA({ 100, 400 }, &くま);
Model<Circle, SpAnime> modelB({ 200, 300 ,20}, &がいこつ);
Model<Rect, SpFont> modelC({ 320, 240 , 100, 10}, { &フォント ,"Hello World"});
Model<Rect, SpFrame> modelD({ 400, 100, 100, 100 }, &枠);
//各種モーション
MOTION::Bound<SPEED::Liner> motionA( 5 , { 0, 0, 640, 480 } , PAI/4);
MOTION::Bound<SPEED::Liner> motionB( 10 , { 0, 0, 640, 480 }, PAI/3);
MOTION::Orbit<SPEED::Liner> motionC(0.05, 200, 100, PAI / 4);
MOTION::ToPoint<SPEED::Liner> motionD(5, { 320, 240 });
IModel *modelS[4] = {&modelA,&modelB,&modelC,&modelD};
MOTION::IMotion *motionS[4] = { &motionA, &motionB, &motionC, &motionD};
while (System::Update())
{
for (int a = 0; a < 4; ++a)
{
modelS[a]->iSprite.Update();//SpAnimeは更新が必要
motionS[a]->Update( modelS[a] );//modelを移動
modelS[a]->Draw();//modelを描画
//衝突中のモデルを回転させる
for (int b = a+1 ; b < 4; ++b)
{
if (modelS[a]->Hit(modelS[b]))
{
modelS[a]->Rotate(0.1);
modelS[b]->Rotate(0.1);
break;
}
}
}
if (Input::key.Return.on){ break;}//Enterで終了
}
return true;
}

Constructor & Destructor Documentation

template<class TShape, class TSprite>
SDX::Model< TShape, TSprite >::Model ( TShape &&  図形と位置,
TSprite &&  描画方法 
)

コンストラクタ.

Member Function Documentation

bool SDX::IModel::GetRemoveFlag ( ) const
inherited

消滅フラグの取得.

virtual void SDX::IModel::Update ( )
virtualinherited

更新処理を行う.

void SDX::IModel::SetShadowSize ( double  影の表示倍率)
inherited

影の大きさを設定.

virtual void SDX::IModel::Draw ( ) const
virtualinherited

描画する.

void SDX::IModel::DrawShadow ( double  X座標ずれ,
double  Y座標ずれ 
)
inherited

影を描画する.

void SDX::IModel::SetPos ( double  X座標,
double  Y座標 
)
overridevirtualinherited

指定座標に移動.

Implements SDX::IPosition.

void SDX::IModel::MultiZoom ( double  X倍率,
double  Y倍率 
)
overridevirtualinherited

縦横別で拡大率を掛ける.

Implements SDX::IPosition.

void SDX::IPosition::MultiZoom ( double  倍率)
inherited

拡大率を掛け算する.

void SDX::IModel::Move ( double  X移動量,
double  Y移動量 
)
overridevirtualinherited

相対座標で移動.

Implements SDX::IPosition.

void SDX::IModel::Rotate ( double  回転角度)
overridevirtualinherited

回転させる.

Implements SDX::IPosition.

double SDX::IModel::GetAngle ( ) const
overridevirtualinherited

角度を取得する.

Reimplemented from SDX::IPosition.

double SDX::IModel::GetX ( ) const
overridevirtualinherited

X座標を取得.

Implements SDX::IPosition.

double SDX::IModel::GetY ( ) const
overridevirtualinherited

Y座標を取得.

Implements SDX::IPosition.

double SDX::IModel::GetW ( ) const
overridevirtualinherited

X座標を取得.

Implements SDX::IPosition.

double SDX::IModel::GetH ( ) const
overridevirtualinherited

Y座標を取得.

Implements SDX::IPosition.

void SDX::IModel::SetColor ( const Color 描画色)
inherited

色をまとめて変更する、透明度も含む.

double SDX::IModel::GetZoomX ( ) const
inherited

横方向の拡大率を取得.

double SDX::IModel::GetZoomY ( ) const
inherited

縦方向の拡大率を取得.

bool SDX::IModel::Hit ( const IModel 判定を行うModel) const
inherited

Modelとの衝突判定.

bool SDX::IModel::Hit ( const IShape 判定を行うShape) const
inherited

Shapeとの衝突判定.

void SDX::IPosition::SetZoom ( double  X拡大率,
double  Y拡大率 
)
inherited

拡大率を設定.

virtual void SDX::IPosition::SetZoom ( double  X拡大率,
double  Y拡大率 
)
virtualinherited

拡大率を設定.

void SDX::IPosition::MoveA ( double  距離,
double  方向 
)
inherited

極座標で移動.

void SDX::IPosition::MoveA ( double  距離,
double  方向 
)
inherited

極座標で移動.

void SDX::IPosition::MoveF ( double  距離)
inherited

前方に移動.

void SDX::IPosition::SetAngle ( double  指定角度)
inherited

角度を指定する.

virtual void SDX::IPosition::SetAngle ( double  指定角度)
virtualinherited

角度を指定する.

double SDX::IPosition::GetDirect ( IPosition 比較対象) const
inherited

対象との角度を取得.

double SDX::IPosition::GetDirect ( IPosition 比較対象) const
inherited

対象との角度を取得.

double SDX::IPosition::GetDistance ( IPosition 比較対象) const
inherited

対象との相対座標を取得.

double SDX::IPosition::GetDistance ( IPosition 比較対象) const
inherited

対象との相対座標を取得.