用Alice学编程12 list.pptVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
用Alice学编程12 list

第12讲 数组 数组的概念 一种数据的组织方式,如30个同学组成了一个班级;图书馆里有5000本书等。我们用数组来表达这个“集合”的概念。数组本身并不是数据类型,它是对属于某种数据类型的多个数据的组织方式。 一个数组往往作为一个集体去做某种动作,如一个合唱团的合唱动作,一个班级的做操动作,一个班级中的同学按顺序去交作业的动作,按顺序对一个班级的多个宿舍检查卫生等等。 在Alice中,用list 表达数组的概念 除了数组, 还有很多其它的组织数据的方式,如表、树、图等(在“数据结构”课程中学习)。 数组的类型 数组的类型指的是它所管理的数据的类型,如一个数值数组,布尔值的数组,颜色数组,对象数组等等。 例子1 Rockettes 舞蹈团的演出,我们希望舞蹈团的成员按顺序做踢腿动作。 Storyboard 创建一个数组(1) 创建一个数组(2) 使用数组 数组像一个容器,里面装了很多相同类型的对象,当我们需要让这个容器中的每个对象都做相同的动作时,我们需要去找到并通知每个对象。 按某种顺序找到这个对象,我们称之为数组的遍历。(考虑生活中收费员挨家挨户敲门收水费的例子) 如何遍历有多种方法,如顺序遍历、倒序遍历等。 数组的遍历 顺序遍历一个数组 For all in order的替换方案 For all in order是对一个数组中的所有对象顺序遍历一遍,让每个对象都做某个动作;单就这个动作来说,它是被执行了多次的,只不过每次执行者不一样罢了,这和循环语句有些类似。 如果使用循环语句loop,知道要循环的总次数,也能找到每次动作的执行者的话,也可以实现。 比较:Loop没有for in order方便,因为它必须指定循环的总次数 For all together 让数组中的对象同步做一个动作 遍历数组来kickup 为什么Alice不允许替换? World.dancers数组中管理的是对象类型,无论什么对象都可以加入其中,如ground也可以是该数组的一员,如果在上面的代码中,遍历到ground让它kickUp就会出错。 而Alice中内嵌的move,turn等方法对所有的对象都适用,所以可以替换 解决的方法:将kickUp定义为场景级的方法,它有一个对象类型的参数 将kickUp定义为场景级的方法 该例子中说明的概念 在Alice中,对于一个数组中的对象进行操作的方法应该定义为场景级。这也可以理解为:这个方法会被多次调用,而因为每次作用的对象都不一样,因此不能定义为类级的方法。 在对象节点的functions中,使用类似于rockette’s part named key函数来得到这个对象的某个部件. 搜索数组中的某个元素 找到数组中符合某个条件的对象,如遍历整个班级找到迟到5次以上的同学 例子:WacAMole.a2w 设计游戏 你需要回答以下几个问题: 游戏的运行过程是什么样的? 怎么来表示用户的成绩? 怎么知道用户点中了一只老鼠? 哪些对象应该是一个数组?如何用这个数组? 游戏的运行过程是什么样的? 随机的会有一只老鼠跳出来,当它出来时,用户可以尽快的用鼠标去点击它 如果击中了老鼠,就播放一段声音,同时增加一分 重复执行上面两个步骤直到分值为10,则游戏结束,即不再有老鼠跳出来 总体设计(1) Storyboard:总体设计 World.my first method Storyboard: popMole 怎么来表示用户的成绩? 用圆柱体表示成绩. 灰色的圆柱体表示满分;黄色的圆柱体表示当前用户的得分 2个圆柱体都是1米高。黄色的圆柱体开始时在地面下方,每次击中一个老鼠就上升0.1米。 当得到10分时,游戏结束。 怎么知道用户点中了一只老鼠? 创建一个数组,管理所有的老鼠 每当 用户鼠标点击时,就判断是否击中了跳出来的老鼠,如果击中,就调用计分方法score Demo WacAMole.a2w 该例子中说明的概念 可以随机选择数组中的一个元素 用一个圆柱体来表示分数,可以给用户视觉上的反馈。 作业12-1 人浪 本练习将使用For all in order语句。创建一个动画来模拟足球迷做出的“人浪”——一个经常在体育比赛中见到的动作。创建这样的初始场景,一个教练coach,student1,以及randomGuy2(People)都站在体育馆stadium(City)的草坪上。这三个人都有同样的身体结构。然后创建一个由场景中这三个人构成的列表。使用For all in order语句让每个人都依次将自己的手臂举起,来模拟“人浪”。 参考视频 12-1.swf 作业12-2 修改WhackAMole游戏 对WhackAMole游戏我们将做如下修改:游戏者必须将所有鼹鼠都击中后

文档评论(0)

xcs88858 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

版权声明书
用户编号:8130065136000003

1亿VIP精品文档

相关文档