实例5--打地鼠(界面实现)

上传人:wt****50 文档编号:35383034 上传时间:2018-03-15 格式:DOC 页数:5 大小:1.20MB
返回 下载 相关 举报
实例5--打地鼠(界面实现)_第1页
第1页 / 共5页
实例5--打地鼠(界面实现)_第2页
第2页 / 共5页
实例5--打地鼠(界面实现)_第3页
第3页 / 共5页
实例5--打地鼠(界面实现)_第4页
第4页 / 共5页
实例5--打地鼠(界面实现)_第5页
第5页 / 共5页
亲,该文档总共5页,全部预览完了,如果喜欢就下载吧!
资源描述

《实例5--打地鼠(界面实现)》由会员分享,可在线阅读,更多相关《实例5--打地鼠(界面实现)(5页珍藏版)》请在金锄头文库上搜索。

1、实例五 打地鼠(界面实现部分)【程序说明】打地鼠是一个以前非常流行的游戏,这个游戏的版本也是层出不穷。虽然游戏界面一直在变换,但是 它的核心代码却变化不大。由于程序的完整代码较长,这里分两个实例来说明这个游戏:界面实现部分和 主体部分。前者主要讲解游戏的界面是如何实现的,后者则阐述游戏的主要设计思想和具体的实现代码。 本例的程序运行结果如图 4-1 所示。图 5-1 打地鼠【编程思路】 一个成功的游戏除了要有好的游戏思想之外,还必须有精美的素材。这些素材包括图像、声音和影象 等。素材的加入可以使游戏更加具有趣味性。而事实上,这些素材的准备和搭配就往往要占去游戏开发的 很大一部分时间。下面是本例

2、素材的基本实现方法和步骤: 1、用专业的资源制作工具,如图像制作工具,声音制作工具来编辑制作资源文件,将这些文件保存 到同一目录下。 2、用记事本新建一个 RC 文件(在保存时选择文件类型为“所有类型” ,文件名中键入*.rc) 。比如本 例的这个资源文件的 rc 文件内容见图 5-2。注意 RC 文件的格式:名称 类型 实际文件名称。特别要注意图 5-2 本例用到的 graphics.rc 文件的是要确保实际名称是有效存在的。而且.资源类型除 CURSOR、BITMAP、WAVE、AVI 、ICON 等外, 还可以字体文件或字符串文件等。本例也有这方面的涉及。 3、将 rc 文件编译成 re

3、s 资源文件。 将 RC 文件和实际资源文件拷到系统盘根目录或 Brcc32.exe 下 (目录为 X:BorlandDelphi7Bin) ,执行 Delphi 提供的:Brcc32 命令:Brcc32 graphics.rc (回车)。如果编译 成功,则会生成一个结尾为 res 的文件,这个文件就是我们需要的资源文件graphics.res。选择菜单 Tools|Image Editor,然后在 Image Editor 中选择 File|Open,选中 graphics.rc 就可以查看这个文件的内容, 如图 5-3 所示。图 5-3 graphics.res 内容4、将生成的 grap

4、hics.res 资源文件拷贝到你所编程序的路径下,在单元文件$R *DFM后或主程序的 $R *.RES后加上一句$Rgraphics.res,则将 res 文件加入去,编译后资源文件即已包含在可执行文件中 了。若有多个资源文件,也按上法依次加入。 5、最后是资源文件在 Delphi 中的调用方法。具体可参考下面的代码。 【编程步骤】.1首先,按【编程思路】的方法设计游戏素材。然后,选择 File|New|Application,新建一个应用程 序。 2主窗口设计。首先向 Form 上添加 2 个 Timer、1 个 PopupMenu,然后对这些控件进行布局,2 个 Timer 的 Nam

5、e 分别是 ScoreTimer 和 RatTimer,Enabled 分别为 False 和 True,Interval 分别为 1000 和 40,如图 4-2 所示。这个窗口是作为主窗口的(图 5-1 的下半部分) 。图 5-3 主窗口的控件和窗口布局3控制窗口设计。选择 File|New|Form,然后向 Form 上添加 7 个 Image 和 1 个 ImageList,如图 5-4 所示。双击 ImageList1,然后按 Add 载入 10 个数字位图,如图 5-5 所示。图 5-4 控制窗口图 5-5 ImageList1 的内容4编写代码。 打地鼠游戏分为两个部分来说明。本

6、部分的代码大都是面向界面的,而且由于篇幅有限,只介绍主要 的代码。完整代码可以参考光盘内容。 (1)在程序运行后,要进行一些必要的设置:初始数据的设置,素材的载入和具体的位置,计时设 置,等。这些都是通过下列代码来实现。在这段代码中,有不少自定义的函数,这在代码中说明。 procedure TMainForm.FormCreate(Sender: TObject); varmyRgn : HRGN;round : integer;btnOrder : MenuButtonOrder; begin程序运行的初始设置GameRunning := FALSE;GamePause := FALSE;I

