SDXFrameWork 0.12 SDXFrameWork

- Main Page
- Related Pages
- Classes

- Class List
- Class Index
- Class Hierarchy
- Class Members

All Classes Namespaces Functions Variables Enumerations Enumerator Pages
Public Member Functions | Public 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...
Public Member Functions inherited from SDX::IModel
| IModel (IShape &図形, ISprite &描画方法)
| コンストラクタ. 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 | 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...
Public Member Functions inherited from SDX::IPosition
void | SetZoom (double X拡大率, double Y拡大率)
| 拡大率を設定. More...
void | MultiZoom (double 倍率)
| 拡大率を掛け算する. More...
void | MoveA (double 距離, double 方向)
| 極座標で移動. More...
void | MoveF (double 距離)
| 前方に移動. More...
void | SetAngle (double 指定角度)
| 角度を指定する. More...
double | GetDirect (IPosition *比較対象) const
| 対象との角度を取得. More...
double | GetDistance (IPosition *比較対象) const
| 対象との相対座標を取得. More...
virtual void | SetZoom (double X拡大率, double Y拡大率)
| 拡大率を設定. More...
void | MultiZoom (double 倍率)
| 拡大率を掛け算する. More...
void | MoveA (double 距離, double 方向)
| 極座標で移動. More...
virtual void | SetAngle (double 指定角度)
| 角度を指定する. More...
double | GetDirect (IPosition *比較対象) const
| 対象との角度を取得. More...
double | GetDistance (IPosition *比較対象) const
| 対象との相対座標を取得. More...
double | CompareAngle (double 角度)
| 角度の差を計算する

## Public Attributes
TShape | shape
| 対応Shape
TSprite | sprite
| 対応Sprite
Public Attributes inherited from SDX::IModel
IShape & | iShape
| 対応Shape
ISprite & | iSprite
| 対応Sprite

## Additional Inherited Members
Protected Attributes inherited from SDX::IModel
bool | isRemove = false
| 消滅フラグ
Protected Attributes inherited from SDX::IPosition
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で終了
}
System::End();
return true;
}

## Constructor & Destructor Documentation

template<class TShape, class TSprite>

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

コンストラクタ.