论文部分内容阅读
摘要:Alice是一个在3D环境下编写程序的软件,使学生在利用信息技术分析和解决问题等方面的能力得到很好的提升,让学生在学习编程的过程中多一些探索和乐趣,能够帮助学生在实践中培养计算机思维方式,为以后程序设计课程的挑战做好准备。
关键词:Alice;3D环境;思维方式
中图分类号:TP311 文献标识码:A 文章编号:1009-3044(2016)12-0158-02
1 Alice简介
Alice项目是美国卡耐基梅隆大学的一个学术性的项目,Randy Pausch教授是该项目的创建人,他希望通过此项目教会青少年如何在3D环境下编写计算机程序,它是一种全新的学习编程的方法,只要用日常的语言,就可以让屏幕上的一切三维物体在虚拟世界里服从你的命令,你就可以自己导演电影和创作计算机游戏了。学生可以把图片贴到一个物体上,还可以给物体增加各种简单的动作和脚本,让虚拟世界里的物体具有灵活性。
Alice是为初学者设计的一种直观式的3D绘图软件,里面有许多事先设计好的绘图物件、检视工具和控制物件的工具,它不必学习复杂的程序语言就能掌握计算机绘图,就算是刚开始学3D绘图的人也能轻松学会。许多美国大学把Alice作为计算机专业的入门课程开设,很多学生在学习了Alice之后对计算机专业产生兴趣。Alice的使用非常容易,用它绘制出来的图形可以直接储存成网页,甚至还可以直接导演一部动画!
Alice是一个免费的工具,它可以让学生学习到最基本的编程概念,即使学生是第一次接触面向对象编程,也能很快学会创建动画电影和简单的视频游戏。
2 Alice的基本功能
Alice提供了一个可拖动的图形界面,它由场景区、对象树、代码编辑区、对象列表、方函数方法细节区等六个部分组成。使用Alice编程你不需要自己写类和对象,它自身就提供了大量的对象库,只用根据提供的类创建对象即可。同样的,使用Alice也不需要写任何代码,只需要拖动对象的方法、函数块到代码区,Alice会根据提示自动生成代码,如图1:
2.1 创建一个项目
1)Alice创建一个项目,首先要进行场景的选择,再次就是进行人物的选择,最后在procedures区拖动功能块对人物动作进行程序设计;
2)选中要编辑的人物,对它进行动作设计,Alice是在3D环境下编辑的,它就像人一样,可以坐可以跳,只要你能想到的动作,就可以拖动程序块,对它进行控制,创造属于你自己设计的动画视频;
3)每一个对象(人、动植物等等)都有不同的关节、部位,就像java中一个类的数据成员,可以改变这些部位的位置或者对部位添加运动方法,即用类的函数成员对数据成员进行访问和修改。
2.2 高级功能
1)Alice除了它提供的属性、方法、函数,还可以自定义属性、方法和函数。在窗口右边顶上的白色矩形按钮那里选择不同的类,对其添加自定义的procedures、function、properties。
2)在initializeEventListners的视图里可以添加视听,键盘、鼠标的响应就是在这里添加的。
3 Alice动画具体实现
Alice常用来制作3D动画和3D游戏,通过一个具体的动画实现,我们能很直观地看到Alice使用的方便、智能。做一个以“举办生日”为背景的动画,动画主要内容:主人公生日,邀请惟一的好友来城堡参加自己的生日宴。生日宴上食物的香味吸引了城堡外小鸟,小鸟飞到橡树上,它看到香蕉树下的香蕉,于是飞到香蕉树下,一跳一啄地到香蕉旁边。通过Alice自身带有的对象库和方法块,生成所需的对象,拖动方法函数块搭建动画,如图2:
3.1 动画的基本实现
1)在Setup Scene 界面中使用Alice提供的类库向草地场景添加必要的对象。主要人物三人:adultPerson、elderPerson、teenPerson,构成城堡的十面墙CastleWall,桌子、椅子、蛋糕、碟子、树、鸟等等。
在Bird旁边添加虚拟相机camera1,用于之后镜头的转换。
2)将添加的对象移动调整到适合的位置、方向和大小,借助场景界面的相机视图和右边菜单栏的handle style。将城堡围城一个区域,这个区域的内部以及周围就是动画场景,然后把设置好人物以及其他对象的位置和状态,并把主相机对准adultPerson。
3)添加Alice提供的方法块,让动画动起来。拖动左边的Person方法块MoveToward到代码区,设置移动目标和距离,让人物移动到距离桌子一定距离的地方。用同样的方法实现椅子的拉开,镜头的转换,小鸟的啄食动作,小鸟的飞行动作。
3.2 动画的高级实现
通过Alice提供的方法块我们无法直接实现逼真的动画,即使成功实现了,这些动作也不能运用到其他项目里。为了解决这个问题,我们需要给人物、小鸟单独建立一个测试项目,测试人物的走动、坐下、拉椅子,小鸟的飞行、啄食等等方法。测试完毕后,将这些方法块自定义成一个新的方法块,并装入各自的类中,就像java中不同类有不同的函数成员。
1)为Person类添加行走(Walking)方法:选中Person类,转到类视图下,将测试完成的方法块复制到Walking方法中,将方法的参数修改为P_SCamera,Obstacle,time,Reference。方法的作用:当Person距离参照物Reference距离小于2.0就不断向目标Obstacle走,同时P_Camera的镜头一直对准Person,运动时间由传入参数time控制。其中关键伪代码如下:
2)用同样方式给Person添加Sitting方法。方法参数修改为Chair,LR_Distance。因为Alice提供的腿部关节转动没有以膝盖为支撑点的转动,所以不能真正实现“坐下”这个动作,只能通过do together制造假象。
3)选中Flyer这个类,添加Jump和GoFly两个方法。Jump函数实现Flyer向MoveDirection方向移动,并一边跳跃一边啄食。GoFly函数实现Flyer向Obstacle飞行的动作。相关代码如下图,其中通过Flyer的函数(function)isCollidingWith设置循环(while)挥动翅膀的条件,关键代码如图3:
4)使用自定义的方法和类本身就有的函数、方法实现动画。注意动作的顺序、时间,比如相机的移动要跟随主要对象。
4 结束语
用Alice编程,让编程变得更有趣,它避免了一些传统编程方式下会产生的语法错误以及编译连接等等错误引起的困扰。运用Alice已有的对象库和已经写好的步骤编写一个动画或者游戏,即快捷方便又能直观地表现出来。当然,如果想要制作更逼真复杂的动画,也可以自己创建新的步骤。总结来说,Alice是一个很好的,能提起人们对编程兴趣的可视化编程软件。
参考文献:
[1] 新浪科技.11月TIOBE编程语言排行榜[EB/OL]. (2008-11-20)[2016-03-29].http://tech.sina.com.cn/s/2008-11-20/1137881896.shtml.
[2] Dann W P, Stephen Cooper, Randy Pausch. 用Alice学编程[M]. 付永刚,译. 北京: 机械工业出版社, 2009.
[3] 徐志红, 尹禄, 赵生慧, 等. 基于Alice 培养女大学生计算机编程能力的教学改革探索[J]. 蚌埠学院学报, 2014, 10(3): 5.
[4] 郑欢, 陈勇. 视觉化程序设计软件的应用与发展[J]. 电脑知识与技术, 2015,6(17): 92.
关键词:Alice;3D环境;思维方式
中图分类号:TP311 文献标识码:A 文章编号:1009-3044(2016)12-0158-02
1 Alice简介
Alice项目是美国卡耐基梅隆大学的一个学术性的项目,Randy Pausch教授是该项目的创建人,他希望通过此项目教会青少年如何在3D环境下编写计算机程序,它是一种全新的学习编程的方法,只要用日常的语言,就可以让屏幕上的一切三维物体在虚拟世界里服从你的命令,你就可以自己导演电影和创作计算机游戏了。学生可以把图片贴到一个物体上,还可以给物体增加各种简单的动作和脚本,让虚拟世界里的物体具有灵活性。
Alice是为初学者设计的一种直观式的3D绘图软件,里面有许多事先设计好的绘图物件、检视工具和控制物件的工具,它不必学习复杂的程序语言就能掌握计算机绘图,就算是刚开始学3D绘图的人也能轻松学会。许多美国大学把Alice作为计算机专业的入门课程开设,很多学生在学习了Alice之后对计算机专业产生兴趣。Alice的使用非常容易,用它绘制出来的图形可以直接储存成网页,甚至还可以直接导演一部动画!
Alice是一个免费的工具,它可以让学生学习到最基本的编程概念,即使学生是第一次接触面向对象编程,也能很快学会创建动画电影和简单的视频游戏。
2 Alice的基本功能
Alice提供了一个可拖动的图形界面,它由场景区、对象树、代码编辑区、对象列表、方函数方法细节区等六个部分组成。使用Alice编程你不需要自己写类和对象,它自身就提供了大量的对象库,只用根据提供的类创建对象即可。同样的,使用Alice也不需要写任何代码,只需要拖动对象的方法、函数块到代码区,Alice会根据提示自动生成代码,如图1:
2.1 创建一个项目
1)Alice创建一个项目,首先要进行场景的选择,再次就是进行人物的选择,最后在procedures区拖动功能块对人物动作进行程序设计;
2)选中要编辑的人物,对它进行动作设计,Alice是在3D环境下编辑的,它就像人一样,可以坐可以跳,只要你能想到的动作,就可以拖动程序块,对它进行控制,创造属于你自己设计的动画视频;
3)每一个对象(人、动植物等等)都有不同的关节、部位,就像java中一个类的数据成员,可以改变这些部位的位置或者对部位添加运动方法,即用类的函数成员对数据成员进行访问和修改。
2.2 高级功能
1)Alice除了它提供的属性、方法、函数,还可以自定义属性、方法和函数。在窗口右边顶上的白色矩形按钮那里选择不同的类,对其添加自定义的procedures、function、properties。
2)在initializeEventListners的视图里可以添加视听,键盘、鼠标的响应就是在这里添加的。
3 Alice动画具体实现
Alice常用来制作3D动画和3D游戏,通过一个具体的动画实现,我们能很直观地看到Alice使用的方便、智能。做一个以“举办生日”为背景的动画,动画主要内容:主人公生日,邀请惟一的好友来城堡参加自己的生日宴。生日宴上食物的香味吸引了城堡外小鸟,小鸟飞到橡树上,它看到香蕉树下的香蕉,于是飞到香蕉树下,一跳一啄地到香蕉旁边。通过Alice自身带有的对象库和方法块,生成所需的对象,拖动方法函数块搭建动画,如图2:
3.1 动画的基本实现
1)在Setup Scene 界面中使用Alice提供的类库向草地场景添加必要的对象。主要人物三人:adultPerson、elderPerson、teenPerson,构成城堡的十面墙CastleWall,桌子、椅子、蛋糕、碟子、树、鸟等等。
在Bird旁边添加虚拟相机camera1,用于之后镜头的转换。
2)将添加的对象移动调整到适合的位置、方向和大小,借助场景界面的相机视图和右边菜单栏的handle style。将城堡围城一个区域,这个区域的内部以及周围就是动画场景,然后把设置好人物以及其他对象的位置和状态,并把主相机对准adultPerson。
3)添加Alice提供的方法块,让动画动起来。拖动左边的Person方法块MoveToward到代码区,设置移动目标和距离,让人物移动到距离桌子一定距离的地方。用同样的方法实现椅子的拉开,镜头的转换,小鸟的啄食动作,小鸟的飞行动作。
3.2 动画的高级实现
通过Alice提供的方法块我们无法直接实现逼真的动画,即使成功实现了,这些动作也不能运用到其他项目里。为了解决这个问题,我们需要给人物、小鸟单独建立一个测试项目,测试人物的走动、坐下、拉椅子,小鸟的飞行、啄食等等方法。测试完毕后,将这些方法块自定义成一个新的方法块,并装入各自的类中,就像java中不同类有不同的函数成员。
1)为Person类添加行走(Walking)方法:选中Person类,转到类视图下,将测试完成的方法块复制到Walking方法中,将方法的参数修改为P_SCamera,Obstacle,time,Reference。方法的作用:当Person距离参照物Reference距离小于2.0就不断向目标Obstacle走,同时P_Camera的镜头一直对准Person,运动时间由传入参数time控制。其中关键伪代码如下:
2)用同样方式给Person添加Sitting方法。方法参数修改为Chair,LR_Distance。因为Alice提供的腿部关节转动没有以膝盖为支撑点的转动,所以不能真正实现“坐下”这个动作,只能通过do together制造假象。
3)选中Flyer这个类,添加Jump和GoFly两个方法。Jump函数实现Flyer向MoveDirection方向移动,并一边跳跃一边啄食。GoFly函数实现Flyer向Obstacle飞行的动作。相关代码如下图,其中通过Flyer的函数(function)isCollidingWith设置循环(while)挥动翅膀的条件,关键代码如图3:
4)使用自定义的方法和类本身就有的函数、方法实现动画。注意动作的顺序、时间,比如相机的移动要跟随主要对象。
4 结束语
用Alice编程,让编程变得更有趣,它避免了一些传统编程方式下会产生的语法错误以及编译连接等等错误引起的困扰。运用Alice已有的对象库和已经写好的步骤编写一个动画或者游戏,即快捷方便又能直观地表现出来。当然,如果想要制作更逼真复杂的动画,也可以自己创建新的步骤。总结来说,Alice是一个很好的,能提起人们对编程兴趣的可视化编程软件。
参考文献:
[1] 新浪科技.11月TIOBE编程语言排行榜[EB/OL]. (2008-11-20)[2016-03-29].http://tech.sina.com.cn/s/2008-11-20/1137881896.shtml.
[2] Dann W P, Stephen Cooper, Randy Pausch. 用Alice学编程[M]. 付永刚,译. 北京: 机械工业出版社, 2009.
[3] 徐志红, 尹禄, 赵生慧, 等. 基于Alice 培养女大学生计算机编程能力的教学改革探索[J]. 蚌埠学院学报, 2014, 10(3): 5.
[4] 郑欢, 陈勇. 视觉化程序设计软件的应用与发展[J]. 电脑知识与技术, 2015,6(17): 92.