⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 unit1.pas

📁 delphi编写的扫雷小游戏源码
💻 PAS
📖 第 1 页 / 共 2 页
字号:
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 + -