コラム / テトリスぽいもの / 34



ブロックが置かれたときに、
さっきの処理を呼び出せば、
揃ったら削除
が動くはずです。
procedure TForm1.Timer1Timer(Sender: TObject);
begin
       (略)
       if Piece.death then begin
           FreeAndNil(Piece);
           if not MapBlocks.GameOver then begin//ゲームオーバーじゃないなら次を産む
               Piece:=TPiece.Create;
               Piece.Init(5,-3,30,MapBlocks);
               SetRandomShapeToPiece(Piece);
           end;
       end;
     (略)
end;
ここを
       if Piece.death then begin
           FreeAndNil(Piece);
           if not MapBlocks.GameOver then begin//ゲームオーバーじゃないなら
               //消す判定
               MapBlocks.DeleteBlocks;
               //次を産む
               Piece:=TPiece.Create;
               Piece.Init(5,-3,30,MapBlocks);
               SetRandomShapeToPiece(Piece);
           end;
       end;
こうします。
これで、揃ったところは削除されるようになったはずです。
バグがありそうな気がしますが、
多分気のせい
あとは難易度補正 得点表示 回転時位置補正
ぐらいでしょうか。 
それにしても落下遅いな