Delphi 经典游戏程序设计40例 的学习 例3 图样的重叠与多重地图03
背景图 + 前图
代码
unit rei40_02;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TRein40_02 = class(TForm)
Button1: TButton;
Button2: TButton;
Button3: TButton;
Button4: TButton;
Button5: TButton;
Button6: TButton;
procedure FormCreate(Sender: TObject);
procedure Button1Click(Sender: TObject);
procedure FormPaint(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure Button2Click(Sender: TObject);
procedure Button3Click(Sender: TObject);
procedure Button4Click(Sender: TObject);
procedure Button5Click(Sender: TObject);
procedure Button6Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
// procedure MakeMapClean;
const
Yoko = 37;
Tate = 27;
var
Rein40_02: TRein40_02;
Ptmap1: array[0..(37 * 27 - 1)] of Byte = (
7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
7,7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
7, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 7,
7, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 7,
7, 7, 7, 8, 9, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
7, 7, 7, 7, 7, 7, 7, 8, 9, 7, 7, 7, 7, 7,
7, 1, 1,10,11, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1,10, 11, 1, 1, 1, 1, 7,
7, 1, 1,10,11, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1,10,11, 1, 1, 1, 1, 7,
7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 8, 9, 7, 7, 7,
7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
7, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,10,11, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 7,
7, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,10,11, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 7,
7, 7, 7, 7, 7, 7, 7, 7, 8, 9, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
7, 7, 7, 7, 7, 7, 8, 9, 7, 7, 7, 7, 7, 7,
7, 1, 1, 1, 1, 1, 1, 1,10,11, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1,10,11, 1, 1, 1, 1, 1, 7,
7, 1, 1, 1, 1, 1, 1, 1,10,11, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1,10,11, 1, 1, 1, 1, 1, 7,
7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
8, 9, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
7, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
10,11, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 7,
7, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
10,11, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 7,
7, 7, 7, 7, 7, 7, 7, 7, 8, 9, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
7, 1, 1, 1, 1, 1, 1, 1,10,11, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 7,
7, 1, 1, 1, 1, 1, 1, 1,10,11, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 7,
7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
7, 7, 7, 8, 9, 7, 7, 7, 7, 7, 7, 7, 7, 7,
7, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1,10,11, 1, 1, 1, 1, 1, 1, 1, 1, 7,
7, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1,10,11, 1, 1, 1, 1, 1, 1, 1, 1, 7,
7, 7, 7, 7, 7, 7, 7, 7, 8, 9, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
7, 7, 7, 7, 7, 7, 7, 8, 9, 7, 7, 7, 7, 7,
7, 1, 1, 1, 1, 1, 1, 1,10,11, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1,10,11, 1, 1, 1, 1, 7,
7, 1, 1, 1, 1, 1, 1, 1,10,11, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1,10,11, 1, 1, 1, 1, 7,
7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7
);
Ptmap2: array[0..36, 0..26] of Byte = (
(2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, 2, 2, 2, 2, 2, 2, 2,12,12),
(2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, 2, 2, 2, 2, 2, 2, 2,12,12),
(2,2,2,2,2,2,2,2,2,3,2,2,2,2,2,2,2,2, 2, 2, 2, 2, 2, 2, 2,12,12),
(2,2,2,2,2,2,2,2,2,4,2,2,2,2,2,2,2,2, 2, 2, 2, 2, 2, 2, 2,12,12),
(2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, 2, 2, 2, 2, 2, 2, 2,12,12),
(2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, 2, 2, 2, 2, 2, 2, 2,12,12),
(2,2,2,2,3,2,2,2,2,2,2,2,2,2,2,2,2,2, 2, 2, 2, 2, 2, 2, 2,12,12),
(2,2,2,2,4,2,2,2,2,2,2,2,2,2,2,2,2,2, 2, 2, 2, 2, 2, 2, 2,12,12),
(2,2,2,2,2,2,2,2,2,2,2,2,3,2,2,2,2,2, 2, 2, 2, 2, 2, 2, 2,12,12),
(2,2,2,2,2,2,2,2,2,2,2,2,4,2,2,2,2,2, 2, 2, 2, 2, 2, 2, 2,12,12),
(2,2,2,3,2,2,2,2,2,2,2,2,2,2,2,2,2,2, 2, 2, 2, 2, 2, 2, 2,12,12),
(2,2,2,4,2,2,2,2,2,2,2,2,2,2,2,2,2,2, 2, 2, 2, 2, 2, 2, 2,12,12),
(2,2,2,2,2,2,2,3,2,2,2,2,2,2,2,2,2,2, 2, 2, 2, 2, 2, 2, 2,12,12),
(2,2,2,2,2,2,2,4,2,2,2,2,2,2,2,2,2,2, 2, 2, 2, 2, 2, 2, 2,12,12),
(2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, 2, 2, 2, 2, 2,12,12,12,12),
(2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, 2, 2, 2, 2, 2,12,12,12,12),
(2,2,2,2,2,2,2,2,3,2,2,2,2,2,2,2,2,2, 2, 2, 2,12,12,12,12,12,12),
(2,2,2,2,2,2,2,2,4,2,2,2,2,2,2,2,2,2, 2, 2, 2,12,12,12,12,12,12),
(2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, 2, 2, 2, 2, 2,12,12,12,12),
(2,2,2,5,6,2,2,2,2,2,2,2,2,2,2,2,2,2, 2, 2, 2, 2, 2,12,12,12,12),
(2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, 2, 2, 2, 2, 2, 2, 2,12,12),
(2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, 2, 2, 2, 2, 2, 2, 2,12,12),
(2,2,2,2,2,2,2,2,2,2,2,3,2,2,2,2,2,2, 2, 2, 2, 2, 2, 2, 2,12,12),
(2,2,2,2,2,2,2,2,2,2,2,4,2,2,2,2,2,2, 2, 2, 2, 2, 2, 2, 2,12,12),
(2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,12, 2, 2, 2, 2, 2, 2,12,12),
(2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,12, 2, 2, 2, 2, 2, 2,12,12),
(2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,12, 2, 2, 2, 2, 2, 2,12,12),
(2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,12, 2, 2, 2, 2, 2, 2,12,12),
(2,2,2,3,2,2,2,2,2,2,2,2,2,2,2,2,2,2,12, 2, 2, 2, 2, 2, 2,12,12),
(2,2,2,4,2,2,2,2,2,2,2,2,2,2,2,2,2,2,12, 2, 2, 2, 2, 2, 2,12,12),
(2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,12, 2, 2, 2, 2, 2, 2,12,12),
(2,2,2,2,2,2,2,3,2,2,2,2,2,2,2,2,2,2,12,12,12,12,12,12,12,12,12),
(2,2,2,2,2,2,2,4,2,2,2,2,2,2,2,2,2,2,12,12,12,12,12,12,12,12,12),
(2,2,2,2,2,2,2,2,2,2,2,3,2,2,2,2,2,2, 2, 2, 2, 2, 2, 2, 2,12,12),
(2,2,2,2,2,2,2,2,2,2,2,4,2,2,2,2,2,2, 2, 2, 2, 2, 2, 2, 2,12,12),
(2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, 2, 2, 2, 2, 2, 2, 2,12,12),
(2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, 2, 2, 2, 2, 2, 2, 2,12,12)
);
Ptmap3: array[0..36, 0..26] of Byte = (
(2,2,2,2,2,2,2,2, 2,2,2,2,2,2, 2,2,2,2,2,2, 2,2,2,2,2,2,0),
(2,2,2,2,2,2,2,2, 2,2,2,2,2,2, 2,2,2,2,2,2, 2,2,2,2,2,2,0),
(2,2,2,2,2,2,2,2, 2,2,2,2,2,2, 2,2,2,2,2,2, 2,2,2,2,2,2,0),
(2,2,2,2,2,3,2,2, 2,2,2,2,2,2, 2,2,2,2,2,2, 2,2,2,2,2,2,0),
(2,2,2,2,2,4,2,2, 2,2,2,2,2,2, 0,2,2,3,2,2, 0,2,2,2,2,2,0),
(2,2,2,2,2,2,2,2, 2,2,2,2,2,2,12,2,2,4,2,2, 0,2,2,2,2,2,0),
(2,2,2,2,2,2,2,2, 2,2,2,2,2,2,12,2,2,2,2,2, 0,2,2,2,2,2,0),
(2,2,2,2,2,2,2,2, 2,2,3,2,2,2, 0,2,2,2,2,2, 0,2,2,2,2,2,0),
(2,2,2,2,2,2,2,2, 2,2,4,2,2,2, 0,2,2,2,2,2, 0,2,2,2,2,2,0),
(2,2,2,2,2,2,2,2, 2,2,2,2,2,2, 0,2,2,2,2,2, 0,2,2,3,2,2,0),
(2,2,2,2,2,2,2,2, 2,2,2,2,2,2, 0,2,2,2,2,2, 0,2,2,4,2,2,0),
(2,2,2,2,2,2,2,2, 2,2,2,2,2,2, 0,2,2,2,2,2, 0,2,2,2,2,2,0),
(2,2,2,2,2,2,2,3, 2,2,2,2,2,2, 0,2,2,2,2,2, 0,2,2,2,2,2,0),
(2,2,2,2,2,2,2,4, 2,2,2,2,2,2, 0,2,2,2,2,2, 0,2,2,2,2,2,0),
(2,2,2,2,2,2,2,2, 2,2,2,2,2,2, 0,2,2,2,2,2, 0,2,2,2,2,2,0),
(2,2,2,2,2,2,2,2, 0,2,2,2,2,2, 0,2,2,2,2,2, 0,2,2,2,2,2,0),
(2,2,2,2,2,2,2,2, 0,2,2,2,2,2, 0,2,2,2,2,2, 0,2,2,2,2,2,0),
(2,2,2,2,2,2,2,2,12,2,2,2,2,2, 0,2,2,2,2,2, 0,2,2,2,2,2,0),
(2,2,2,2,2,2,2,2,12,2,2,2,2,2, 0,2,2,2,2,2, 0,2,2,2,2,2,0),
(2,2,2,2,2,2,2,2, 0,2,2,2,2,2, 0,2,2,2,2,2, 0,2,2,2,2,2,0),
(2,2,2,2,2,2,2,2, 0,2,2,2,2,2, 0,2,2,2,2,2, 0,2,2,2,2,2,0),
(2,2,2,2,2,2,2,2, 0,2,2,2,2,2, 0,2,2,2,2,2, 0,2,2,2,2,2,0),
(2,2,2,2,2,2,3,2, 0,2,2,2,2,2, 0,2,2,2,2,2, 0,2,2,2,2,2,0),
(2,2,2,2,2,2,4,2, 0,2,2,2,2,2, 0,2,2,2,2,2, 0,2,2,2,2,2,0),
(2,2,2,2,2,2,2,2, 0,2,2,2,2,2, 2,2,2,2,2,2, 0,2,2,2,2,2,0),
(2,2,2,2,2,2,2,2, 0,2,2,2,2,2, 2,2,3,2,2,2, 0,2,2,2,2,2,0),
(2,2,2,2,2,3,2,2, 0,2,2,2,2,2, 2,2,4,2,2,2, 0,2,2,2,2,2,0),
(2,2,2,2,2,4,2,2, 0,2,2,2,2,2, 2,2,2,2,2,2, 0,2,2,2,2,2,0),
(2,2,5,6,2,2,2,2, 2,2,2,2,2,2, 2,2,2,2,2,2, 0,2,2,2,2,2,0),
(2,2,2,2,2,2,2,2, 2,2,2,2,2,2, 2,2,2,2,2,2, 0,2,2,3,2,2,0),
(2,2,2,2,2,2,2,2, 2,2,2,2,2,2, 2,2,3,2,2,2,12,2,2,4,2,2,0),
(2,2,2,2,2,2,2,2, 2,2,2,2,2,2, 2,2,4,2,2,2,12,2,2,2,2,2,0),
(2,2,2,2,2,2,3,2, 2,2,2,2,2,2, 2,2,2,2,2,2, 0,2,2,2,2,2,0),
(2,2,2,2,2,2,4,2, 2,2,2,2,2,2, 2,2,2,2,2,2, 2,2,2,2,2,2,0),
(2,2,2,2,2,2,2,2, 2,2,2,2,2,2, 2,2,2,2,2,2, 2,2,2,2,2,2,0),
(2,2,2,2,2,2,2,2, 2,2,2,2,2,2, 2,2,2,2,2,2, 2,2,2,2,2,2,0),
(2,2,2,2,2,2,2,2, 2,2,2,2,2,2, 2,2,2,2,2,2, 2,2,2,2,2,2,0)
);
Ptmap4: array[0..36, 0..26] of Byte = (
(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 7),
(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 7),
(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 7),
(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 7),
(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,12, 0, 0, 0, 0, 0,12,
0, 0, 0, 0, 0, 7),
(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,17,17,17,17,17,17,17,12,
0, 0, 0, 0, 0, 7),
(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,18,18,18,18,18,18,18,12,
0, 0, 0, 0, 0, 7),
(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,12, 0, 0, 0, 0, 0,12,
0, 0, 0, 0, 0, 7),
(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,12, 0, 0, 0, 0, 0,12,
0, 0, 0, 0, 0, 7),
(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,12, 0, 0, 0, 0, 0,12,
0, 0, 0, 0, 0, 7),
(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,12, 0, 0, 0, 0, 0,12,
0, 0, 0, 0, 0, 7),
(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,12, 0, 0, 0, 0, 0,12,
0, 0, 0, 0, 0, 7),
(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,12, 0, 0, 0, 0, 0,12,
0, 0, 0, 0, 0, 7),
(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,12, 0, 0, 0, 0, 0,12,
0, 0, 0, 0, 0, 7),
(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,12, 0, 0, 0, 0, 0,12,
0, 0, 0, 0, 0, 7),
(0, 0, 0, 0, 0, 0, 0, 0,12, 0, 0, 0, 0, 0,12, 0, 0, 0, 0, 0,12,
0, 0, 0, 0, 0, 7),
(0, 0, 0, 0, 0, 0, 0, 0,12, 0, 0, 0, 0, 0,12, 0, 0, 0, 0, 0,12,
0, 0, 0, 0, 0, 7),
(0, 0, 0, 0, 0, 0, 0,17,17,17,17,17,17,17,12, 0, 0, 0, 0, 0,12,
0, 0, 0, 0, 0, 7),
(0, 0, 0, 0, 0, 0, 0,18,18,18,18,18,18,18,12, 0, 0, 0, 0, 0,12,
0, 0, 0, 0, 0, 7),
(0, 0, 0, 0, 0, 0, 0, 0,12, 0, 0, 0, 0, 0,12, 0, 0, 0, 0, 0,12,
0, 0, 0, 0, 0, 7),
(0, 0, 0, 0, 0, 0, 0, 0,12, 0, 0, 0, 0, 0,12, 0, 0, 0, 0, 0,12,
0, 0, 0, 0, 0, 7),
(0, 0, 0, 0, 0, 0, 0, 0,12, 0, 0, 0, 0, 0,12, 0, 0, 0, 0, 0,12,
0, 0, 0, 0, 0, 7),
(0, 0, 0, 0, 0, 0, 0, 0,12, 0, 0, 0, 0, 0,12, 0, 0, 0, 0, 0,12,
0, 0, 0, 0, 0, 7),
(0, 0, 0, 0, 0, 0, 0, 0,12, 0, 0, 0, 0, 0,12, 0, 0, 0, 0, 0,12,
0, 0, 0, 0, 0, 7),
(0, 0, 0, 0, 0, 0, 0, 0,12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,12,
0, 0, 0, 0, 0, 7),
(0, 0,17,17,17,17,17,17,12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,12,
0, 0, 0, 0, 0, 7),
(0, 0,18,18,18,18,18,18,12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,12,
0, 0, 0, 0, 0, 7),
(0, 0, 0, 0, 0, 0, 0, 0,12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,12,
0, 0, 0, 0, 0, 7),
(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,12,
0, 0, 0, 0, 0, 7),
(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,12,
0, 0, 0, 0, 0, 7),
(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,17,17,
17,17,17,17,17, 7),
(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,18,18,
18,18,18,18,18, 7),
(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,12,
0, 0, 0, 0, 0, 7),
(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 7),
(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 7),
(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 7),
(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 7)
);
Load_Bmap : TBitmap;
Make_Bmap : TBitmap;
Xpat_Bmap : TBitmap;
P,PX,PY,Xdip : Byte;
Rect_L,Rect_M : TRect;
implementation
{$R *.dfm}
procedure TRein40_02.FormCreate(Sender: TObject);
begin
Rein40_02.Height := 480;
Rein40_02.Width :=640;
Button1.Height :=25;
Button1.Width :=25;
Button1.Top :=16;
Button1.Left :=603;
Button2.Height :=25;
Button2.Width :=25;
Button2.Top := 56;
Button2.Left :=603;
Button3.Height :=25;
Button3.Width :=25;
Button3.Top :=96;
Button3.Left :=603;
Button4.Height :=25;
Button4.Width :=25;
Button4.Top := 136;
Button4.Left :=603;
Button5.Height :=25;
Button5.Width :=25;
Button5.Top :=176;
Button5.Left :=603;
Button6.Height :=25;
Button6.Width :=25;
Button6.Top := 216;
Button6.Left :=603;
Load_Bmap := TBitmap.Create;
Load_Bmap.LoadFromFile(GetCurrentDir + '\Pat_Sample.bmp');
Xpat_Bmap :=TBitmap.Create;
Xpat_Bmap.Width := 256;
Xpat_Bmap.Height :=256;
Rect_L :=Rect(0,0,256,256);
Xpat_Bmap.Canvas.CopyMode :=cmSrcCopy;
Xpat_Bmap.Canvas.CopyRect(Rect_L,Load_Bmap.Canvas,Rect_L);
Xpat_Bmap.Canvas.Brush.Color :=clBlack;
Xpat_Bmap.Canvas.BrushCopy(Rect_L,Load_Bmap,Rect_L,clWhite);
Xpat_Bmap.Canvas.CopyMode :=cmMergePaint;
Xpat_Bmap.Canvas.CopyRect(Rect_L,Load_Bmap.Canvas,Rect_L);
Make_Bmap := TBitmap.Create;
Make_Bmap.Width := Yoko * 16;
Make_Bmap.Height := Tate * 16;
Xdip :=0;
end;
procedure MakeMapClean;
begin
with Make_Bmap do
begin
Canvas.Brush.Color := clRed;
Canvas.FillRect(Rect(0,0,Yoko*16,Tate*16));
end;
end;
procedure TRein40_02.Button1Click(Sender: TObject);
var
X,Y : Byte;
begin
//MakeMapClean;
Make_Bmap.Canvas.CopyMode := cmSrcCopy ;
for Y :=0 to (Tate -1) do
for X :=0 to (Yoko - 1) do
begin
p := Ptmap1[ Y* Yoko + X] ;
if p <> 0 then
begin
PX :=(p mod 16) * 16;
PY :=(p div 16) * 16;
Rect_L := Rect(PX,PY,PX+16,PY+16);
Rect_M := Rect(x*16,y*16,x*16+16,y*16+16);
Make_Bmap.Canvas.CopyRect(Rect_M,Load_Bmap.Canvas,Rect_L);
end;
end;
Rein40_02.Canvas.CopyMode := cmSrcCopy;
Rein40_02.Canvas.Draw(0,0,Make_Bmap);
end;
procedure TRein40_02.FormPaint(Sender: TObject);
begin
Rein40_02.Canvas.CopyMode := cmSrcCopy;
Rein40_02.Canvas.Draw(0,0,Make_Bmap);
if Xdip = 1 then
Rein40_02.Canvas.draw(0,0,Xpat_Bmap);
end;
procedure TRein40_02.FormClose(Sender: TObject; var Action: TCloseAction);
begin
Load_Bmap.Free;
Make_Bmap.Free;
Xpat_Bmap.Free;
end;
procedure TRein40_02.Button2Click(Sender: TObject);
var
X,Y : Byte;
begin
// MakeMapClean;
Make_Bmap.Canvas.CopyMode := cmSrcCopy;
for y:=0 to (Tate-1) do
for x:=0 to (Yoko-1) do
begin
p := ptmap2[x,y];
if p <> 0 then
begin
PX := (p mod 16) *16 ;
PY := (p div 16) *16 ;
Rect_L := Rect(PX,PY,PX+16,PY+16);
Rect_M := Rect(x*16,y*16,x*16+16,y*16+16);
Make_Bmap.Canvas.CopyRect(Rect_M,Load_Bmap.Canvas,Rect_L);
end;
end;
Rein40_02.Canvas.CopyMode := cmSrcCopy;
Rein40_02.Canvas.Draw(0,0,Make_Bmap);
end;
procedure TRein40_02.Button3Click(Sender: TObject);
begin
// MakeMapClean;
Rein40_02.Canvas.Draw(0,0,Xpat_Bmap);
Xdip :=1;
end;
procedure TRein40_02.Button4Click(Sender: TObject);
var
x,y :Byte;
begin
//MakeMapClean;
Make_Bmap.Canvas.CopyMode := cmSrcCopy;
for y:=0 to (Tate-1) do
for x:=0 to (Yoko-1) do
begin
p := Ptmap3[x,y];
if p <> 0 then
begin
PX := (p mod 16) *16;
PY := (p div 16) *16;
Rect_L :=Rect(PX,PY,PX+16,PY+16) ;
Rect_M :=Rect(x*16,y*16,x*16+16,y*16+16);
Make_Bmap.Canvas.CopyRect(Rect_M,Load_Bmap.Canvas,Rect_L);
end;
end;
for y:=0 to (Tate-1) do
for x:=0 to (Yoko-1) do
begin
p := Ptmap4[x,y];
if p <>0 then
begin
PX := (P mod 16) *16;
PY := (p div 16) *16;
Rect_L := Rect(PX,PY,PX+16,PY+16);
Rect_M := Rect(x*16,y*16,x*16+16,y*16+16);
Make_Bmap.Canvas.CopyMode := cmSrcPaint;
Make_Bmap.Canvas.CopyRect(Rect_M,Xpat_Bmap.Canvas,Rect_L);
Make_Bmap.Canvas.CopyMode := cmSrcAnd;
Make_Bmap.Canvas.CopyRect(Rect_M,Load_Bmap.Canvas,Rect_L);
end;
end;
Rein40_02.Canvas.Draw(0,0,Make_Bmap) ;
Xdip :=0;
end;
procedure TRein40_02.Button5Click(Sender: TObject);
var
x,y :Byte;
begin
// MakeMapClean;
Make_Bmap.Canvas.CopyMode := cmSrcCopy;
for y:=0 to (Tate-1) do
for x:=0 to (Yoko-1) do
begin
p := ptmap3[x,y];
if p <> 0 then
begin
PX := (p mod 16) *16 ;
PY := (p div 16) *16 ;
Rect_L := Rect(PX,PY,PX+16,PY+16);
Rect_M := Rect(x*16,y*16,x*16+16,y*16+16);
Make_Bmap.Canvas.CopyRect(Rect_M,Load_Bmap.Canvas,Rect_L);
end;
end;
Rein40_02.Canvas.CopyMode := cmSrcCopy;
Rein40_02.Canvas.Draw(0,0,Make_Bmap);
end;
procedure TRein40_02.Button6Click(Sender: TObject);
var
x,y :Byte;
begin
// MakeMapClean;
Make_Bmap.Canvas.CopyMode := cmSrcCopy;
for y:=0 to (Tate-1) do
for x:=0 to (Yoko-1) do
begin
p := ptmap4[x,y];
if p <> 0 then
begin
PX := (p mod 16) *16 ;
PY := (p div 16) *16 ;
Rect_L := Rect(PX,PY,PX+16,PY+16);
Rect_M := Rect(x*16,y*16,x*16+16,y*16+16);
Make_Bmap.Canvas.CopyRect(Rect_M,Load_Bmap.Canvas,Rect_L);
end;
end;
Rein40_02.Canvas.CopyMode := cmSrcCopy;
Rein40_02.Canvas.Draw(0,0,Make_Bmap);
end;
end.
背景图
前图
问题 :重复点按钮图会乱,原来的图不会消除。
自己做了一个 过程,
procedure MakeMapClean;
但是这个过程 不能放倒 类里面说明,奇怪。
procedure MakeMapClean;
begin
with Make_Bmap do
begin
Canvas.Brush.Color := clRed;
Canvas.FillRect(Rect(0,0,Yoko*16,Tate*16));
end;
end;
是对 Make_Bmap 刷红, 还是不行。
应该是对 FORM 的canvas 进行 刷会底色吧。
procedure CleanScreen;
begin
with Rein40_02 do
begin
Canvas.Brush.Color := clWhite;
Canvas.FillRect(Rect(0,0,Yoko*16,Tate*16));
end;
end;
还是不行,
应该是 P<>0的时候没有对 Makemap 进行贴图处理,
研究下 。
就是这个问题,
为了省掉 处理 空图 的贴图 处理 ,实际也不算是BUG
但是 为什么我写的 PROCUDURE 为什么不能放倒 CLASS里面?