免费预览已结束,剩余1页可下载查看
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
实例四 乒乓球【程序说明】学习工作之余,玩玩乒乓球也不失为一种锻炼大脑的好方法。但是,这里要实现的是一个电脑游戏,而不是真实的游戏,但是可以根据你个人的水平设置不同的级别。游戏开始后,乒乓球从右边发过来,你控制左端的球拍,将球接过去为赢,如果对方接球过来而你没有接住的话,就重新从右端发球。本例的程序运行结果如图4-1所示。图4-1 和电脑打乒乓球【编程思路】在前面的几个实例中已经知道一个较为完整的游戏开发是一个比较系统的开发工作。在游戏设计的过程中,设计思想应该走在代码设计之前。没有一个优秀的游戏思想,代码设计再出色也不会有好的游戏产生。本例实现的乒乓球游戏可以分为下面五个部分来实现:1、游戏的开始和退出控制游戏开始时的发球和退出时的释放资源。2、球拍和界面的更换主要是设置双方球拍、球桌、拦网和乒乓球的颜色。3、电脑对手的设计电脑根据乒乓球移动的位置调整自身的位置,以便能接住打过来的乒乓球。4、玩家对球拍的控制主要是通过、和四个键来实现对球拍的控制,以便接住电脑打过来的乒乓球。5、球速的设置玩家根据自身的水平对乒乓球运移速度进行设置。一个比较完整的游戏开发,其代码一般是比较复杂的。而且程序设计时最好能遵循模块化的思想,一个特定的模块完成的就是一个特定的游戏功能。【编程步骤】.1选择File|New|Application,新建一个应用程序。2添加控件和界面布局。向Form上添加1个RadioButton(乒乓球)、Shape(拦网)、MainMenu和TtrackBar,2个ColorDialog和Label,3个Panel(球拍和球桌)以及6个Timer等控件。3、控件属性设置。主要是设置RadioButton的Color和Panel1的Color一致(球和球桌,这样的设置可以使效果更加逼真一点),TrackBar1的position为4(一个中级水平的难度),然后参照图4-2设计主菜单。最后,本例在设计期间的控件属性和界面如图4-3所示。图4-2 主菜单设计图4-3 控件和窗口布局4编写代码。在编写具体的代码之前,要定义一些必要的全局变量。var Form1: TForm1; vleft,vdown,vup,right:boolean; /检测小球的运移 vasakult,paremalt:boolean; /检测电脑的速度 bspeed:integer; /显示小球的速度 patspeed:real; /球拍的速度 pat:boolean; /检测球拍 moveup,movedown:boolean; /向上,向下移动 comspeed:real; /电脑的球拍 ballspeed:integer; /小球的原始速度 implementation下面按照这个游戏的五个部分分别编写代码来实现。(1)游戏的开始和退出。procedure TForm1.NewGame1Click(Sender: TObject);begin /游戏的开始 patspeed:=0; pat:=false; ball.left:=panel2.left; ball.top:=panel2.top+panel2.height div 2; Timer3.enabled:=true; computer.enabled:=true;end;procedure TForm1.Eit1Click(Sender: TObject);begin /游戏的退出。关闭所有时钟,然后退出程序 Timer1.Enabled:=False; Timer2.Enabled:=False; Timer3.Enabled:=False; Timer4.Enabled:=False; Timer5.Enabled:=False; computer.Enabled:=False; Application.Terminate; end;(2)球拍和界面的更换procedure TForm1.N2Click(Sender: TObject);beginIf ColorDialog1.Execute Then /更换球台背景 Begin ball.Color:=ColorDialog1.Color; Panel1.Color:=ColorDialog1.Color; end;end;procedure TForm1.N3Click(Sender: TObject);beginIf ColorDialog2.Execute Then /更换球拍颜色 Begin Panel2.Color:=ColorDialog2.Color; Panel3.Color:=ColorDialog2.Color; Shape1.Brush.Color:=ColorDialog2.Color; end;end;(3)电脑对手的设计和玩家对球拍的控制procedure TFputerTimer(Sender: TObject);begin panel1是球桌,panel2是电脑的球拍,panel3是你的球拍if ball.leftpanel1.width thenbegin /超过右下端点 Timer2.enabled:=false; Timer5.enabled:=false; Timer4.enabled:=False; Timer3.enabled:=false; computer.enabled:=false; Timer1.enabled:=true;end;/根据球的方向来调整玩家的球拍位置if vleft=true thenbeginif panel3.left2 then panel3.left:=panel3.left-2;end;if vdown=true thenbegin if panel3.top+panel3.height2 then panel3.top:=panel3.top-4; end;/电脑对手的智能调整if ball.leftshape1.left then begin if panel2.top+panel2.height div 2ball.top then begin if panel2.top+panel2.heightball.top) then begin if panel2.top4 then panel2.top:=panel2.top-4; end;end; bspeed:=4; bspeed:=bspeed+Trunc(patspeed); bspeed:=bspeed *10;end;(4)球速的设置procedure TForm1.TrackBar1Change(Sender: TObject);begin ballspeed:=trackbar1.Position; /乒乓球的运动速度end;此外,本例用到的6个Timer控件都有各自的作用,computer的作用上面已经介绍了。其余5个Timer的作用是:Timer1主管发球,Timer2Timer5主管对乒乓球的左上移、右下移、右下移和左上移四个方向的控制。下面给出一个乒乓球右下移的操作代码,其余几个操作代码类似。procedure TForm1.Timer2Timer(Sender: TObject);begin /乒乓球右下移ball.left:=ball.left-ballspeed-trunc(patspeed);ball.top:=ball.top+ballspeed+trunc(patspeed);if patspeed0 then patspeed:=patspeed-0.1;if patspeedpanel3.left+panel3.width then begin if ball.top+ball.heightpanel1.height-ball.height then begin Timer2.enabled:=False; Timer5.enabled:=false; Timer4.enabled:=false; Timer3.enabled:=true; end; end;if (ball.leftpanel3.left)and(ball.toppanel3.top) then begin if(movedown=false)and(moveup=false) then begin Timer5.enabled:=true; Timer2.enabled:=false; Timer3.enabled:=False; Timer4.enabled:=false; end; if moveup=true then begin Timer5.enabled:=false; Timer2.enabled:=false; Timer3.enabled:=False; Timer4.enabled:=true; end; if movedown=true then begin Timer5.enabled:=true; Timer2.enabled:=false; Timer3.enabled:=False; Timer4.enabled:=false; end; end;end;5本例还涉及到其他的一些代码,但是由于篇幅的限制,这里不便全部列出来。书中附带的光盘里面包含有全部的源代码。完成所
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 麒麟操作系统教程(微课版) 课件 第6-10章 软件安装- 麒麟服务器操作系
- 麒麟操作系统教程(微课版) 课件 第7章 系统高级管理
- 涡阳就业指导服务平台
- 2026智能制造成熟度评估与辅导方案
- 教师新职业规划总结
- 2026年福建江夏学院教师招聘考试备考题库及答案解析
- 服装设计历史就业分析
- 专业就业指导专家课
- 2026浙江湖州市安吉雷博人力资源服务有限公司招聘2人考试参考题库及答案解析
- 2026年周口西华县中医院校园招聘30名考试备考题库及答案解析
- cjj932025生活垃圾卫生填埋场运行维护技术规程
- 2025新能源风电场规范化管理导则
- RCO运行管理制度
- 信息时代的生产技术-终考任务-国开(NMG)-参考资料
- 村委会工作报告模板
- 浙江省9+1联盟2024-2025学年高一下学期4月期中物理试题(PDF版含答案)
- 致敬劳动者争做劳动小先锋-劳动教育主题队会
- 建筑施工吊篮验收要求
- 2025年演出经纪人演出经纪实务考试题库(新版)
- 给童年留白读书分享
- 一年级日常家长会含内容课件
评论
0/150
提交评论