7、nitData; /初始数字的设置HandStatus := Hand_Up; /锤子松开设置素材的位置和显示BackGroundBitmap := TBitmap.Create;BackGroundBitmap.LoadFromResourceName(hInstance, BACKGROUND);BufferBitmap := TBitmap.Create;BufferBitmap.Width := BackGroundBitmap.Width;BufferBitmap.Height := BackGroundBitmap.Height;MainForm.ClientWidth := Ba

8、ckGroundBitmap.Width;MainForm.ClientHeight := BackGroundBitmap.Height;OKUPButtonBitmap:= TBitmap.Create;OKUPButtonBitmap.LoadFromResourceName(hInstance, OKUP);OKDOWNButtonBitmap:= TBitmap.Create;OKDOWNButtonBitmap.LoadFromResourceName(hInstance, OKDOWN);CtrlBitmap := TBitmap.Create;CtrlBitmap.LoadFr

9、omResourceName(hInstance, CONTROL);for btnOrder := btnOrderNEW to btnOrderABOUT dobeginMenuButtonBitmapbtnOrder, btnUP := TBitmap.Create;MenuButtonBitmapbtnOrder,btnUP.LoadFromResourceName(hInstance, MenuButtonImageNamebtnOrder, btnUP);MenuButtonBitmapbtnOrder, btnOVER := TBitmap.Create;MenuButtonBi

10、tmapbtnOrder, btnOVER.LoadFromResourceName(hInstance, MenuButtonImageNamebtnOrder, btnOVER);MenuButtonBitmapbtnOrder, btnDown := TBitmap.Create;MenuButtonBitmapbtnOrder, btnDown.LoadFromResourceName(hInstance, MenuButtonImageNamebtnOrder, btnDOWN);end; 图像窗口的实现round := 128;MainForm.Brush.Style:=bsCle

11、ar;myRgn := 0;GetWindowRgn(MainForm.Handle, myRgn);DeleteObject(myRgn);myRgn:= CreateroundRectRgn(0,0,MainForm.Width,MainForm.Height, round, round);SetWindowRgn(MainForm.Handle, myRgn, TRUE);SpriteBitmap := TBitmap.Create;SpriteBitmap.LoadFromResourceName(hInstance, SPRITE);MaskBitmap := TBitmap.Cre

12、ate;MaskBitmap.LoadFromResourceName(hInstance, MASK);BitBlt(BufferBitmap.Canvas.Handle, 0, 0, BufferBitmap.Width, BufferBitmap.Height, BackGroundBitmap.Canvas.Handle, 0, 0, SRCCOPY);RatTimer.Enabled := FALSE;LeftTime := 59;Score := 0;Left := (Screen.Width - Width) div 2;Top := (Screen.Height - Heigh

13、t) div 2; end; (2)当主窗口显示之后,控制窗口也同样显示在主窗口的上面,这是下面的代码实现的。注意在 MainForm 的 implementation 后加入 uses Ctrl。 procedure TMainForm.FormShow(Sender: TObject); begin/游戏上半部分界面的显示位置CtrlForm.Left := MainForm.Left + 69;CtrlForm.Top := MainForm.Top - 100;CtrlForm.Show; end; (3)下面是控制窗口出现的代码,其目的同样也是为了加载素材和进行一些基本设置。 pro

14、cedure TCtrlForm.FormCreate(Sender: TObject); varoffset : cardinal;i : integer; begin控制窗口出现的一些基本设置CtrlForm.ClientWidth := CtrlBitmap.Width;CtrlForm.ClientHeight := CtrlBitmap.Height;CtrlForm.Canvas.Draw(0, 0, CtrlBitmap);MenuImage.Width := 12;MenuImage.Height := 12;MenuImage.Top := 2;MenuImage.Left

15、:= 2;MinImage.Width := 12;MinImage.Height := 12;MinImage.Top := 2;MinImage.Left := CtrlForm.ClientWidth - 14;MinUPBitmap := TBitmap.Create;MinUPBitmap.LoadFromResourceName(hInstance, MINUP);MinDOWNBitmap := TBitmap.Create;MinDOWNBitmap.LoadFromResourceName(hInstance, MINDOWN);MenuBitmap := TBitmap.C

16、reate;MenuBitmap.LoadFromResourceName(hInstance, MENU);MinImage.Picture.Bitmap := MinUPBitmap;MenuImage.Picture.Bitmap := MenuBitmap;offset := Cardinal(NewBtnImage);i := 0;while offset = Cardinal(AboutBtnImage) dobeginPTImage(offset).Tag := i;PTImage(offset).Width := 30;PTImage(offset).Height := 25;PTImage(offset).Top := 75;PTImage(offset).Left := 25+i*55;PTImage(offset).Picture.Bi

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 生活休闲 > 社会民生

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号