Luxophia

Форк
0
/
LUX.Map.D1.pas 
256 строк · 8.3 Кб
1
unit LUX.Map.D1;
2

3
interface //#################################################################### ■
4

5
type //$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$【型】
6

7
     //$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$【レコード】
8

9
     //$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$【クラス】
10

11
     //%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% TArray1D<T_Item>
12

13
     TArray1D<T_Item> = class
14
     private
15
       _AllX :Integer;
16
       ///// メソッド
17
       procedure MakeArray;
18
       function XtoI( const X_:Integer ) :Integer; inline;
19
     protected
20
       _Item    :array of T_Item;
21
       _CountX  :Integer;
22
       _MarginX :Integer;
23
       ///// アクセス
24
       function GetItem( const X_:Integer ) :T_Item; virtual;
25
       procedure SetItem( const X_:Integer; const Item_:T_Item ); virtual;
26
       procedure SetCountX( const CountX_:Integer ); virtual;
27
       procedure SetMarginX( const MarginX_:Integer ); virtual;
28
     public
29
       constructor Create; overload;
30
       constructor Create( const CountX_:Integer ); overload;
31
       constructor Create( const CountX_,MarginX_:Integer ); overload;
32
       procedure AfterConstruction; override;
33
       destructor Destroy; override;
34
       ///// プロパティ
35
       property Item[ const X_:Integer ] :T_Item  read GetItem  write SetItem;    default;
36
       property Count                    :Integer read _CountX  write SetCountX;
37
       property CountX                   :Integer read _CountX  write SetCountX;
38
       property Margin                   :Integer read _MarginX write SetMarginX;
39
       property MarginX                  :Integer read _MarginX write SetMarginX;
40
       ///// メソッド
41
       class procedure Swap( var Array0_,Array1_:TArray1D<T_Item> ); static;
42
       procedure MakeEdgeLoop;
43
     end;
44

45
     //%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% TBricArray1D<T_Item>
46

47
     TBricArray1D<T_Item> = class( TArray1D<T_Item> )
48
     private
49
     protected
50
       ///// アクセス
51
       function GetGridX :Integer;
52
       procedure SetGridX( const GridX_:Integer );
53
     public
54
       ///// プロパティ
55
       property Bric[ const X_:Integer ] :T_Item  read GetItem  write SetItem;   default;
56
       property BricN                    :Integer read _CountX  write SetCountX;
57
       property BricX                    :Integer read _CountX  write SetCountX;
58
       property GridN                    :Integer read GetGridX write SetGridX;
59
       property GridX                    :Integer read GetGridX write SetGridX;
60
     end;
61

62
     //%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% TGridArray1D<T_Item>
63

64
     TGridArray1D<T_Item> = class( TArray1D<T_Item> )
65
     private
66
     protected
67
       ///// アクセス
68
       function GetBricX :Integer;
69
       procedure SetBricX( const BricX_:Integer );
70
     public
71
       constructor Create; overload;
72
       constructor Create( const BricX_:Integer ); overload;
73
       constructor Create( const BricX_,MarginX_:Integer ); overload;
74
       destructor Destroy; override;
75
       ///// プロパティ
76
       property Grid[ const X_:Integer ] :T_Item  read GetItem  write SetItem;   default;
77
       property GridN                    :Integer read _CountX  write SetCountX;
78
       property GridX                    :Integer read _CountX  write SetCountX;
79
       property BricN                    :Integer read GetBricX write SetBricX;
80
       property BricX                    :Integer read GetBricX write SetBricX;
81
     end;
82

83
//const //$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$【定数】
84

85
//var //$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$【変数】
86

87
//$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$【ルーチン】
88

89
implementation //############################################################### ■
90

91
//$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$【レコード】
92

93
//$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$【クラス】
94

95
//%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% TArray1D<T_Item>
96

97
//&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& private
98

99
/////////////////////////////////////////////////////////////////////// メソッド
100

101
procedure TArray1D<T_Item>.MakeArray;
102
begin
103
     _AllX := _MarginX + _CountX + _MarginX;
104

105
     SetLength( _Item, _AllX );
106
end;
107

108
function TArray1D<T_Item>.XtoI( const X_:Integer ) :Integer;
109
begin
110
     Result := _MarginX + X_;
