信息科学与工程学院课程设计任务书题目:二维动画设计----五子棋游戏制作学号:姓名:专业:课程:二维动画设计指导教师:职称:完成时间:2012年5月----2012年6月1课程设计任务书及成绩评定课程设计的任务和具体要求《二维动画设计》课程设计为该门课程的综合设计环节,能够有效锻炼学生的自主学习能力和综合设计能力,培养学生的创新精神和动手实践能力。1、内容要求:1)Flash动画作品内容完整丰实,思想健康、积极向上,表现一个主题。2)动画作品有适当的控制交互功能。2、技术要求:1)动画画面设计合理,画面转换恰当。2)体现Flash编写小游戏的优势。3)掌握ActionScript3.0类的定义和使用。3)在动画实现中,可采取任意技术。3、美工要求:动画画面颜色运用适当,美观,视觉效果好,并具有个人设计风格。指导教师签字:日期:指导教师评语成绩:指导教师签字:日期:2课程设计所需软件、硬件等所需软件:FlashCS5、Word2010所需硬件:PC机课程设计进度计划起至日期工作内容备注2012.6.11--2012.6.162012.6.17--2012.6.242012.6.25--2012.6.26搜集素材、准备课程设计资料用FlashCS5制作课程设计撰写课程设计实验报告参考文献、资料索引序号文献、资料名称编著者出版单位1Flashcs3动画制作案例教程俞欣北京大学出版社2动画设计原理于瑾西安科技出版社3Flash精彩动画设计柏松航空工业出版社4Flash动画风暴伍福军北京电子出版社5AS3.0游戏制作案例教程张辉清华大学出版社3目录1、概述……………………………………………………………………………………41.1课程设计目的…………………………………………………………………41.2课程设计要求…………………………………………………………………41.3ActionScript3.0…………………………·………………………………41.4五子棋术语……………………………………………………………………52、总体设计方案………………………………………………………………………52.1算法分析………………………………………………………………………52.2界面设计………………………………………………………………………62.3代码编写………………………………………………………………………63、详细设计方案………………………………………………………………………63.1游戏界面设计………………………………………………………………63.2代码分析………………………………………………………………………63.3类源代码………………………………………………………………………74、最终的合成与输出………………………………………………………………154.1输出文件……………………………………………………………………154.2游戏缺点与改进……………………………………………………………165、课程设计的总结…………………………………………………………………164一、概述1、课程设计目的《二维动画设计》课程设计为该门课程的综合设计环节,能够有效锻炼自主学习能力和综合设计能力,培养创新精神和动手实践能力。通过此次课程设计应:(1).熟练掌握flash制作所需的基本知识。(2).熟练掌握Flash动画的整个制作过程。(3).进一步熟悉AS3.0面向对象编程的方法及技巧。(4).充分利用Flash实现游戏编程的优势完成五子棋游戏的制作。(5).真正做到学以致用,将所学应用于实践。(6).将以往所学的知识与本课程综合起来应用于实际设计中,培养在实际工作中分析问题和解决问题的能力。2、课程设计要求通过本次设计,应达到下列基本要求:(1).了解FlashCS3元件、场景、图层、帧的基本概念。(2).熟悉面板设置和场景操作(3).掌握绘画工具的使用、辅助选项和属性的设置。(4).掌握FlashCS3时间轴的概念、时间轴中各元素的功能及操作方法。(5).理解图形、元件与实例相互关系和区别及创建、编辑方法。(6).掌握逐帧动画和补间动画的制作方法。(7).认识Actionscript3.0语句。(8).利用Actionscript3.0中的语句设计简单的交互能力。(9).掌握Actionscript3.0编写游戏的方法和技巧。(10).掌握Actionscript3.0中类的定义及使用方法。(11).掌握各种动画作品的测试、优化、输出及发布。3、ActionScript3.0ActionScript3.0是针对AdobeFlashPlayer运行时环境的编程语言,它在Flash内容和应用程序中实现了交互性、数据处理以及其它许多功能。各种交互功能的实现都要依赖于AS3.0。运用它编写具有交互性的小游戏是5很有优势的。4、五子棋术语五连:五个同一颜色的棋子在一条线上,首先形成这一局面的的一方获得胜利。四四:一子落下同时形成两个“四”的棋形。四三:同时具备两个先手,其中一个为“活三”,另一个为“四”。三三:一子落下形成了两个活三的棋形。活四:四个同一颜色的棋子在一条直线上,并且两边没有阻挡。嵌五:也叫跳冲四。活三(包括连三和跳三):连三是紧紧相连的同色的三子;跳三是中间间隔一子的活三。眠三:一端有对方棋子阻拦的三叫眠三。假活三:在活三两端相隔一点的位置上有对方的棋子(或边线)的阻拦。活二:包括连二和跳二。眠二:一端有对方棋子的阻拦“二”。假活二:在活二两端相隔一点的位置上有对方的棋子(或边线)的阻拦。长连:相同颜色的连续六子或六子以上。二、总体设计方案2.1算法分析:假定我们遵循最基本的五子棋规则,不考虑长连和黑子禁手的问题。要让电脑能够根据盘面状态决定在哪里下子,就需要考虑盘面上可能落子的重要程度,并选择其中最重要的点,为此需要通过给这些点打分来最为衡量的标准。对重要程度的评估,主要依据就是在这一点上落子的可能形成的局面,如果能够形成五子连珠,那就是必胜的点,得分最高;同样四四、四三和活四都是可以制胜的棋形,得分也应很高;而三三、眠三等棋形分值相对较低一些。得分最高的点就是落子的点。对博弈中的一方而言,不仅要评价对自己最有利的的落子点,还要考察对自己最有威胁的落子点,也就是对对手最有利的落子点,如果对手下一步可以走出五子连珠的棋形而自己只有活四,那么显然应该首先要消除对方的威胁。因此落子前应综合考虑自己和对方最有利的棋局,然后决定下一步棋该怎么走。为方便对棋局进行评估,我们在这里规定各个棋形的得分:眠二:2分假活二:4分眠三:5分活二:8分冲四、眠四:12分假活三:15分活三:40分6活四:90分五连:200分,当轮到自己落子时加倍。2.2界面设计棋子类型:黑子和白子;【开始游戏】按钮实例名为btnStart,类型SimpleButton;【再玩一遍】按钮实例名为btnReplay,类型SimpleButton;棋子选择按钮实例名为mcSelectChessman,类型MovieClip;游戏结局提示信息实例名为mcGameState,类型MovieClip;2.3代码编写游戏程序包含两个类文件,都放在Classes包中。Clessman用来生成棋子,GobangDoc类是文档类,用来管理游戏的所有交互功能。在Flash软件中新建两个拓展名为.as的文件,并在其中编写两个类的代码。三、详细设计方案3.1游戏界面的设计:游戏界面设计很简单,主要有棋盘、黑白棋子、两个按钮(开始游戏按钮和再玩一遍按钮、),棋子选择按钮和提示消息等组成。游戏界面分析:我们把【开始游戏】按钮和【再玩一遍】按钮放在同一位置。【开始游戏】按钮实例名为btnStart、【再玩一遍】按钮实例名为btnReplay。这两个类型的按钮都是SimpleButton类型。开始时btnStart遮住btnReplay,当单击btnStart进入游戏后,将btnStart的visible属性设置为false,就可以显示出btnReplay。棋子选择按钮实例名为mcSelectChessman,类型为MovieClip类型,棋子选择按钮在界面下方,用来让玩家选择自己使用的棋子类型,在时间轴上包含两个关键帧,名称分别为“white”和“black”,在“white”帧上有一个stop()动作。当玩家选择改变棋子时,就在这两个关键帧之间跳转,以显示白色或黑色的棋子。游戏结局提示信息实例名为mcGameState,也是一个MovieClip类型的元件,它的时间轴上有两个名为“win”和“lose”的关键帧。分别显示胜利和失败的信息。游戏开始时将它的visible属性设为false,一局结束之后在设置为true。3.2代码分析游戏程序包含两个类文件,都放在Classes包中。Clessman用来生成棋子,白子和黑子都是由这个类派生,方法是改变他们的连接属性。将基类指定为Chessman,而类名分别为“WhiteChessman”和“BlackChessman”.。我7们不必为WhiteChessman类和BlackChessman类提供专门的类定义,它们除了颜色以外其他的属性都相同。单击【确定】按钮,会弹出“ActionScript类警告”对话框,提示swf文件中会自动生成相应的类定义,继续单击【确定】按钮即可。Chessman类中有一个属性bPlayer,用来标记当前这种颜色的棋子是不是玩家使用的棋子。此外还有一个方法是twinkle(),作用是当棋子落在棋盘上后闪烁几次,便于玩家看到。GobangDoc类是文档类,用来管理游戏的所有交互功能。3.3两个类源代码(1)Chessman类的代码如下:packageClasses{importflash.display.MovieClip;importflash.events.*;publicclassChessmanextendsMovieClip{privatevarinc:uint=0;publicvarbPlayer:Boolean=false;publicfunctionChessman(){this.addEventListener(Event.ENTER_FRAME,twinkle);}publicfunctiontwinkle(e:Event):void{if(!bPlayer){if(inc15){this.alpha=((inc%5)/5)+.2;inc++;}else{this.removeEventListener(Event.ENTER_FRAME,twinkle);}}}}}(2)GobangDoc类的代码如下:packageClasses{importflash.display.*;importflash.events.*;importflash.geom.*;importflash.text.TextField;publicclassGobangDocextendsMovieClip{privateconstgridsize:Number=20;privateconstgridnum:Number=15;privateconstNOTHING:uint=0;privateconstBLACK:uint=1;8privateconstWHITE:uint=2;privatevarcrtSide:uint=WHITE;privatevarmySide:uint=WHITE;privatevarotherSide:uint;privatevarcanPlay:Boolean=false;privatevaraGridState:Array=[];privatevaraChessmen:Array=[];publicconstSTWO:int=2;//眠二publicconstFTWO:int=4;//假活二publicconstSTHREE:int=5;//眠三publicconstTWO:int=8;//活二publicconstSFOUR: