
学习情境2之手机游戏系统界面设计与开发教案.doc
14页移动应用程序开发实践 学习情景 2 游戏系统的界面设计与开发学习情境 2 之“游戏系统界面设计与开发”教案学习领域:移动应用程序开发学习情境:游戏“迷失森林”学习任务 1:游戏系统的界面设计与开发学习单元一 游戏系统设计 学习单元:游戏系统设计授课班级: 教学时间 教学地点:应具备的职业能力:了解游戏设计的组成部分 游戏界面设计 游戏逻辑设计 记录管理系统游戏系统分析 项目功能需求分析 技术支持和产品定位 项目概要设计 游戏策划 游戏的剧本编写教学目标:了解、熟悉和掌握:1、了解项目的需求分析2、了解项目的概要设计3、了解游戏设计的特点4、了解项目的两大组成部分5、了解项目的剧本编写教学重点难点:1、项目的两大组成部分2、项目的剧本编写教学方法:“讨论式”、 “问题牵引”, “项目驱动”等教学方法教学过程设计:移动应用程序开发实践 学习情景 2 游戏系统的界面设计与开发第一部分:复习上次课程的内容(15 分钟左右)–公交车查询算法和整体结构第二部分:本次课程内容(75 分钟)1、使用问题牵引的方式来引入本次课程内容如何进行游戏设计?2、项目需求“公欲善其事,必先利其器” ,做项目之前第一步是前期需求分析。
首先就是要搞清楚我们要做什么,为什么这样做,做成什么样,那些不做已经与现代生活方式紧紧地结合在一起属于最普遍携带的个人用品中仅次于钥匙和钱包的东西用户都可以随时、随地进行游戏尽管每个游戏都不贵,但是巨大的使用量将使得这个市场商机无限一个成功的游戏大多具有以下特征: 易于学习:既然游戏面向的是普通消费者而不是计算机专家,那么他们不可能深入的学习游戏技巧保持游戏的简单是最基本的要求 可中断性:多任务处理是生活方式的基本特征而通话、游戏、日历管理、通讯和工作数据访问使用的是同一个设备所以一个好的游戏应该提供短时间的娱乐功能,并且允许用户在游戏和工作模式之间顺利切换 丰富的社会交互:不管一个游戏设计得多好,只要玩家找到了它的根本模式或者玩完了所有的游戏路径很快就会厌烦这个游戏对于一个基于订阅的游戏,重要的是与别的玩家合作以增强所玩游戏的智力和随机性在今天纷繁复杂的多玩家游戏中具有丰富社会交互的游戏证明是成功的 利用技术的优点:巨额的技术研发费用都花在提高设备和网络的可用性和可靠性上面因此,设备硬件和网络协议与桌面/控制台世界(如全球定位系统(GPS)扩展、条形码扫描仪、和短消息服务(SMS)/多媒体信息服务(MMS)通讯)有着非常大的差别。
好的游戏应该利用那些更新的设备特征和网络基础设备的优点 无违法内容:既然所有年龄/性别的人群都玩游戏并且常常在公共/ 工作场合,就应该避免明显的暴力或者色情内容大致了解了目前游戏的情况后,我们准备做一个在上运行的休闲类游戏,虽然不满足上述的全部条件,但此项目还是有一定的可行性的: 范围性:目前日益普及化,大部分城市几乎是人手一部,游戏有着良好的用户群体,发布、传播方便,这个先天优势是其它平台游戏所不能比拟的 随意性:目前能进行游戏的平台种类繁多,大至街机、电脑、电视游戏机,小至掌上便携游戏机、PDA 等但它们都有一个共同的地方,就是都需要特定设备的支持,虽然掌上游戏机能随时随地地进行游戏,但也需要用户携带额外的设备外出,存在一定的局限性,如何才能最大限度地提高用户游戏的自由度呢?在满足了用户通话需求的情况下,游戏作为上的一种娱乐性增值服务,能让用户真正地随时随地进行游戏而不需要额外携带特定的游戏设备 娱乐性:上的游戏以休闲类的为主,大部分在上进行游戏的用户并不是核心玩家,对游戏的要求不如核心玩家高,游戏只是他们放松或等待中打发时间的一种手段,这样便要求游戏的进程时间短,能随时开始,也能随时结束,毕竟的主要作用还是通话,需要长时间大精力进行的游戏不适合,而休闲类游戏刚好满足此类用户的需求。
目前的机能日益强大,能处理更为丰富的图形和效果,游戏的规模一般不大,必须通过可玩性、可重复性移动应用程序开发实践 学习情景 2 游戏系统的界面设计与开发和图形特效来满足用户的游戏需求,游戏进程在精不在长,简单的操作配合细致的像素图形,同样能为用户提供丰富的娱乐性3、总体设计 游戏策划在设计一个游戏之前,一定要先作个调研,看看这类游戏的适用对象、投资规模和市场等因素对于一般的游戏在开发之前要搞清楚以下问题: 剧本编写 规则设计 关卡设计 逻辑功能外部图形导入:设定场景范围,即屏幕边界,所有元素事件都必须在该范围内进行,范围的大小设置为 16×16 像素的倍数场景、元素绘制:导入人物图形,因为游戏的主角属于四方向行走,所以至少需要导入 4 帧的人物行走图像,如果需要使人物行走更为流畅真实,所需帧则更多图像每帧大小为 16×16 像素,也就是场景范围中的一个单位地图不可能通过直接导入图片或绘图来解决因为这样的话必须使用大型的图片,使得程序运行效率降低,体积变大,而且难于控制和处理过多的元素,也会因过多的大型图片而不能限制程序的大小,失去上程序的原则和 Java 的优势地图通过数组贴图的方法实现,即仅仅导入一个需要的地形图片,图片的大小为 N×16 像素,每 16×16 的位置为一种地形,然后通过编写地形数组和场景排列实现地图的贴图绘制。
这样不仅使得程序体积大大减少,也为地图的修改提供了极大的便利层次显示:使用 layerManager 来管理层次显示人物移动:人物的行走控制通过键盘响应事件实现,人物位置随时根据使用者的按键输入产生变化,每次移动的距离为 16 像素,移动后立即进行事件判断人物移动的时候需要考虑到是否碰撞到其它元素,例如接触障碍物的时候人物必须停止移动,碰到水晶的时候人物生命值变化而且水晶图片消失,这就要求每前进一步都需要对人物所处位置进行扫描与刷新,进行对应的事件相应元素碰撞处理:元素的显示与消除:元素的显示与消除,根据设置的的游戏逻辑决定某个元素当前的状态,每次显示与消除都必须刷新一次画面以保证全局的一致性胜利、失败判断:看生命值和人物的位置时间计算系统:用户运行完成游戏时需要有时间记录的功能如何采用合理的时间系统,需要进行适当的设计这个系统可以提供用户竞技的可能,在游戏不变的情况下多个使用者或许会为了更好的成绩而反复游戏数据更新:本文使用 RMS 数据库记录存储来表示生命值的增加和减少4、总结–概要设计–总体规划5、课后作业题和思考题思考题:如何分析设计一个游戏项目?第三部分:课堂专题讨论(10 分钟)1、游戏的特点?移动应用程序开发实践 学习情景 2 游戏系统的界面设计与开发在教学过程中出现的问题及解决办法学习单元二 游戏界面设计移动应用程序开发实践 学习情景 2 游戏系统的界面设计与开发学习单元:游戏界面设计授课班级: 教学时间 教学地点:应具备的职业能力:游戏系统的设计与开发 分析游戏系统用户界面的组成元素 设计用户界面、功能按钮布局 设计功能按钮的事件处理方法教学目标:了解、熟悉和掌握:1、了解 Canvas 类2、了解 Graphics 类3、掌握游戏界面设计的特点教学重点难点::掌握游戏界面设计的特点教学方法:“讨论式”、 “问题牵引”, “项目驱动”等教学方法。
教学过程设计:第一部分:复习上次课程的内容(15 分钟左右)如何设计游戏,以及游戏的特点第二部分:本次课程内容(75 分钟)1、使用问题牵引的方式来引入本次课程内容如何进行游戏界面设计?2、Canvas 类高级用户界面 API 是面向任务的,程序员无法控制这些组件在屏幕上的显示而低级用户界面 API 的控制权是赋予程序员的,程序员可以使用低级用户界面 API 在屏幕上画出自己想要的图形来这种低级用户界面 API 特别适合于游戏的开发,因此,关于游戏的开发主要是针对低级用户界面 API 的开发当然,在游戏开发过程中,也可以使用高级用户界面 API,这不过这两种用户界面不可以同时存在为了直接在屏幕上绘制线条、文本和形状,必须使用 Canvas 类该类提供了一个供MIDlet 在上面绘制的空白屏幕假设现在要在屏幕上绘制字符串“Hello-World” ,一种简单的方法是从 Canvas 类派生子类,Canvas 类是一个抽象类,扩展了 Displayable,并重载了 paint()方法为了能有程序开发人员控制接口的外观和行为,需要使用大量的初级用户接口类,尤其在游戏程序中,几乎完全依赖的就是 Canvas 抽象类进行绘图。
从程序开发的观点看,Canvas 类可与高级 Screen 类交互,程序可在需要时在 Canvas 中掺入高级类的组件Canvas 提供了键盘事件、指点杆事件(如果设备支持) ,并定义了允许将键盘按键映射为游戏控制键的函数键盘事件由键代码指定,但这样控制游戏会导致缺乏通用性,并不是每个设备的键盘布局都适合游戏的操作应当将键代码转换为游戏键的代码,以便硬件开发商能定义他们自己的游戏键布局本程序中,操纵用户人物运行的按键都定义为游戏控制键,这样便能适应所有的机器3、Graphics 类Graphics 类提供了简单的 2D 绘图功能它具有 24 位深度色彩的绘制能力,以三原移动应用程序开发实践 学习情景 2 游戏系统的界面设计与开发色分别各占一个字节表示其颜色程序只能在 paint()函数中使用 Graphics 绘制,GameCanvas 可调用 getGraphics()函数直接绘制在缓冲区上,可以在任何时间请求传输到前台其对象会被传给 Canvas 的 paint()函数,以便最终显示在没有 MIDP2.0 前,进行游戏绘图一般需要手动编程使用双缓冲需要在 paint()方法内所想要画的图形画在一张预先准备好的背景,等所有绘图操作都完成后再将背景的数据拷贝到实际的屏幕上。
Image 类提供了一个建立背景的静态方法 createImage(int width, int height),再利用 getGraphics()方法取得属于这个背景的 Graphics 对象,所进行的绘图操作都会作用在背景上,等到全部的绘图操作完成后,再调用 drawImage()方法将背景的数据复制到实际显示的屏幕上这样的技术在绘制动画时特别有用绘制动画时经常需要不断地更新画面,而更新画面的操作就是先将屏幕以 fillRect()的方式清除,再将下一张图片画在屏幕上,然而反复的清除及重绘会造成屏幕的闪烁现象(flicker) ,因此使用双重缓冲的好处就是在背景进行这个清除及重绘的操作,再将完成的绘图拷贝到屏幕上,由于用户看不到清除的操作,因此就不会出现闪烁的现象了不过在某些 MIDP的实现上已经加上了双重缓冲的支持,因此在处理前应先利用 Canvas 类的isDoubleBuffer()方法来判断PNG(Portable Network Graphics)格式是 MIDlet 唯一支持的图象格式,PNG 具体格式由 PNG Specification,Version 1.0 定义的。
PNG 格式提供透明背景的图象,这对绘制游戏画面和被操纵主角极有帮助元素之间或与障碍物碰撞时就不会因为背景有特定的颜色,显示出的效果像贴上的图片而缺乏真实感,物体之间轻微重叠时最上层图片也不会覆盖超过其有效象素外的部分PNG 格式图片中包含许多定义其图片特性的冗余部分(Chunks)这些代码包含在每一个单独的 png 格式图象中,然而如果将多个 png 图象合并在一张幅面稍大一些的整图中,多个 chunks 就可以得到精简,图片的大小可以得到控制使用 Image 类中的 createImage函数可从整图中分割出所需要的元素。