111
end;
112

113
//&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& protected
114

115
/////////////////////////////////////////////////////////////////////// アクセス
116

117
procedure TArray1D<T_Item>.SetCountX( const CountX_:Integer );
118
begin
119
     _CountX := CountX_;  MakeArray;
120
end;
121

122
procedure TArray1D<T_Item>.SetMarginX( const MarginX_:Integer );
123
begin
124
     _MarginX := MarginX_;  MakeArray;
125
end;
126

127
function TArray1D<T_Item>.GetItem( const X_:Integer ) :T_Item;
128
begin
129
     Result := _Item[ XtoI( X_ ) ];
130
end;
131

132
procedure TArray1D<T_Item>.SetItem( const X_:Integer; const Item_:T_Item );
133
begin
134
     _Item[ XtoI( X_ ) ] := Item_;
135
end;
136

137
//&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& public
138

139
constructor TArray1D<T_Item>.Create;
140
begin
141
     Create( 0, 0 );
142
end;
143

144
constructor TArray1D<T_Item>.Create( const CountX_:Integer );
145
begin
146
     Create( CountX_, 0 );
147
end;
148

149
constructor TArray1D<T_Item>.Create( const CountX_,MarginX_:Integer );
150
begin
151
     inherited Create;
152

153
     _CountX  := CountX_;
154
     _MarginX := MarginX_;
155
end;
156

157
procedure TArray1D<T_Item>.AfterConstruction;
158
begin
159
     MakeArray;
160
end;
161

162
destructor TArray1D<T_Item>.Destroy;
163
begin
164

165
     inherited;
166
end;
167

168
/////////////////////////////////////////////////////////////////////// メソッド
169

170
class procedure TArray1D<T_Item>.Swap( var Array0_,Array1_:TArray1D<T_Item> );
171
var
172
   A :TArray1D<T_Item>;
173
begin
174
     A := Array0_;  Array0_ := Array1_;  Array1_ := A;
175
end;
176

177
procedure TArray1D<T_Item>.MakeEdgeLoop;
178
var
179
   X :Integer;
180
begin
181
     for X := -_MarginX to                 -1 do Item[ X ] := Item[ X + _CountX ];
182
     for X :=  _CountX  to _CountX+_MarginX-1 do Item[ X ] := Item[ X - _CountX ];
183
end;
184

185
//%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% TBricArray1D<T_Item>
186

187
//&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& private
188

189
//&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& protected
190

191
/////////////////////////////////////////////////////////////////////// アクセス
192

193
function TBricArray1D<T_Item>.GetGridX :Integer;
194
begin
195
     Result := BricX + 1;
196
end;
197

198
procedure TBricArray1D<T_Item>.SetGridX( const GridX_:Integer );
199
begin
200
     BricX := GridX_ - 1;
201
end;
202

203
//&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& public
204

205
//%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% TGridArray1D<T_Item>
206

207
//&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& private
208

209
//&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& protected
210

211
/////////////////////////////////////////////////////////////////////// アクセス
212

213
function TGridArray1D<T_Item>.GetBricX :Integer;
214
begin
215
     Result := _CountX - 1;
216
end;
217

218
procedure TGridArray1D<T_Item>.SetBricX( const BricX_:Integer );
219
begin
220
     _CountX  := BricX_ + 1;  MakeArray;
221
end;
222

223
//&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& public
224

225
constructor TGridArray1D<T_Item>.Create;
226
begin
227
     Create( 0, 0 );
228
end;
229

230
constructor TGridArray1D<T_Item>.Create( const BricX_:Integer );
231
begin
232
     Create( BricX_, 0 );
233
end;
234

235
constructor TGridArray1D<T_Item>.Create( const BricX_,MarginX_:Integer );
236
begin
237
     inherited;
238

239
     _CountX  := BricX_ + 1;
240
end;
241

242
destructor TGridArray1D<T_Item>.Destroy;
243
begin
244

245
     inherited;
246
end;
247

248
//$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$【ルーチン】
249

250
//############################################################################## □
251

252
initialization //$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ 初期化
253

254
finalization //$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ 最終化
255

256
end. //######################################################################### ■
257

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.