DXフレームワーク　リファレンス・マニュアル 0.01 DXフレームワークのリファレンスです。詳細は公式wiki

- メインページ
- 関連ページ
- クラス
- ファイル

- ファイル一覧

Object.h
1 #pragma once
2 #include "DXFrameWork.h"
3
4 namespace DXFW
5 {
7 enum class Belong
8 {
9 Ally,
10 EnemyF,
11 EnemyG,
12 Item,
13 Block,
14 Etc
15 };
16
18 class Object : public Model
19 {
20 friend class Layer;
21
22 protected:
24 virtual bool RemoveCheck(Rect* area)
25 {
26 if(
27 timer == this->lifeTime ||
28 (isOutCheck && !figure->Hit( area ) )
29 )
30 {
31 this->isRemove = true;
32 }
33
34 if (isRemove) Remove();
35
36 return this->isRemove;
37 }
38
39 virtual void Attack(Object *hit )
40 {
41 hit->Damaged( power , attribute);
42 }
43
44 public:
45 bool isRemove;
46 bool isOutCheck;
47 double power;
48 int attribute;
49 int timer;
50 int lifeTime;
51 const Belong belong;
52
53 Object( Figure *figure , Sprite *sprite , double power = 0 , Belong belong = Belong::Etc):
54 Model( figure , sprite ),
55 isOutCheck(true),
56 isRemove(false),
57 timer(0),
58 lifeTime(-1),
59 power(power),
60 belong(belong)
61 {}
62
63 virtual ~Object(){}
64
65 virtual void Update()
66 {
67 this->timer++;
68 AnimeUpdate();
69 this->Act();
70 }
71
72 int GetTimer()
73 {
74 return this->timer;
75 }
76 void SetTimer(int timer)
77 {
78 this->timer = timer;
79 }
80
81 bool GetRemoveFlag()
82 {
83 return isRemove;
84 }
85
87 virtual void Act()
88 {
89
90 }
91
93 virtual void Remove()
94 {
95
96 }
97
99 virtual void React()
100 {
101
102 }
103
105 virtual void Damaged(double damage, int attribute)
106 {
107
108 }
109
111 void 前進(double 速度)
112 {
113 MovePolar(速度, GetAngle());
114 }
115
116 void 直進(double 速度 , double 角度)
117 {
118 MovePolar(速度, 角度);
119 }
120
121 void 跳ね返り(double 速度, double &角度, Rect &移動範囲)
122 {
123 const double PAI = 3.1415926535897931;
124
125 //範囲外にいる
126 if ( GetX() < 移動範囲.GetLeft())
127 {
128 if (角度 > PAI / 2 && 角度 < PAI * 3 / 2)
129 {
130 角度 = -PAI - 角度;
131 }
132 }
133
134 if ( GetX() > 移動範囲.GetRight())
135 {
136 if (角度 < PAI / 2 || 角度 > PAI * 3 / 2)
137 {
138 角度 = PAI - 角度;
139 }
140 }
141 else if (GetY() < 移動範囲.GetTop())
142 {
143 if (角度 > PAI)
144 {
145 角度 = PAI * 2 - 角度;
146 }
147 }
148 else if (GetY() > 移動範囲.GetBottom())
149 {
150 if (角度 < PAI)
151 {
152 角度 = -角度;
153 }
154 }
155
156 if (角度 < 0) 角度 += PAI * 2;
157 if (角度 > PAI * 2) 角度 -= PAI * 2;
158
159 MovePolar(速度, 角度);
160 }
161
162 bool 指定移動(double 速度, double 目標X, double 目標Y)
163 {
164 const double lx = 目標X - GetX();
165 const double ly = 目標Y - GetY();
166
167 if (lx * lx + ly * ly <= 速度 * 速度 )
168 {
169 SetPos(目標X, 目標Y);
170 return true;
171 }
172 else{
173 const double angle = atan2(ly, lx);
174 MovePolar(速度, angle);
175 return false;
176 }
177 }
178
179 struct 円軌道状態
180 {
181 円軌道状態( double 初角 ):
182 角度(初角)
183 {}
184
185 double 角度;
186 double 前位置X;
187 double 前位置Y;
188 bool 初期化フラグ = false;
189 };
190
191 void 円軌道(double 角速度 , 円軌道状態 &状態, double 半径X, double 半径Y)
192 {
193 if ( !状態.初期化フラグ )
194 {
195 状態.前位置X = cos(状態.角度) * 半径X;
196 状態.前位置Y = sin(状態.角度) * 半径Y;
197 }
198
199 状態.角度 += 角速度;
200
201 const double nextX = cos(状態.角度) * 半径X;
202 const double nextY = sin(状態.角度) * 半径Y;
203
204 Move(nextX - 状態.前位置X, nextY - 状態.前位置Y);
205
206 状態.前位置X = nextX;
207 状態.前位置Y = nextY;
208 }
209
210 struct 振動状態
211 {
212 double 移動量X = 0;
213 double 移動量Y = 0;
214 };
215 void 振動(振動状態 &状態 , double X振幅 , double Y振幅)
216 {
217 状態.移動量X = Rand::Get(-X振幅, X振幅) - 状態.移動量X;
218 状態.移動量Y = Rand::Get(-Y振幅, Y振幅) - 状態.移動量Y;
219 Move( 状態.移動量X , 状態.移動量Y );
220 }
221
222 };
223 }
DXFW::Object::前進
void 前進(double 速度)
説明
Definition: Object.h:111
DXFW::Object::円軌道状態
Definition: Object.h:179
DXFW::Object::Act
virtual void Act()
説明
Definition: Object.h:87
DXFW::Layer
Definition: Layer.h:6
DXFW::Object::振動状態
Definition: Object.h:210
DXFW::Object::React
virtual void React()
説明
Definition: Object.h:99
DXFW::Belong
Belong
説明
Definition: Object.h:7
DXFW::Model
クラス説明
Definition: Model.h:25
DXFW::Object::RemoveCheck
virtual bool RemoveCheck(Rect *area)
説明
Definition: Object.h:24
DXFW::Object::Damaged
virtual void Damaged(double damage, int attribute)
説明
Definition: Object.h:105
DXFW::Object::Remove
virtual void Remove()
説明
Definition: Object.h:93
DXFW::Rect
説明
Definition: Figure.h:768
DXFW::Object
説明
Definition: Object.h:18