?? umain.pas
字號:
{--------------------------------------------------------------
搞笑俄羅斯方塊
歷史:
-- 2001.6.9 v1.9.0 beta
加入 Splash 窗體
加入默認檔案功能
調整菜單文字和結構
加入存檔功能
改進鍵盤控制,可以任意定義鍵盤控制鍵
-- 2001.5.18 v1.8.3 beta (內部版)
加入時鐘功能
增加選關級別
-- 2001.5.15 v1.8.2 正式版
可以加入任意圖片作為方塊樣式
修正了分數顯示的bug
修正了讀取姓名的bug
修正了菜單使用的bug ...
-- 2001.5.13 v1.8.2 beta
修正 ScanEmptyLine 函數消除不能消行的錯誤
加入Shift 鍵快速下降,不過您要對準哦,按下shift鍵就不能
再挽回的哦!
-- 2001.5.11 v1.8.0
加入更換方塊圖象的功能!更加漂亮的方塊,最好的游戲感覺
同時保留原有方塊風格,您可以自由選擇
加入保存個人設置的功能,一次設置即可保存您的最佳游戲方案
修正了高分榜不能刷新的bug
-- 2001.5.11 v1.7.2
修正全屏恢復以后不能調整窗口大小的bug
徹底修正核心部分的一個困繞已久的bug,即多消行
修正長條組塊的旋轉式樣
修正方塊停止時延遲的bug
-- 2001.5.9 v1.7.0
增加智能調整窗口的功能,可以自由更改窗口大小
可以將窗口最大化
可以改變窗體顏色,允許載入背景圖片
突發事件隱藏功能更加完善,將程序隱蔽為一個disk圖標
并且可以任意恢復,隱藏時可以悄悄退出而沒有任何提示
-- 2001.5.8 v1.5.7
調整積分系統,可以跳關積分了
每滿了10000分,升一級
-- 2001.5.7 v1.5.6
加入快捷鍵 F12 迅速最小化
暫停游戲和音樂,如果要繼續游戲請手動恢復
-- 2001.5.7 v1.5.5
修正了覆蓋背景中的bug使改變背景成為可能
允許改變背景顏色
修正方塊顏色范圍,使太暗的顏色不會出現
增加重新開始游戲的功能
-- 2001.5.5 v1.5.3
修正了核心計算部分InitBlock初始化背景數組的bug
修正了龍虎榜不能正常顯示的bug
加入清除龍虎榜記錄的功能
-- 2001.5.4 v1.5
修正鍵盤不能響應的bug,修正
播放其他音樂文件時失去聲效的bug
加入龍虎榜功能。
-- 2001.4.25 v1.0
修正游戲中的錯誤,加入全屏
和音樂功能,提供聲效。
-- 2001.3.20
原型,提供最簡單的俄羅斯方
塊游戲功能,并帶有大量的錯誤。
---------------------------------------------------------------}
{ 俄羅斯方塊總控單元
全局變量及重要控件說明
MainTimer 控制方塊下降
StopTimer 控制方塊不能下降時的一段延時,用它來判斷方塊的下降是否結束
Score 總分
Level 當前等級
CurX,CurY 當前方塊坐標
BlockId 當前的方塊是那種形狀
NextId 下一個方塊是那種形狀
}
unit UMain;
interface
uses
Windows, Messages, SysUtils, Classes,
Graphics, Controls, Forms, Dialogs,
StdCtrls, ExtCtrls, Menus, ShellApi,
ComCtrls, UBox, USpeed, MPlayer,
URegMgr, SysTray, jpeg, ExtDlgs, IniFiles;
const
Version = ' v1.9.0 ';
BuildDate = '2001-6-9';
IniFile = 'game.ini';
type
TfrmGame = class(TForm)
PanelBack: TPanel;
LabelMess: TLabel;
LabelScore: TLabel;
LabelUsage: TLabel;
DateLabel1: TLabel;
DateLabel2: TLabel;
LabelLevel: TLabel;
LabelWrkRom1: TLabel;
LabelWrkRom2: TLabel;
LabelHomepage: TLabel;
DuckImage: TImage;
MemoShow: TMemo;
MainMenu1: TMainMenu;
MenuGame: TMenuItem;
MenuStart: TMenuItem;
MenuPause: TMenuItem;
MenuContinue: TMenuItem;
MenuExit: TMenuItem;
MenuOption: TMenuItem;
MenuFull: TMenuItem;
MenuSpeed: TMenuItem;
MenuKeyboard: TMenuItem;
MenuMusic: TMenuItem;
ItemOpenMusic: TMenuItem;
MenuAbout: TMenuItem;
MainTimer: TTimer;
StopTimer: TTimer;
OpenDialog: TOpenDialog;
PaintBox: TPaintBox;
MenuSound: TMenuItem;
menuStopMusic: TMenuItem;
menuPauseMusic: TMenuItem;
menuPlayMusic: TMenuItem;
MenuHighScore: TMenuItem;
MenuHomepage: TMenuItem;
MenuAboutme: TMenuItem;
MenuEMail: TMenuItem;
MenuChgBK: TMenuItem;
MenuReplay: TMenuItem;
MenuHide: TMenuItem;
MenuOpenWinow: TMenuItem;
MenuOpenDisk: TMenuItem;
MenuSilentClick: TMenuItem;
MenuFormColor: TMenuItem;
MenuBackImage: TMenuItem;
MenuShowBack: TMenuItem;
MenuBlockStyle: TMenuItem;
MenuShowClock: TMenuItem;
MenuSaveLoad: TMenuItem;
SaveDataItem: TMenuItem;
SaveData1: TMenuItem;
SaveData2: TMenuItem;
SaveData3: TMenuItem;
SaveData4: TMenuItem;
SaveData5: TMenuItem;
LoadDataItem: TMenuItem;
LoadData1: TMenuItem;
LoadData2: TMenuItem;
LoadData3: TMenuItem;
LoadData4: TMenuItem;
LoadData5: TMenuItem;
N7: TMenuItem;
N1: TMenuItem;
N2: TMenuItem;
N3: TMenuItem;
N4: TMenuItem;
N5: TMenuItem;
N6: TMenuItem;
ChgBKDlg: TColorDialog;
SysTray: TSysTray;
SysPopMenu: TPopupMenu;
Sound: TMediaPlayer;
Audio: TMediaPlayer;
BackImage: TImage;
OpenPicDlg: TOpenPictureDialog;
ImgBlock: TImage;
SaveDefaultItem: TMenuItem;
N8: TMenuItem;
N9: TMenuItem;
LoadDefaultItem: TMenuItem;
procedure FormKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
procedure MenuExitClick(Sender: TObject);
procedure MainTimerTimer(Sender: TObject);
procedure StopTimerTimer(Sender: TObject);
procedure MenuStartClick(Sender: TObject);
procedure MenuPauseClick(Sender: TObject);
procedure MenuContinueClick(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure MenuSpeedClick(Sender: TObject);
procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean);
procedure MenuKeyboardClick(Sender: TObject);
procedure LabelHomepageClick(Sender: TObject);
procedure ItemOpenMusicClick(Sender: TObject);
procedure AudioNotify(Sender: TObject);
procedure MenuFullClick(Sender: TObject);
procedure PaintBoxPaint(Sender: TObject);
procedure MenuSoundClick(Sender: TObject);
procedure MenuPlayMusicClick(Sender: TObject);
procedure MenuStopMusicClick(Sender: TObject);
procedure MenuPauseMusicClick(Sender: TObject);
procedure MenuHighScoreClick(Sender: TObject);
procedure MenuAboutmeClick(Sender: TObject);
procedure MenuHomepageClick(Sender: TObject);
procedure MenuEMailClick(Sender: TObject);
procedure MenuChgBKClick(Sender: TObject);
procedure MenuReplayClick(Sender: TObject);
procedure MenuHideClick(Sender: TObject);
procedure MenuOpenWinowClick(Sender: TObject);
procedure MenuSilentClickClick(Sender: TObject);
procedure MenuOpenDiskClick(Sender: TObject);
procedure FormResize(Sender: TObject);
procedure MenuFormColorClick(Sender: TObject);
procedure MenuBackImageClick(Sender: TObject);
procedure MenuShowBackClick(Sender: TObject);
procedure MenuBlockStyleClick(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure FormShow(Sender: TObject);
procedure MenuShowClockClick(Sender: TObject);
procedure SaveData1Click(Sender: TObject);
procedure LoadData1Click(Sender: TObject);
procedure SaveData2Click(Sender: TObject);
procedure SaveData3Click(Sender: TObject);
procedure SaveData4Click(Sender: TObject);
procedure SaveData5Click(Sender: TObject);
procedure LoadData2Click(Sender: TObject);
procedure LoadData3Click(Sender: TObject);
procedure LoadData4Click(Sender: TObject);
procedure LoadData5Click(Sender: TObject);
procedure MenuSaveLoadClick(Sender: TObject);
procedure SaveDefaultItemClick(Sender: TObject);
procedure LoadDefaultItemClick(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
procedure PlaySound(Filename: String);
function RandomColor:TColor;
procedure LoadSetting;
procedure SaveSetting;
procedure SetWindowColor(Col: TColor);
procedure SetFullScreen(Value: Boolean);
function GetName(var Name:string):Boolean;
procedure SaveDataTo(FileName: String);
procedure LoadDataFrom(FileName: String);
end;
var
frmGame: TfrmGame;
ChangingFilename : Boolean;//表示正在更換音樂文件
StopClick : Boolean;
SilentClose : Boolean; //是否出現退出提示
UseImgBlock : Boolean; //是否使用圖片方塊
GamePath : String;
BackImagePath: String; //背景圖片的路徑
WindowColor: TColor; //窗口背景顏色
DefaultMusic: String; //默認的背景音樂
implementation
uses
UKeyboard, UAbout, URecord, UBlockStyle,
UGetName, UClockFrm, USelKeyForm, USaveData,USplash;
{$R *.DFM}
function TfrmGame.GetName(var Name:string):Boolean;
var
GetNameFrm : TGetNameForm;
begin
GetNameFrm := TGetNameForm.Create(Owner);
Result := (GetNameFrm.ShowModal = mrOK);
if(Result)then
Name := GetNamefrm.NameEdit.Text;
GetNameFrm.Free;
end;
procedure TfrmGame.SetFullScreen(Value: Boolean);
begin
if(Value)then
begin
frmGame.BorderStyle := bsNone;
frmGame.WindowState := wsMaximized;
PanelBack.Top := Round((Screen.Height - PanelBack.Height)/2);
PanelBack.Left:= Round((Screen.Width - PanelBack.Width)/2);
end else
begin
frmGame.Width := 357;
frmGame.Height := 471;
PanelBack.Top := 0;
PanelBack.Left := 0;
frmGame.BorderStyle := bsSizeable;
frmGame.WindowState := wsNormal;
frmGame.Position := poScreenCenter;
end;
end;
procedure TfrmGame.SetWindowColor(Col: TColor);
begin
frmGame.Color := Col;
LabelMess.Color := Col;
LabelMess.Font.Color := clYellow xor Col;
LabelUsage.Color := Col;
LabelUsage.Font.Color := clYellow xor Col;
LabelScore.Color := Col;
LabelScore.Font.Color := clYellow xor Col;
PanelBack.Color := Col;
end;
procedure TfrmGame.LoadSetting;
var
Ini: TIniFile;
Path: String;
begin
Path := ExtractFilePath(Application.ExeName);
Ini := TIniFile.Create(Path+IniFile);
DefaultMusic := Ini.ReadString('Setting','DefaultMusic','game.mid');
if(FileExists(DefaultMusic))then
begin
Audio.FileName := DefaultMusic;
Audio.Open;
Audio.Play;
end
else
begin
MessageBox(Handle,'沒有缺省音樂文件,想消除此提示請在運行程序后指定一個背景音樂文件!','提示',64);
MenuStopMusic.Enabled := false;
MenuPlayMusic.Enabled := false;
MenuPauseMusic.Enabled := false;
end;
BackImagePath := Ini.ReadString('Setting','BackImage','');
if(FileExists(BackImagePath))then
BackImage.Picture.LoadFromFile(BackImagePath);
MenuFull.Checked := Ini.ReadBool('Setting','FullScreen',false);
MenuSound.Checked := Ini.ReadBool('Setting','SoundOpen',true);
MenuShowBack.Checked := Ini.ReadBool('Setting','ShowBkImage',true);
SetFullScreen(MenuFull.Checked);
BackImage.Visible := MenuShowBack.Checked;
BkColor := Ini.ReadInteger('Setting','GameBkColor',4210688);
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -