欢迎来到天天文库
浏览记录
ID:32427794
大小:76.21 KB
页数:6页
时间:2019-02-04
《本科生毕业设计论文内芯格式-googlecode》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库。
1、┊┊┊┊┊┊┊┊┊┊┊┊┊装┊┊┊┊┊订┊┊┊┊┊线┊┊┊┊┊┊┊┊┊┊┊┊┊毕业设计(论文)报告纸棋类游戏开发框架的探索——AnimalKingdom之设计与实现软件工程陈犇指导老师张晨曦【摘要】AnimalKingdom(以下简称AK)本是由同济大学本科生在2005年自行开发的运行在MacOSX平台下的棋类游戏。该作品曾获2006年苹果中国学生开发挑战赛第一名。本课题的目标是分析原有设计中存在的缺陷,并尝试设计出一套通用的、适用于绝大多数棋类游戏的开发框架。笔者,也是AK的原主要开发者,结合自身在美国苹果公司的子公司的
2、实习时所积累的经验和学习到的设计原则,并在对市场上同类产品进行比较的基础上,对原有设计中存在的缺陷进行了系统的分析。同时,笔者对棋类游戏的共同性进行了一定的研究,在UML的帮助下,设计出了符合目的大致框架。在重构AK的过程中,适逢Apple推出了iPhoneSDK的测试版本。在没有对项目做太大改动的前提下,笔者成功的将新框架下的AK移植到iPhone平台,使AK在共享大多数代码的同时,可以部署到两个不同的平台。同时,笔者使用到了MacOSX10.5Leopard的一些新功能,如CoreAnimation。【关键词】棋类游戏
3、苹果以此类推【外文摘要】ThisarticledescribesthedevelopmentprocessofAnimalKingdom.Refactoringisthekey.【外文关键词】MacOSXLeopardboardgame1引言21.1AnimalKingdom的由来21.2AK开发中所遇到问题21.3课题的目标22同类软件的比较22.1Othello的启示22.2一个Java棋类游戏的启示22.3BigBangChess简介23问题分析与设计指导方针23.1老版AK存在的问题分析:违反的设计原则等23.2新
4、设计:设计原则,UML图等等24开发环境与使用到的技术25各模块的具体实现25.1AI部分,同时说明棋类游戏通用性25.2人机交互部分25.3多媒体部分25.4移植到iPhone平台26开发流程27可能的改进与展望3共页第6页┊┊┊┊┊┊┊┊┊┊┊┊┊装┊┊┊┊┊订┊┊┊┊┊线┊┊┊┊┊┊┊┊┊┊┊┊┊毕业设计(论文)报告纸谢辞3参考文献31引言1.1AnimalKingdom的由来1.2AK开发中所遇到问题1.3课题的目标2同类软件的比较要对原先AK设计上的失误有一个深入和彻底的了解,只分析AK本身是不够的。因此,笔者参
5、考了类似的棋类游戏,并从技术和功能两个方面分析(fixme:扩展这段)。2.1Othello的启示Othello[1]是笔者在瑞典Uppsala大学交换学习时,LogicProgramming课程的最终项目。该项目是使用Prolog语言(fixme:或许需要简短介绍),对Othello游戏(也就是黑白棋)进行实现。LogicProgramming用于实现棋类游戏AI所需要的回溯算法有其独到的简洁之美,不过该项目更值得借鉴的,是其对接口的设计。为了让学生的项目能够和由老师事先做好的标准的程序进行对战,同时能够让游戏有一个图形
6、界面,而不必让学生将大部分时间花在图形界面上,Uppsala大学的老师设计了一套简单但足够通用的接口,可以让学生的命令行程序简单了整合到一个带有图形界面和标准AI程序的框架里。接口由如下predicates(LP当中自程序的名称,类似与命令式语言中的函数)构成,下面的“+”表示输入,“-”表示输出。·initialize(+Side,-State)如果程序是Side一边,那么最初的棋盘状态由State表示。initialize在程序开始会被调用一次。·best_move(+State,-Move)State表示当前棋盘的状
7、态,Move表示由算法生成的,基于当前状况下的最佳的一步棋。·move(+Move,+State,-NewState)Move表示程序自身走的一步棋,State表示当前棋盘的状态,而NewState是在下了Move这步棋后,棋盘会变成的状态。·opponent_move(+Move,+State,-NewState)这个predicates于move/3基本相同,唯一的差别是Move是由对方所下。·game_over(+State,-Winner,-Whites,-Blacks)这个predicates为真的条件是:Sta
8、te是一盘棋的最终状态,Winner是赢家,Whites和Blacks各为白、黑棋子最终的数量。学生的程序,只要正确的实现以上的语句,就能够被整合到测试系统中,与标准程序进行对战。这里,笔者不详细介绍具体数据结构的实现——数据结构可以因语言而异,而只着重在这个接口所代表的一种设计理念——理念则共页第6页
此文档下载收益归作者所有