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

📄 umain.pas

📁 很好的俄罗斯方块
💻 PAS
📖 第 1 页 / 共 3 页
字号:
      Audio.Play;
      StopClick := false;
   end;
   MenuStopMusic.Enabled := true;
   MenuPlayMusic.Enabled := true;
   MenuPauseMusic.Enabled := true;
end;


procedure TfrmGame.AudioNotify(Sender: TObject);
begin
   { 如果音乐自动停止,那么循环播放 }
   //MessageBox(Handle,'Get Command for Player!','warn',64);
   if(not ChangingFileName)then
      if (Audio.Mode = mpStopped) and not StopClick then
      begin
         Audio.Play;
      end;
end;

procedure TfrmGame.MenuFullClick(Sender: TObject);
begin
   MenuFull.Checked := not MenuFull.Checked;
   SetFullScreen(MenuFull.Checked);
end;

procedure TfrmGame.PaintBoxPaint(Sender: TObject);
begin
   DrawMap(PaintBox.Canvas);
   ShowNext(PaintBox.Canvas);
   BoxMoveTo(PaintBox.Canvas,CurX,CurY,Block);
end;

procedure TfrmGame.MenuSoundClick(Sender: TObject);
begin
   MenuSound.Checked := not MenuSound.Checked;
end;

procedure TfrmGame.MenuPlayMusicClick(Sender: TObject);
begin
   if(FileExists(Audio.FileName))then
   begin
     if StopClick then Audio.Open;
     Audio.Play;
   end;
   MenuStopMusic.Enabled := true;
   MenuPauseMusic.Enabled := true;
end;

procedure TfrmGame.MenuStopMusicClick(Sender: TObject);
begin
   MenuStopMusic.Enabled := false;
   MenuPauseMusic.Enabled := false;
   Audio.Stop;
   Audio.Close;
   StopClick := true;
end;

procedure TfrmGame.MenuPauseMusicClick(Sender: TObject);
begin
   Audio.Pause;
   StopClick := false;
end;

procedure TfrmGame.MenuHighScoreClick(Sender: TObject);
var
   HighScoreFrm : THighScoreForm;
begin
   MenuPause.Click;
   HighScoreFrm := THighScoreForm.Create(Owner);
   HighScoreFrm.ShowModal;
   HighScoreFrm.Free;
end;

procedure TfrmGame.MenuAboutmeClick(Sender: TObject);
begin
   MenuPause.Click;
   ShowAboutFrm;
end;

procedure TfrmGame.MenuHomepageClick(Sender: TObject);
begin
   ShellExecute(Handle,'open',PChar('http://yousp.yeah.net'),'','',SW_SHOWNORMAL);
end;

procedure TfrmGame.MenuEMailClick(Sender: TObject);
begin
   ShellExecute(Handle,'open',PChar('mailto:yousp@yeah.net'),'','',SW_SHOWNORMAL);
end;

procedure TfrmGame.MenuChgBKClick(Sender: TObject);
begin
   MenuPause.Click;
   if ChgBkDlg.Execute then
   begin
      BkColor := ChgBkDlg.Color;
      MemoShow.Color := BkColor;
      MemoShow.Font.Color := clSilver xor BkColor;
      DrawMap(PaintBox.Canvas);
   end;
end;


procedure TfrmGame.MenuReplayClick(Sender: TObject);
var
   Res: Integer;
begin
   MenuPause.Click;
   Res := MessageBox(Handle,'你好赖皮!~!@#$%^&*……真的要重新开始本次游戏吗?','赖皮',MB_ICONQUESTION + MB_YESNO);
   if Res = IDNO then exit;
   MenuStart.Enabled := true;
   StopTimer.Enabled := false;
   MainTimer.Enabled := false;
   case Level of
      1: LabelMess.Caption := '你也太太太……过分了!';
      2: LabelMess.Caption := '呵呵,你知道厉害了吧,多加练习吧!';
      3: LabelMess.Caption := '打倒日本帝国主义!!!!';
      4: LabelMess.Caption := '呵呵,夹着尾巴逃跑了。。。';
      else
         LabelMess.Caption := '你已经无药可救了~~!烦不烦啊你!!!!我都被你烦死了';
   end;
   CheckScore(Score);
   MenuStartClick(Sender);
end;

{ 隐藏程序 }
procedure TfrmGame.MenuHideClick(Sender: TObject);
begin
   if MenuShowClock.Checked then
      ClockForm.Hide;
   MenuPause.Click;
   MenuPauseMusic.Click;
   SysTray.Active := true;
   ShowWindow(Handle,SW_HIDE);
   ShowWindow(Application.Handle,SW_HIDE);
   SilentClose := true;
end;

procedure TfrmGame.MenuOpenWinowClick(Sender: TObject);
begin
   if MenuShowClock.Checked then ClockForm.Show;
   ShowWindow(Handle,SW_SHOW);
   ShowWindow(Application.Handle,SW_SHOW);
   SysTray.Active := false;
   MenuPlayMusic.Click;
   MenuContinue.Click;
   SilentClose := false;
end;

procedure TfrmGame.MenuSilentClickClick(Sender: TObject);
begin
   Close;
end;

procedure TfrmGame.MenuOpenDiskClick(Sender: TObject);
begin
   ShowMessage('感谢您支持蓝色雨工作室!有时间请访问蓝色雨工作室的站点http://proglife.126.com!谢谢使用!');
end;

