さて、先に進む前に、
ちょいと整理しましょう。
今、初期化処理がこの上なくうんこです。
MapBlocksは、初期ブロックは飾りだったので、
もう消しちゃいましょう。
Create以外の部分を消します。
MapBlocks:=TMapBlocks.Create;
MapBlocks.Blocks[19,2]:=True;
MapBlocks.Blocks[19,3]:=True;
MapBlocks.Blocks[19,4]:=True;
MapBlocks.Blocks[19,5]:=True;
MapBlocks.Blocks[19,6]:=True;
MapBlocks.Blocks[18,3]:=True;
MapBlocks.Blocks[18,4]:=True;
MapBlocks.Blocks[18,5]:=True;
MapBlocks.Blocks[17,4]:=True;
↓
MapBlocks:=TMapBlocks.Create;
で、ピースですが、
これはこれ以上命令数を減らすのは無理なので、
「初期化手続き」 てなもんを作ってみましょう。
宣言部に戻り、TPieceの宣言を編集します。
TPiece = Class(TObject)
private
public
(略)
death:Boolean;
procedure Init(_x,_y,dm:Integer;mb:TMapBlocks);
procedure Draw;
(略)
end;
さて、引数の意味を見て見ましょう。
型宣言は、
_xと_yとdmがinteger mbがTMapBlocks となってます。
(同じ型はコンマで列挙、違う型との区切りはセミコロンですね
_x 初期化して代入するx座標です。
引数の名前を x にすると、ダブってしまって後で困るので _をつけてみました。
_y 初期化して代入するy座標です。
_をつけたのは上と同じ理由。
dm d_max の略です。初期化してd_maxに入れる値です。
mb MapBlocksの略です。 初期化する時にMapBlocksに入れる値です。
じゃぁ実装しましょう。
procedure TPiece.Init(_x,_y,dm:Integer;mb:TMapBlocks);
begin
x:=_x;
y:=_y;
d_counter:=0;
d_max:=dm;
MapBlocks:=mb;
death:=False;
end;
定義部で宣言した引数をそのまま移すだけです。
d_counterとdeathは初期値が、0,Falseとそれぞれ決まっているので、
直接代入して初期化です。
さっそく使ってみます。
Form.onCreateの初期化部を編集
procedure TForm1.FormCreate(Sender: TObject);
begin
(略)
Piece:=TPiece.Create;
Piece.x:=5;
Piece.y:=-3;
Piece.d_counter:=0;
Piece.d_max:=30;//30フレーム、つまり1秒
Piece.shape[0,1]:=True;
Piece.shape[1,1]:=True;
Piece.shape[2,1]:=True;
Piece.shape[2,2]:=True;
Piece.MapBlocks:=MapBlocks;
Piece.death:=False;
(略)
end;
↓
procedure TForm1.FormCreate(Sender: TObject);
begin
(略)
Piece:=TPiece.Create;
Piece.x:=5;
Piece.y:=-3;
Piece.d_counter:=0;
Piece.d_max:=30;//30フレーム、つまり1秒
Piece.shape[0,1]:=True;
Piece.shape[1,1]:=True;
Piece.shape[2,1]:=True;
Piece.shape[2,2]:=True;
Piece.MapBlocks:=MapBlocks;
Piece.death:=False;
end;
↓
procedure TForm1.FormCreate(Sender: TObject);
begin
(略)
Piece:=TPiece.Create;
Piece.Init(5,-3,30,MapBlocks);
Piece.shape[0,1]:=True;
Piece.shape[1,1]:=True;
Piece.shape[2,1]:=True;
Piece.shape[2,2]:=True;
end;
少しマシになりましたね。
形データの管理については、もうすこし後で整理します。
コンテンツ
最新の12件
2023-06-12
2021-02-15
2013-06-19
2012-07-14
2012-02-04
2012-01-06
2011-03-31
2010-08-26
2010-03-15
2009-10-21
2009-02-12
2008-11-18
メニュー編集
- counter: 980
- today: 1
- yesterday: 0
- online: 1