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



スコアとレベルを表示できるようにしましょう。
フォームをリサイズして、TLabelを貼り付けます。
ひさしぶりのGUI設計ですね。

img1.png

スコアとレベルの値は、
このLabelのCaptionでそのまま保持します。
扱いやすいように、
Nameを変えておきましょう。

img2.png img3.png

scoreとlevel・・・   スペル違うヨカーン
そしたら両方とも0にしときましょう。

img4.png

半角数字で一文字、0 ですよん。
プロパティーはCaptionです。
まずは、新しく出てくるブロックが、
スコアに応じて、d_maxが変わる部分を作りましょう。
d_max=10−(レベル÷10)
でしたね。
procedure TForm1.Timer1Timer(Sender: TObject);
begin
      (略)
               Piece:=TPiece.Create;
               Piece.Init(5,-3,30,MapBlocks);
               SetRandomShapeToPiece(Piece);
      (略)
end;
procedure TForm1.Timer1Timer(Sender: TObject);
begin
      (略)
               Piece:=TPiece.Create;
               Piece.Init(5,-3,10-(StrToInt(level.Caption) div 10),MapBlocks);
               SetRandomShapeToPiece(Piece);
      (略)
end;
10-(StrToInt(level.Caption) div 10)
の意味は、
10 − (レベル ÷ 10)
ですね。
除算に / ではなく、 div という演算子が使われていますが、
これは、/は小数を返し、divは余りを切り捨てた整数を返すからです。
d_maxは整数ですので、
小数を入れようとするとエラーになります。
divなら演算結果は常に整数になるので、divを使いました。
次回では、
ブロックが消える部分を修正して、
一段以上消えたとき1レベル上がるようにしましょうw(適当だなぁ