procedure TfrmGame.FormResize(Sender: TObject);
begin
   if (frmGame.Width < PanelBack.Width + 30) then
      frmGame.SetBounds(frmGame.Left,frmGame.Top,
                        PanelBack.Width + 30,frmGame.Height);
   if (frmGame.Height < PanelBack.Height + 50) then
   begin
      frmGame.SetBounds(frmGame.Left,frmGame.Top,
                        frmGame.Width,PanelBack.Height + 50);
      PanelBack.Top := 0;//Round((frmGame.Height - PanelBack.Height)/2);
   end
   else
      PanelBack.Top := Round((frmGame.Height - PanelBack.Height)/2) - 30;

   PanelBack.Left:= Round((frmGame.Width - PanelBack.Width)/2);
end;

procedure TfrmGame.MenuFormColorClick(Sender: TObject);
begin
   MenuPause.Click;
   if ChgBkDlg.Execute then
   begin
      WindowColor := ChgBkDlg.Color;
      SetWindowColor(ChgBkDlg.Color);
   end;
end;

procedure TfrmGame.MenuBackImageClick(Sender: TObject);
begin
   MenuPause.Click;
   if(OpenPicDlg.Execute)then
   begin
      BackImage.Picture.LoadFromFile(OpenPicDlg.FileName);
      BackImagePath := OpenPicDlg.FileName;
   end;
end;

procedure TfrmGame.MenuShowBackClick(Sender: TObject);
begin
   MenuShowBack.Checked := not MenuShowBack.Checked;
   BackImage.Visible := MenuShowBack.Checked;
end;

procedure TfrmGame.MenuBlockStyleClick(Sender: TObject);
var
   BlkStyFrm : TBlockStyleForm;
begin
   MenuPause.Click;
   BlkStyFrm := TBlockStyleForm.Create(Owner);
   BlkStyFrm.ShowModal;
   //BlockStyleForm.ShowModal;
   DrawMap(PaintBox.Canvas);
   BlkStyFrm.Free;
end;

procedure TfrmGame.FormClose(Sender: TObject; var Action: TCloseAction);
begin
   SaveSetting;
end;

procedure TfrmGame.FormShow(Sender: TObject);
begin
   SetWindowColor(WindowColor);
   MemoShow.Color := BkColor;
   MemoShow.Font.Color := clSilver xor BkColor;
   DrawMap(PaintBox.Canvas);
end;

procedure TfrmGame.MenuShowClockClick(Sender: TObject);
begin
   MenuShowClock.Checked := not MenuShowClock.Checked;
   if MenuShowClock.Checked then
      ClockForm.Show
   else
      ClockForm.Hide;
   Self.SetFocus;
end;

procedure TfrmGame.SaveDataTo(FileName: String);
var
   Data: TSaveData;
begin
   Data.NextId  := NextId;
   Data.Level   := Level;
   Data.MapData := Map;
   Data.Score   := Score;
   Data.CurLevS := CurLevelScore;

   if not SaveData(FileName,Data) then
      MessageBox(Handle,'存储档案失败!','错误',48);
end;

procedure TfrmGame.LoadDataFrom(FileName: String);
var
   Data: TSaveData;
begin
   if not FileExists(FileName) then
   begin
      MessageBox(Handle,PChar('档案文件'+FileName+'不存在!'),'错误',48);
      exit;
   end;

   if not LoadData(FileName,Data) then
   begin
      MessageBox(Handle,'读取档案失败!','错误',48);
      exit;
   end;

   MenuStart.Click;
   MenuPause.Click;

   NextId  := Data.NextId;
   Level   := Data.Level;
   Score   := Data.Score;
   Map     := Data.MapData;
   CurLevelScore := Data.CurLevS;

   LabelScore.Caption := '得分:' + IntToStr(Score);
   PaintBoxPaint(nil);
end;

procedure TfrmGame.SaveData1Click(Sender: TObject);
begin
   SaveDataTo('Save1.dat');
end;

procedure TfrmGame.SaveData2Click(Sender: TObject);
begin
   SaveDataTo('Save2.dat');
end;

procedure TfrmGame.SaveData3Click(Sender: TObject);
begin
   SaveDataTo('Save3.dat');
end;

procedure TfrmGame.SaveData4Click(Sender: TObject);
begin
   SaveDataTo('Save4.dat');
end;

procedure TfrmGame.SaveData5Click(Sender: TObject);
begin
   SaveDataTo('Save5.dat');
end;

procedure TfrmGame.LoadData1Click(Sender: TObject);
begin
   LoadDataFrom('Save1.dat');
end;

procedure TfrmGame.LoadData2Click(Sender: TObject);
begin
   LoadDataFrom('Save2.dat');
end;

procedure TfrmGame.LoadData3Click(Sender: TObject);
begin
   LoadDataFrom('Save3.dat');
end;

procedure TfrmGame.LoadData4Click(Sender: TObject);
begin
   LoadDataFrom('Save4.dat');
end;

procedure TfrmGame.LoadData5Click(Sender: TObject);
begin
   LoadDataFrom('Save5.dat');
end;

procedure TfrmGame.MenuSaveLoadClick(Sender: TObject);
begin
   //MenuPause.Click;
   if not MenuStart.Enabled then
      SaveDataItem.Enabled := true
   else
      SaveDataItem.Enabled := false;
end;

procedure TfrmGame.SaveDefaultItemClick(Sender: TObject);
begin
   SaveDataTo('Default.dat');
end;

procedure TfrmGame.LoadDefaultItemClick(Sender: TObject);
begin
   LoadDataFrom('Default.dat');
end;

end.

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -