📄 unit1.pas
字号:
begin
if LeiYesNo=-1 then
result:=1
else
result:=0;
end;
procedure TSaoLei.Image1MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
CurrentI:= X div 30;
CurrentJ:= Y div 30;
if button=mbLeft then //按左键
begin
if CurrentFlag[CurrentI][CurrentJ]=0 then
if BombFlag[CurrentI][CurrentJ]=-1 then //按了雷
begin
//showmessage('中雷了');
Timer1.Enabled:=false;
GameEnd(CurrentI,CurrentJ);
N5.Enabled :=false;
N3.Enabled :=true;
N6.Enabled :=true;
N7.Enabled :=true;
N8.Enabled :=true;
N9.Enabled :=true;
end
else //按下非雷区
begin
ClickDraw(CurrentI,CurrentJ);
end;
end;
if button=mbRight then //按右键
begin
if CurrentFlag[CurrentI][CurrentJ]<>3 then
begin
currentFlag[CurrentI][CurrentJ]:=(currentFlag[CurrentI][CurrentJ]+1) mod 3;
imagelist2.Draw(SaoLei.Canvas,CurrentI*30,CurrentJ*30,CurrentFlag[CurrentI][CurrentJ],true);
if currentFlag[CurrentI][CurrentJ]=1 then
begin
inc(GameOver);
CurrentL:=CurrentL-1;
label1.Caption :='还有'+inttostr(CurrentL)+'个雷';
end;
if currentFlag[CurrentI][CurrentJ]=2 then
begin
GameOver:=GameOver-1;
CurrentL:=CurrentL+1;
label1.Caption :='还有'+inttostr(CurrentL)+'个雷 ';
end;
end;
end;
//*******下面判断是否结束游戏
if (GameOver=M*N) and (CurrentL=0) then
begin
Timer1.Enabled:=false;
showmessage('过关了');
N5.Enabled :=false;
N3.Enabled :=true;
N6.Enabled :=true;
N7.Enabled :=true;
N8.Enabled :=true;
N9.Enabled :=true;
label1.Caption :='';
label2.Caption :='';
end;
end;
procedure TSaoLei.Timer1Timer(Sender: TObject);
begin
MyTime:=MyTime+1;
Label2.Caption := inttostr(MyTime)+'秒';
end;
procedure TSaoLei.N6Click(Sender: TObject);
begin
M:=9;
N:=9;
L:=10;
N6.Checked :=true;
end;
procedure TSaoLei.N7Click(Sender: TObject);
begin
M:=16;
N:=16;
L:=40;
N7.Checked :=true;
end;
procedure TSaoLei.N8Click(Sender: TObject);
begin
M:=30;
N:=16;
L:=99;
N8.Checked :=true;
end;
procedure TSaoLei.N9Click(Sender: TObject);
begin
Form2.ShowModal;
N9.Checked :=true;
end;
procedure TSaoLei.N5Click(Sender: TObject);
begin
Timer1.Enabled:=false;
GameEnd(0,0);
Saolei.Repaint;
N5.Enabled :=false;
N3.Enabled :=true;
N6.Enabled :=true;
N7.Enabled :=true;
N8.Enabled :=true;
N9.Enabled :=true;
label1.Caption :='';
label2.Caption :='';
imagelist1.Draw(SaoLei.Canvas,0,0,14);
end;
procedure TSaoLei.Image1MouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
begin
if N12.Checked =true then
begin
currentI:=x div 30;
currentJ:=y div 30;
if (currentI<=M-1)and(currentJ<=N-1)then
begin
if BombFlag[currentI][currentJ]<>-1 then
StatusBar1.Panels[0].Text :='提示:'+inttostr(BombFlag[currentI][currentJ]);
if BombFlag[currentI][currentJ]=-1 then
StatusBar1.Panels[0].Text :='提示:此处是雷';
end;
end
else
StatusBar1.Panels[0].Text :='提示开关没打开';
end;
procedure TSaoLei.N14Click(Sender: TObject);
begin
close;
end;
procedure TSaoLei.FormMouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
CurrentI:= (X-leftI) div 30;
CurrentJ:= (Y-TopI) div 30;
if button=mbLeft then //按左键
begin
if CurrentFlag[CurrentI][CurrentJ]=0 then
if BombFlag[CurrentI][CurrentJ]=-1 then //按了雷
begin
//showmessage('中雷了');
if N11.Checked =true then beep;
Timer1.Enabled:=false;
GameEnd(CurrentI,CurrentJ);
N5.Enabled :=false;
N3.Enabled :=true;
N6.Enabled :=true;
N7.Enabled :=true;
N8.Enabled :=true;
N9.Enabled :=true;
end
else //按下非雷区
begin
ClickDraw(CurrentI,CurrentJ);
end;
end;
if button=mbRight then //按右键
begin
if CurrentFlag[CurrentI][CurrentJ]<>3 then
begin
currentFlag[CurrentI][CurrentJ]:=(currentFlag[CurrentI][CurrentJ]+1) mod 3;
imagelist2.Draw(Saolei.Canvas,CurrentI*30+leftI,CurrentJ*30+topI,CurrentFlag[CurrentI][CurrentJ],true);
if currentFlag[CurrentI][CurrentJ]=1 then
begin
inc(GameOver);
CurrentL:=CurrentL-1;
label1.Caption :='还有'+inttostr(CurrentL)+'个雷';
end;
if currentFlag[CurrentI][CurrentJ]=2 then
begin
GameOver:=GameOver-1;
CurrentL:=CurrentL+1;
label1.Caption :='还有'+inttostr(CurrentL)+'个雷 ';
end;
end;
end;
//*******下面判断是否结束游戏
if (GameOver=M*N) and (CurrentL=0) then
begin
Timer1.Enabled:=false;
showmessage('过关了');
N5.Enabled :=false;
N3.Enabled :=true;
N6.Enabled :=true;
N7.Enabled :=true;
N8.Enabled :=true;
N9.Enabled :=true;
label1.Caption :='';
label2.Caption :='';
end;
end;
procedure TSaoLei.FormMouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
begin
if N12.Checked =true then
begin
currentI:=(x-leftI) div 30;
currentJ:=(y-topI) div 30;
if (currentI<=M-1)and(currentJ<=N-1)then
begin
if BombFlag[currentI][currentJ]<>-1 then
StatusBar1.Panels[0].Text :='提示:'+inttostr(BombFlag[currentI][currentJ]);
if BombFlag[currentI][currentJ]=-1 then
StatusBar1.Panels[0].Text :='提示:此处是雷';
end;
end
else
StatusBar1.Panels[0].Text :='提示开关没打开';
end;
procedure TSaoLei.N15Click(Sender: TObject);
begin
application.MessageBox('自编一个扫雷小游戏,'+#13+'意在增加其娱乐性,趣'+#13+'味性,该版本只是个测'+#13+'试版本。程序中增加了'+#13+'提示功能。','扫雷--使用帮助',64);
end;
procedure TSaoLei.FormPaint(Sender: TObject);
begin
chushihua;
end;
procedure Tsaolei.HuiHua ;
var i,j:integer;
begin
setlength(BombFlag,M,N);
setlength(CurrentFlag,M,N);
for i:=0 to M-1 do
begin
for j:=0 to N-1 do
begin
imagelist1.Draw(Canvas, i*30+leftI, j*30+topI,11,true);
BombFlag[i][j]:=0;
CurrentFlag[i][j]:=0;
end;
end;
end;
procedure TSaoLei.N17Click(Sender: TObject);
begin
application.messagebox('本程序由 冯春功'+#13+#10+'编写于2008年10月','关于扫雷',64);
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -