📄 unit1.~pas
字号:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ExtCtrls, Menus;
type
TForm1 = class(TForm)
Panel1: TPanel;
Panel2: TPanel;
Panel3: TPanel;
Panel4: TPanel;
Panel5: TPanel;
Panel6: TPanel;
Panel7: TPanel;
Panel8: TPanel;
Panel9: TPanel;
Panel10: TPanel;
Panel11: TPanel;
Panel12: TPanel;
Panel13: TPanel;
Panel14: TPanel;
Panel15: TPanel;
Panel16: TPanel;
Panel17: TPanel;
Panel18: TPanel;
Panel19: TPanel;
Panel20: TPanel;
Panel21: TPanel;
Panel22: TPanel;
Panel23: TPanel;
Panel24: TPanel;
Panel25: TPanel;
MainMenu1: TMainMenu;
N1: TMenuItem;
N2: TMenuItem;
procedure FormCreate(Sender: TObject);
procedure Change(i:integer);
procedure PanelClick(Sender: TObject);
function CheckWin:Boolean;
procedure N1Click(Sender: TObject);
procedure N2Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
//所有Panel的数组
p: array[1..25] of TPanel;
//存储当前灯的状态
c: array[1..25] of Boolean;
implementation
{$R *.dfm}
procedure TForm1.FormCreate(Sender: TObject);
var i:integer;
begin
p[1]:=panel1;p[2]:=panel2;p[3]:=panel3;p[4]:=panel4;p[5]:=panel5;
p[6]:=panel6;p[7]:=panel7;p[8]:=panel8;p[9]:=panel9;
p[10]:=panel10;p[11]:=panel11;p[12]:=panel12;p[13]:=panel13;
p[14]:=panel14;p[15]:=panel15;p[16]:=panel16;p[17]:=panel17;
p[18]:=panel18;p[19]:=panel19;p[20]:=panel20;p[21]:=panel21;
p[22]:=panel22;p[23]:=panel23;p[24]:=panel24;p[25]:=panel25;
//设置所有Panel的Tag属性,并把当前状态设为“关”
for i:=1 to 25 do
begin
p[i].Tag:=i; c[i]:=false;
end;
end;
procedure TForm1.Change(i:integer);
begin
//改变灯当前的状态
c[i]:=not c[i];
if c[i] then
p[i].Color :=clBlack //如果开着,显示黑色
else
p[i].Color :=clWhite; //如果关了,显示白色
end;
function TForm1.CheckWin:Boolean;
var i:integer;
begin
result:=True;
for i:=1 to 25 do
if not c[i] then
begin
//如果某个灯是关着的,则返回False
Result:=False;
exit
end;
end;
procedure TForm1.PanelClick(Sender: TObject);
var i,j:integer;
begin
//得到点击的灯的序号
i:=TPanel(Sender).Tag ;
//改变被点击的灯
Change(i);
//如果被点击的灯不是第一排,则改变上边的灯
if i >5 then Change(i-5);
//如果被点击的灯不是最后一排,则改变下边的灯
if i<21 then Change(i+5);
//如果被点击的灯不是最后一列,则改变右边的灯
if (i mod 5) <>0 then Change(i+1);
//如果被点击的灯不是第一列,则改变左边的灯
if (i mod 5) <>1 then Change(i-1);
//如果胜利,则弹出消息
if CheckWin then Showmessage('你赢了!');
end;
procedure TForm1.N1Click(Sender: TObject);
begin
application.MessageBox('点击一个格子,它和周围四个格子的颜色都会由白变黑或由黑变白。当25个格子全变成黑色时,游戏胜利!加油哦!','游戏规则',mb_ok)
end;
procedure TForm1.N2Click(Sender: TObject);
var i:integer;
begin
for i:=1 to 25 do
p[i].Color:=clWhite;
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -