-------------------
TETRIS.DPR 代码如下:
-------------------
program Tetris;
uses
Forms,
unit1 in 'unit1.PAS' {Form1},
unit2 in 'unit2.pas' {Form2};
{$R *.RES}
begin
Application.CreateForm(TForm1, Form1);
Application.CreateForm(TForm2, Form2);
Application.Run;
end.
-------------------
unit1.pas 代码如下:
-------------------
unit unit1;
interface
uses
SysUtils, WinTypes, WinProcs, Messages, Classes, Graphics, Controls,
Forms, Dialogs, StdCtrls, ExtCtrls, Buttons, ComCtrls;
const
GlassWidth=10;
GlassHeight=23;
var
GlassWorkSheet: array [1..GlassHeight,1..GlassWidth] of Byte;
OldGlassWorkSheet: array [1..GlassHeight,1..GlassWidth] of Byte;
type
TFigureWorksheet=array [1..4,1..4] of Byte;
const
Triada: TFigureWorksheet=
((0,1,0,0),
(1,1,1,0),
(0,0,0,0),
(0,0,0,0));
LCorner: TFigureWorksheet=
((1,1,1,0),
(1,0,0,0),
(0,0,0,0),
(0,0,0,0));
RCorner: TFigureWorksheet=
((1,1,1,0),
(0,0,1,0),
(0,0,0,0),
(0,0,0,0));
LZigzag: TFigureWorksheet=
((1,1,0,0),
(0,1,1,0),
(0,0,0,0),
(0,0,0,0));
RZigzag: TFigureWorksheet=
((0,1,1,0),
(1,1,0,0),
(0,0,0,0),
(0,0,0,0));
Stick: TFigureWorksheet=
((1,1,1,1),
(0,0,0,0),
(0,0,0,0),
(0,0,0,0));
Box: TFigureWorksheet=
((1,1,0,0),
(1,1,0,0),
(0,0,0,0),
(0,0,0,0));
const
FigureWorkSheet: TFigureWorksheet=
((0,0,0,0),
(0,0,0,0),
(0,0,0,0),
(0,0,0,0));
const
BarWidth= 14;
BarHeight=14;
NextBarWidth= 9;
NextBarHeight=9;
const
TopOfs= 6;
LeftOfs= 5;
FieldWidth=4;
const
MaxFigureNumber=7;
MaxCornerNumber=4;
MaxFigureSize= 4;
MaxFigureColor= 7;
type
TMoveDirect= (mdDown,mdLeft,mdRight);
TFigureCorner=(fc00,fc90,fc180,fc270);
type
TForm1 = class(TForm)
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
Label4: TLabel;
Timer1: TTimer;
Bevel3: TBevel;
SpeedButton1: TSpeedButton;
SpeedButton2: TSpeedButton;
SpeedButton3: TSpeedButton;
SpeedButton4: TSpeedButton;
SpeedButton5: TSpeedButton;
SpeedButton6: TSpeedButton;
SpeedButton7: TSpeedButton;
SpeedButton8: TSpeedButton;
Bevel1: TBevel;
Bevel2: TBevel;
SpeedButton9: TSpeedButton;
Bevel4: TBevel;
procedure FormPaint(Sender: TObject);
procedure Timer1Timer(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure FormKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
procedure SpeedButton8Click(Sender: TObject);
procedure SpeedButton5Click(Sender: TObject);
procedure SpeedButton6Click(Sender: TObject);
procedure SpeedButton7Click(Sender: TObject);
procedure SpeedButton2Click(Sender: TObject);
procedure SpeedButton1Click(Sender: TObject);
procedure SpeedB
utton3Click(Sender: TObject);
procedure SpeedButton4Click(Sender: TObject);
procedure SpeedButton9Click(Sender: TObject);
private
public
Level: Byte;
Score: Longint;
ReentTimer: Boolean;
ReentKeys: Boolean;
FigureActive: Boolean;
FigureType: Byte;
FigureX: Byte;
FigureY: Byte;
FigureCorner: TFigureCorner;
FigureMove: TMoveDirect;
FirstColor: Byte;
SecondColor: Byte;
FirstFigure: Byte;
SecondFigure: Byte;
NextTopOfs: Integer;
NextLeftOfs: Integer;
RedrawSheet: Boolean;
function FigureXSize: Byte;
function FigureYSize: Byte;
procedure GenerateNewFigure;
procedure ClearFigureIntoGlass;
function PutFigureIntoGlass(MoveDirect: TMoveDirect): Boolean;
procedure RotateFigure;
procedure Sca