




已阅读5页,还剩12页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第四讲 建立游戏的运行框架,主要内容: 游戏的基本运行机制及其编写方法 重点: 游戏运行框架、AWT绘图机制、双缓冲机 制、用线程处理游戏循环 难点: 双缓冲机制、获得稳定的FPS 课时数:3,4.1 绘制一个小球,回顾:第三讲的绘图框架 (参见例4.1) 提问:如何使其移动? 回答:移动图形显示,游戏的最基本特征,进一步提问:如何移动图形显示? 回答:不断地改变图形显示的位置,并重新绘 制在屏幕上 那么:技术上如何实现? 回答: 使用程序的循环结构, While() 改变小球坐标; 重新绘制; ,4.2 移动的小球,提问:while()循环放在何处? 选择1:放在主类(GameFrame) 选择2:放在子类(drawBall) 步骤a:添加gameLoop()方法 public void gameLoop() while(true) x+; repaint(); 步骤b:在主类中调用drawBall对象的gameLoop()方法,改变小球绘制的坐标值,重新绘制屏幕,游戏的本质-死循环!,要点1: AWT图形绘制机制,AWT图形绘制机制,图形绘制代码放置在组件的paint()方法中 程序不能直接调用paint()方法来绘制组件,而需调用组件的repaint()方法来重绘该组件 repaint()首先调用update()方法,然后调用paint()方法,默认的update()将进行清屏操作 当多个repaint请求同时作用在同一个组件上时,由于事件处理线程无法及时作出响应,将导致合并为一个repait请求,操作并演示:加入gameLoop()方法 问题1:为什么没有显示小球? 原因:循环执行得太快,导致repait请求无法及时响应 解决:加入空循环 问题2:为什么不能直接调用paint() 原因:repaint()方法能调用update()方法清屏 (参见例4.2),问题3:为什么屏幕闪烁? 原因:在同一个绘图表面上反复绘制并擦除 解决:使用双缓冲机制(要点2),离屏渲染 (Render to Off-Screen),前屏显示 (Draw to On-Screen),离屏渲染操作: 步骤a:建立一个Image对象,并获取其Graphics对象(图象缓冲区) Image im; im=creatImage(width,height); Graphics dbg=im.getGraphics(); 步骤b:在Image上渲染图形 dbg.setColor(Color.blue); dbg.fillOval(x, y, diameter, diameter);,前屏显示操作: 步骤a:获取当前屏幕的Graphics对象 Graphics g = this.getGraphics(); 步骤b:绘制Image图象缓冲区中的内容 g.drawImage(im,0,0,null); 步骤c:释放当前屏幕的Graphics对象 g.dispose(); (参见例4.3),4.3 实现更加复杂的移动,改进1:斜向移动 改进2:小球移出边界后从另一边出来 改进3:随机移动 改进4:弹跳(作业),使用Random类,4.4 游戏的运行框架,对gameLoop()中的代码进行封装: gameLoop() while(true) gameUpdate(); gameRender(); gamePaint(); ,更新游戏逻辑,离屏渲染,前屏绘制,要点3:游戏框架,4.5 创建新的线程,为何创建新线程? 作用1:减轻主线程压力,提高执行效率 主线程用于响应用户事件 子线程-用于处理游戏循环 创建步骤: a. 在drawBall类上实现Runnable接口 b. 将游戏循环放置在run()方法中 c.实例化线程并启动(Thread.start(),作用2:获得稳定的FPS(祯速率) (要点4) Tread.sleep(sleepTime); 如何合理设置sleepTime? (参见例4.5) 另外的选择: 使用TimerTask类(自学),在屏幕绘图一 次称为一祯, FPS表示每秒 绘制的祯数, 5080较合适,4.6 移植到Applet版本,继承Applet类,并实现Runnable接口 重载线程的run()方法,加入游戏循环代码 重载A(),初始化 重载Applet.start(),建立并启动线程 重载Applet.stop(),终止线程 (参见例4.6),要点回顾,AWT绘图机制 repaint - update - paint 双缓冲机制 离屏渲染 vs 前屏绘制 游戏运
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 高三生物省考试卷及答案
- 自考(网络教育)安全监测监控技术考试试题及答案
- 肿瘤微环境调控-第16篇-洞察与解读
- 护理管理学自考试题及答案
- 交通限制效果评估-洞察与解读
- 2025年事业单位招聘考试综合类面试真题模拟试卷真题模拟精讲
- 2025年事业单位招聘考试综合类无领导小组讨论面试真题模拟试卷:时事热点挑战篇
- 2025年事业单位教师招聘化学学科专业知识试卷:试题解析与答案
- 2025年事业单位招聘考试综合类职业能力倾向测验真题模拟试卷(心理学)
- 2025年上海市浦东新区事业单位招聘考试综合类结构化面试真题模拟试卷(含解析)
- 温州市龙湾区卫生健康系统事业单位招聘卫生专业技术人员笔试真题2024
- 2025年抗肿瘤药物授权培训考核试题(含答案)
- 车辆年检服务合同5篇
- 2025年贵州省警(协警)招聘考试题库及答案
- 2026厦门银行秋季校园招聘笔试备考题库及答案解析
- (新教材)2025年秋期部编人教版二年级上册小学语文全册教案(教学设计)(新课标核心素养教案)
- TCCTAS 162-2024 公路中央分隔带组合型波形梁护栏技术规程
- (2024版)小学六年级数学考试命题趋势分析
- 钢结构冷库施工方案
- 教育评价学全套ppt课件完整版教学教程
- 产品模型制作教案
评论
0/150
提交评论