游戏程序设计之基本框架.ppt

上传人:zhu****ei 文档编号:3419810 上传时间:2019-12-14 格式:PPT 页数:16 大小:444.50KB
返回 下载 相关 举报
游戏程序设计之基本框架.ppt_第1页
第1页 / 共16页
游戏程序设计之基本框架.ppt_第2页
第2页 / 共16页
游戏程序设计之基本框架.ppt_第3页
第3页 / 共16页
点击查看更多>>
资源描述
第3章游戏程序的基本框架(2)建立游戏循环,游戏程序设计教程人民邮电出版社作者:何青出版时间:2011年ISBN:9787115248428,内容提要,游戏循环双缓冲机制游戏程序框架多线程机制Applet游戏框架,问题导入:绘制一个小球,回顾:Java2D绘图框架提问:如何使其移动?回答:移动图形显示,游戏的最基本特征,进一步提问:如何移动图形显示?回答:不断地改变图形显示的位置,并重新绘制在屏幕上那么:技术上如何实现?回答:使用程序的循环结构,While()改变小球坐标;重新绘制;,1.移动的小球,提问:while()循环放在何处?选择1:放在主类(GameFrame)选择2:放在子类(drawBall)步骤a:添加gameLoop()方法publicvoidgameLoop()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()方法清屏,问题3:为什么屏幕闪烁?原因:在同一个绘图表面上反复绘制并擦除解决:使用双缓冲机制(要点2),离屏渲染(RendertoOff-Screen),前屏显示(DrawtoOn-Screen),离屏渲染操作:步骤a:建立一个Image对象,并获取其Graphics对象(图象缓冲区)Imageim;im=creatImage(width,height);Graphicsdbg=im.getGraphics();步骤b:在Image上渲染图形dbg.setColor(Color.blue);dbg.fillOval(x,y,diameter,diameter);,前屏显示操作:步骤a:获取当前屏幕的Graphics对象Graphicsg=this.getGraphics();步骤b:绘制Image图象缓冲区中的内容g.drawImage(im,0,0,null);步骤c:释放当前屏幕的Graphics对象g.dispose();,实现更加复杂的移动,改进1:斜向移动改进2:小球移出边界后从另一边出来改进3:随机移动改进4:弹跳(作业),使用Random类,2.游戏的运行框架,对gameLoop()中的代码进行封装:gameLoop()while(true)gameUpdate();gameRender();gamePaint();,更新游戏逻辑,离屏渲染,前屏绘制,要点3:游戏框架,3.创建新的线程,为何创建新线程?作用1:减轻主线程压力,提高执行效率主线程用于响应用户事件子线程-用于处理游戏循环创建步骤:a.在drawBall类上实现Runnable接口b.将游戏循环放置在run()方法中c.实例化线程并启动(Thread.start(),作用2:获得稳定的FPS(帧速率)(要点4)Tread.sleep(sleepTime);如何合理设置sleepTime?另外的选择:使用TimerTask类(自学),在屏幕绘图一次称为一帧,FPS表示每秒绘制的帧数,5080较合适,4.移植到Applet版本,继承Applet类,并实现Runnable接口重载线程的run()方法,加入游戏循环代码重载Applet.int(),初始化重载Applet.start(),建立并启动线程重载Applet.stop(),终止线程,
展开阅读全文
相关资源
相关搜索

当前位置:首页 > 图纸专区 > 课件教案


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!