朕培创客 高中 Scratch 课件:21_贪食蛇游戏_第1页
朕培创客 高中 Scratch 课件:21_贪食蛇游戏_第2页
朕培创客 高中 Scratch 课件:21_贪食蛇游戏_第3页
朕培创客 高中 Scratch 课件:21_贪食蛇游戏_第4页
朕培创客 高中 Scratch 课件:21_贪食蛇游戏_第5页
已阅读5页,还剩22页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

本节目标,本节课即将学习贪食蛇游戏实现原理MVC设计模式,贪食蛇游戏,游戏规则方向键控制黑色小蛇前进碰到四周的墙壁、自己的身体游戏结束只能前进、左转、右转,向回走会碰到自己,立即“死亡”蛇头经过红色的食物,会吃掉食物;每次吃掉食物,得一分,蛇的长度会增加一节,贪食蛇游戏,游戏原理Snake角色,是黑色的一个小方块,代表蛇身体的一节,蛇身是由多节组成的;通过Snake角色的“图章”功能来绘制蛇身Eraser角色,是白色的一个小方块,大小和Snake角色相同;其颜色和背景色相同,利用Eraser角色的“图章”功能可擦除蛇身food角色,是红色的一个小方块,代表食物,大小和Snake角色相同,贪食蛇游戏,Snake角色代码蛇是本游戏的主角,其实现方式是游戏设计的核心其设计可分为模型和视图两部分模型负责蛇的内部数据表示视图负责蛇的界面显示,贪食蛇游戏,Snake角色代码蛇的模型蛇身由多节组成,每节在屏幕上都有一个坐标(x,y)用链表listX,listY代表蛇身体每节的坐标位置,listX存放横坐标x,listY存放纵坐标y,两个链表长度相等如果蛇身长4节,则listX,listY的长度都是4蛇身长度增加一节,通过在listX,listY中各增加一个数据来实现蛇身前进一步:根据前进方向,确定蛇头要进入的位置的坐标,假如是(x1,y1),那么将x1插入到listX的第一项,将y1插入到listY的第一项,然后删除listX,listY的最后一项就可以了,贪食蛇游戏,Snake角色代码蛇的视图通过将snake角色移到链表listX,listY中每个元素对应的位置绘制图章,就可以逐节绘制蛇身右边代码就完成上述功能,贪食蛇游戏,Snake角色代码为了提高效率,并不需要每次都要绘制整个蛇身程序开始时绘制完整的蛇身以后每次前进,只有蛇头和蛇尾发生变化,因此只要绘制新的蛇头,擦除原来的蛇尾就可以了右边代码实现绘制蛇头,变量headX和headY代表蛇头的横坐标和纵坐标,贪食蛇游戏,eraser角色代码,实现擦除蛇尾程序开始时,角色隐藏链表listX,listY代表蛇身体每节的坐标位置收到“清除尾格”消息后,将链表listX,listY最后元素取出,得到蛇尾即蛇身体最后一节的坐标,将角色移动到蛇尾位置,利用图章功能,将蛇尾一节绘制为背景色,实现视图中蛇尾被擦除一节的效果。删除链表listX,listY最后元素,从模型中删除蛇尾变量i是局部变量,可以避免使用全局变量可能导致的和其他角色脚本的冲突,贪食蛇游戏,Snake角色代码变量direct代表蛇前进的方向:0-向上;1-向右;2-向下;3-向左右边代码实现通过上下左右方向键来改变蛇前进的方向,贪食蛇游戏,Snake角色代码主控程序1、绘制游戏区域边框2、得分清0,建立snake链表模型listX,listY,绘制蛇完整身体3、将游戏开始标志变量running设置为1,贪食蛇游戏,Snake角色代码主控程序4、重复执行,进入游戏1)前进一步,根据前进方向修改蛇头坐标headX,headY,如果蛇头碰到边框或蛇身,将变量running设为02)如果running为0显示游戏结束,程序停止3)否则,将新的蛇头坐标插入链表listX,listY第一项,贪食蛇游戏,Snake角色代码主控程序4、重复执行,进入游戏4)绘制蛇头5)如果蛇头和食物位置相同,广播吃掉食物消息,使食物food角色改变到新位置出现。这样因为蛇头增长,蛇身变长一节6)否则,广播清除尾格消息,擦除蛇尾,抵消蛇头增长的一节,使蛇身长度不变,但前进一步,贪食蛇游戏,Snake角色代码绘制边框消息处理程序绘制边长为60的绿色正方形,正方形中心在(0,0),贪食蛇游戏,Snake角色代码游戏准备消息处理程序得分清0链表listX,listY清空方向向上插入10个坐标到listX,listY,代表初始长度为10节的蛇身,(0,9)(0,8)(0,7)(0,0)绘制完整蛇身,贪食蛇游戏,Snake角色代码前进一步消息处理程序1)根据前进方向修改蛇头坐标2)如果蛇头碰到边框,即坐标绝对值等于30,将变量running设为0,代表游戏结束,贪食蛇游戏,Snake角色代码前进一步消息处理程序3)检查蛇头位置是否与某一节蛇身位置重合,如果是,则将变量running设为0,代表游戏结束,贪食蛇游戏,food角色代码变量foodX,foodY代表角色的坐标程序开始时,将食物显示在(-5,3)这个位置收到“吃掉食物”消息后,将食物隐藏,得分加1,0.5秒后,在游戏屏幕范围内随机选择一个位置,将食物重新显示出来,设计模式,设计模式(Designpattern)是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结使用设计模式是为了可重用代码、让代码更容易被他人理解、保证代码可靠性等学习设计模式可以快速提高自己的程序设计能力和水平,MVC设计模式,使用MVC设计模式的应用程序被分成三个核心部件:模型、视图、控制器M(Model)是指数据模型、数据结构代表问题在计算机内部的描述方式V(View)是指视图、用户界面代表问题展现给用户的方式C(Controller)是指控制器代表视图和模型之间交互、互动的方式,MVC设计模式,视图视图是用户看到并与之交互的界面在视图中其实没有真正的处理发生,视图只是作为一种输出数据、并允许用户操纵程序的方式MVC一个大的好处是它能为你的应用程序处理很多不同的视图;例如网络游戏,不同玩家面对自己机器的视图可能不同,但能协同一致进行游戏,关键在于模型是相同的,MVC设计模式,模型模型表示数据和业务规则一个模型能为多个视图提供数据在MVC的三个部件中,模型拥有最多的处理任务,MVC设计模式,控制器控制器接受用户的输入并调用模型和视图去完成用户的需求当用户通过人机界面作出操作时,控制器本身不输出任何东西和做任何处理。它只是接收请求并决定调用哪个模型构件去处理请求,然后再确定用哪个视图来显示返回的数据,MVC设计模式,MVC设计模式的优点M和V的实现代码分离,从而使同一个程序可以使用不同的表现形式。比如一批统计数据你可以分别用柱状图、饼图来表示C存在的目的则是确保M和V的同步,一旦M改变,V应该同步更新,MVC设计模式的启示,设计一个程序要考虑如下几方面的问题模型怎样设计?内部用何种数据结构表示和描述问题界面如何展现?怎样将模型数据直观的展现或绘制出来怎样保持模型和界面的一致?如何根据用户的操作或程序运行的进展修改模型,模型改变后怎样通知界面刷新显示,MVC设计模式的启示,模拟时钟程序设计模型怎样设计?内部用shi、fen、miao三个变量描述时间界面如何展现?根据shi、fen、miao变量确定时针、分针和秒针的旋转角度怎样保持模型和界面的一致?定时修改模型,每隔1秒miao加1,每隔1分钟fen加1,每隔1小时shi加1;分、秒采用60进位,到59后下一次归0,小时到11后

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论