好文档就是一把金锄头!
欢迎来到金锄头文库![会员中心]
电子文档交易市场
安卓APP | ios版本
电子文档交易市场
安卓APP | ios版本

实验1游戏框架和2碰撞检测.doc

6页
  • 卖家[上传人]:s9****2
  • 文档编号:455785503
  • 上传时间:2022-12-19
  • 文档格式:DOC
  • 文档大小:258KB
  • / 6 举报 版权申诉 马上下载
  • 文本预览
  • 下载提示
  • 常见问题
    • 实验1 游戏框架和碰撞检测」、实验目的:1、 理解游戏程序的基本框架结构2、 掌握Java 2D图形设计和动画设计的方法3、 掌握Java 2D动画设计的方法4、 理解2D游戏中物体的基本运动规律5、 掌握2D游戏中的碰撞检测方法:■、实验内容和步骤:1、 任何类型的计算机游戏都有类似的基本框架结构,游戏程序的主体是一个循环,每次 循环完成如下两步工作:(1) 更新游戏逻辑:要首先获取用户输入,然后根据用户的输入,修改游戏中描述各 个角色和元素属性的相关数据;(2) 绘制下一帧游戏画面:根据上一步更新的数据,在屏幕上绘制新的一帧游戏画面2、 Java语言使用 Graphics类和Graphics2D类来绘制2D图形和图像使用 Graphics类可以绘制简单的图形和多边形; Graphics2D类是Graphics类的派生类,除了可以绘制各种图形,还可以使用它完成图形的平移、伸缩、裁剪等坐标变换等复杂的操3、 稳定的帧速率可以使游戏的画面既流畅、又稳定,实践证明当动画的帧速率在 30帧/ 秒以上时,游戏动画看上去比较流畅;同时必须把游戏画面的帧速率控制在一个较小的范围内,以达到动画稳定的效果。

      4、 可以使用Java的多线程程序设计技术来获得稳定的动画帧速率;也可以使用 Java语言中的Timer类和TimerTask类相配合,以获取稳定的画面帧速率5、 本次实验的第一个任务要求学生设计程序, 以稳定的帧速率实现小球弹跳的动画效果6、 程序运行画面如图1.1所示图1.1 匀速弹跳的小球7、在2D游戏中,物体的运动可以分成直线运动和曲线运动两种类型;其中直线运动又可 以分成匀速直线运动和加速直线运动;曲线运动可以分成匀速曲线运动和加速曲线运 动匀速直线运动的物体坐标计算公式为:x=x+dx , y=y+dy加速直线运动的物体坐标计算公式为:x=x+dx, y=y+dy, dx=dx+dcx, dy=dy+dcy8、 2D游戏中有2种常用的碰撞检测方法:(1) 边界检测法:判断两个物体的坐标范围是否存在交集2) 中心检测法:计算两个物体中心的距离, 判断它是否小于一个指定的值 (例如判断两个圆型的圆心距离是否小于大圆的半径 )9、 本次实验的第二个任务要求学生编写程序实现小球打砖块游戏游戏的开始画面如图1.2所示:图1.2 打砖块游戏开始画面10、 游戏开始时,小球停在下方的档板上静止不动, 当玩家按下空格键后, 小球开始向斜上方做匀速直线运动,如果小球碰到上方的砖块,则被碰到的砖块消失。

      若小球碰至U窗体的上边界和左右边界,就被弹回继续做匀速直线运动玩家可以用键盘上的左 右箭头键来操作档板,使其左右移动;当小球向下方运动时,如果小球碰到档板,则 被档板弹回;否则,如果小球没有碰到档板,则飞出窗体下边界,这时可以回到游戏 的初始状态(档板回到窗体下部中间位置,其上出现一个静止的小球,但砖块的数目 保持不变),玩家可以再次开始游戏,直到把所有砖块打掉为止11、 设计三个类Pad类、Block类和Ball类分别表示档板类、砖块类和小球类每个类中都有更新自身状态的 update方法和绘制自身的 draw方法12、 再设计两个类: GamePanel类和 GameFrame类,GamePanel类是Panel类的子类,是用来显示游戏画面的面板窗体,同时 GamePa nel类还用来接收并响应用户的输入GameFrame类是Frame类的子类,其内容窗格是 GamePanel类的对象三、实验重、难点:12、(1)(2)(3)R13、4、dy不变;否dy不变;否R3,当碰撞发(dx>0) , dx变为相反数(dx<0) , dx变为相反数图1.3 小球与砖块的碰撞情况小球与档板的碰撞发生在档板的上部,可采用类似与砖块的碰撞检测方法来实现,但是简 单的处理会存在两个缺陷(bug):(1) 即将掉落出窗口下边界的小球有可能会被移动而来的档板“救”回来。

      这种情况 产生的原因是档板在移动的过程中,其下部区域与小球发生了碰撞可以通过缩小碰撞检测区域的方法来解决这个缺陷 (bug)如图1.4所示,只让小球与档板的上部区域进行碰撞检测2) 另一个缺陷是已经与档板发生了碰撞的小球在档板内部反复与档板发生碰撞,如图1.5所示解决这 个缺陷 的方法之 一是可 以设置一个布尔 类型的 变量, padCanBounee,当其值为true时对小球与档板进行碰撞检测, 一旦发生碰撞后就 将该值设置为false 为了使画面中活动的物体没有闪烁的现象,需采用“双缓冲机制”来绘制动画画面: 活动物体的闪烁现象是由不断的擦除和重绘操作造成的,为了消除闪烁,可以在一个 单独的缓冲区中绘制游戏的下一帧画面,然后再把它完整的显示到屏幕上,这种方法 称为"双缓冲机制”当小球碰到窗体的边界时,会发生弹跳,这时需要进行碰撞检测碰撞检测是游戏程 序设计中的一项常用技术如何获取稳定的帧速率是本次实验设计的一个难点碰撞检测技术是本游戏的重点和难点在游戏中,运动的小球会与三种不同物体发生 碰撞,它们分别是窗体边界、转块和档板与窗体边界的碰撞检测最简单,可使用边 界检测法实现;与砖块的碰撞检测处理最复杂,因为小球可以从不同的方向和砖块发 生碰撞,碰撞后小球的弹射方向也不相同;而小球与砖块的碰撞部位不同,也会影响 小球的弹射方向。

      可把小球与砖块的碰撞分成以下几种情况进行检测和处理:如图1.3所示,可以把一个砖块划分成三个不同的区域 R1、R2和生在R2区域:dy变为相反数,dx不变当碰撞发生在 R1区域时,若来球方向为左贝打dy变为相反数,dx不变当碰撞发生在 R3区域时,若来球方向为右贝U, dy变为相反数,dx不变R2^—R31 «反弹出界图1.4 只让档板的上部与小球进行碰撞检测图1.5 应避免档板多次与小球发生碰撞四、实验要求:1、 每位同学提交一份纸质实验报告,实验报告中应包含实验目的、实验步骤、实验结果、 实验总结等内容2、 每位同学独立完成程序,并提交程序的电子版。

      点击阅读更多内容
      关于金锄头网 - 版权申诉 - 免责声明 - 诚邀英才 - 联系我们
      手机版 | 川公网安备 51140202000112号 | 经营许可证(蜀ICP备13022795号)
      ©2008-2016 by Sichuan Goldhoe Inc. All Rights Reserved.