欢迎来到沃文网! | 帮助中心 分享知识,传播智慧!
沃文网
全部分类
  • 教学课件>
  • 医学资料>
  • 技术资料>
  • 学术论文>
  • 资格考试>
  • 建筑施工>
  • 实用文档>
  • 其他资料>
  • ImageVerifierCode 换一换
    首页 沃文网 > 资源分类 > DOCX文档下载
    分享到微信 分享到微博 分享到QQ空间

    Android的五子棋游戏设计说明书.docx

    • 资源ID:1038634       资源大小:237.56KB        全文页数:15页
    • 资源格式: DOCX        下载积分:10积分
    快捷下载 游客一键下载
    账号登录下载
    微信登录下载
    三方登录下载: QQ登录 微博登录
    二维码
    微信扫一扫登录
    下载资源需要10积分
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP,下载更划算!
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    Android的五子棋游戏设计说明书.docx

    1、Android的五子棋游戏设计说明书目录绪论2一 、开发概述21、五子棋简介22、手机游戏的优点33、五子棋术语3二、Android的开发环境3三、相关技术概念41、坐标布局(AbsoluteLayout)42、Intent53、AlertDialog64、 相关的算法研究:6四、实现运行情况,以及各个模块的截图111、概要设计:112、游戏主界面:123、新游戏界面:124、 帮助界面125、关于五子棋介绍界面136、 五子棋的退出:14五、总结14绪论 智能手机(Smartphone),具有独立的操作系统,像个人电脑一样支持用户自行安装软件、游戏等第三方服务商提供的程序,并通过此类程序不断

    2、对手机的功能进行扩充,同时可通过移动通讯网络来实现无线网络接入。目前,全球多数手机厂商都有智能手机产品,而芬兰诺基亚、美国苹果、加拿大RIM(黑莓)、美国摩托罗拉、中国台湾宏达(htc)更是智能机中的佼佼者。智能手机具有五大特点:1. 具备了无线接入互联网的能力,即要有GSM的支持网络下的GPRS或者是CDMA网络支持下的CDMA 1X或3G网络。2. 人性化,可以根据个人需要扩展机器的功能。3. 它是具有开放性的操作系统,还可以安装非常多的应用程序,使得智能手机的功能可以得到无限的扩展。4. 具有PDA功能,其中包括个人信息管理、日程记事、任务安排、多媒体应用、浏览网页。5.强大的功能,扩展

    3、性能强,第三方软件支持多。一 、开发概述在手机游戏的早期,大多数开发者都是想要玩转设备、学习技巧和快速攻关的狂热分子。但是,随着更多的开发者加入这个行业,手机游戏已经进化成涉及到专业设计师、构造师、开发者、产品经销商、律师、和艺术家在内的主导产品。这是行业走向成熟的必然趋势。尽管在某人的业余时间内要开发和推销简单的游戏更加困难,但是更多的专业商店将为许多人提供更多的就业机会。在我们的生活中有许多的游戏,但是游戏不同,它也会给玩家带来不同的感受和生活理念。游戏是我们日常生活的一个必不可少的娱乐项目,也带动了游戏相关产业市场的发展。游戏平台是经过从游戏机到电视游戏,然后从到pc游戏,到手机游戏,中

    4、间经历了很多的技术的更新和变革。但随着新技术的发展和我们生活水平质量的提高,手机开始逐渐变为普及,因为手机是非常小巧便捷的,而且方便的特性成为我们日常生活中必备通讯工具。而基于手机平台的游戏也就拥有的市场空间是巨大的,也因随着3g的开通和应用,手机游戏必然会迎来新的一轮游戏热潮!1、五子棋简介五子棋是一种两人对弈的纯策略型棋类游戏,是起源于中国古代的传统黑白棋种之一。发展于日本,流行于欧美。现代五子棋日文称之为“连珠”,英译为“Renju”,英文称之为“Gobang”或“FIR”(FiveinaRow的缩写),亦有“连五子”“五子连”“串珠”“五目”“五目碰”“五格”等多种称谓。五子棋不仅能增

    5、强思维能力,提高智力,而且富含哲理,有助于修身养性。五子棋既有现代休闲的明显特征“短、平、快”,又有古典哲学的高深学问“阴阳易理”;它既有简单易学的特性,为人民群众所喜闻乐见,又有深奥的技巧和高水平的国际性比赛;它的棋文化源渊流长,具有东方的神秘和西方的直观;既有“场”的概念,亦有“点”的连接。它是中西文化的交流点,是古今哲理的结晶。2、手机游戏的优点庞大的潜在用户群现在全球超过十亿部移动电话正在被使用,并且这个数目还在逐渐增加。在除美国之外的每个发达国家,拥有手机的人数比拥有计算机的人数还要多。虽然这些手机只有小部分是支持Java游戏的手机,但是这个数目正在快速地提高并且在几年内Java手机

    6、将要成为行业标准。移动游戏潜在的市场比其它任何平台(比如Playstation和GameBoy)都要大。便携性GameBoy比其他任何控制台游戏卖出的多的一个原因就是其的便携性。与现在的游戏控制台或个人电脑相比,手机可能不是一个好的游戏设备,但是人们基本上是随时随地都把它们带在身边,在人们离开家或者想玩的时候,可以不受任何时间地点限制地玩自己选择的游戏。支持网络因为移动电话是网络设备,所以可以实现多人游戏。3、五子棋术语黑方:执黑棋一方的简称。白方:执白棋一方的简称。胜局:有一方获胜的对局。和局:分不出胜负的对局。终局:对局结束。阳线:直线,棋盘上可见的横纵直线。交叉点:阳线垂直相交的点,简称

    7、“点”。阴线:斜线,由交叉点构成的与阳线成45夹角的隐形斜线。落子:棋子直接落于棋盘的空白交叉点上。轮走方:即“行棋方”,有权利落子的黑方或白方。连:同色棋子在一条阳线或阴线上相邻成一排。长连:五枚以上同色棋子在一条阳线或阴线上相邻成一排。五连:只有五枚同色棋子在一条阳线或阴线上相邻成一排。成五:含有五枚同色棋子所形成的连,包括五连和长连。四:一条阳线或阴线上连续相邻的5个点上只有四枚同色棋子的棋型。活四:有两个点可以成五的四。冲四:只有一个点可以成五的四。死四:不能成五的四。三:一条阳线或阴线上连续相邻的5个点上只有三枚同色棋子的棋型。活三:再走一着可以形成活四的三。连活三:连的活三(同色棋

    8、子在一条阳线或阴线上相邻成一排的活三)。简称“连三”。跳活三:中间隔有一个空点的活三。简称“跳三”。眠三:再走一着可以形成冲四的三。死三:不能成五的三。二:一条阳线或阴线上连续相邻的5个点上只有两枚同色棋子的棋型。活二:再走一着可以形成活三的二。连活二:连的活二(同色棋子在一条阳线或阴线上相邻成一排的活二)。简称“连二”。跳活二:中间隔有一个空点的活二。简称“跳二”。大跳活二:中间隔有两个空点的活二。简称“大跳二”。眠二:再走一着可以形成眠三的二。死二:不能成五的二。三三:一子落下同时形成两个活三。也称“双三”。四四:一子落下同时形成两个冲四。也称“双四”。四三:一子落下同时形成一个冲四和一个

    9、活三。二、Android的开发环境本章将主要介绍如何构建Android开发环境,包括获取Android SDK、Eclipse以及进行Android Eclipse插件设置等。三、相关技术概念 本章节主要介绍一下此论文中用到了的Android的布局文件,可视化控件以及它们的具体实现。1、坐标布局(AbsoluteLayout)坐标布局(AbsoluteLayout)的子控件需要指定相对与此坐标布局的横、纵坐标的值,将会想FrameLayout那样被排在左上角。项目中进入游戏的布局文件代码如下: 2、Intent Android中提供了Intent机制来协助应用间的交互与通讯,Intent负责对

    10、应用中一次操作的动作、动作涉及数据、附加数据进行描述,Android则根据此Intent的描述,负责找到对应的组件,将 Intent传递给调用的组件,并完成组件的调用。Intent不仅可用于应用程序之间,也可用于应用程序内部的Activity/Service之间的交互。因此,Intent在这里起着一个媒体中介的作用,专门提供组件互相调用的相关信息,实现调用者与被调用者之间的解耦。(1)action:一般要执行的操作,如ACTION_VIEW,ACTION_EDIT,ACTION_MAIN等(2)Data也就是执行动作要操作的数据Android中采用指向数据的一个URI来表示,如在联系人应用中,

    11、一个指向某联系人的URI可能为:content:/contacts/1。对于不同的动作,其URI数据的类型是不同的(可以设置type属性指定特定类型数据),如 ACTION_EDIT指定Data为文件URI,打电话为tel:URI,访问网络为http:URI,而由content provider提供的数据则为content: URIs。(3)category:提供了有关的行动来执行的其他信息。例如,CATEGORY_LAUNCHER意味着它应该出现在作为顶层应用程序启动器,而CATEGORY_ALTERNATIVE意味着它应在的其他行动用户可以对一个数据列表中。(4)type:指定一个明确的意

    12、图的数据类型(MIME类型)。一般情况下,类型推断,从数据本身。通过设置这个属性,您禁用,评价并强制显式类型。(5)component:指定组件类使用的意图明确的名称。通常这是由看在意图(动作,数据/类型和类别)其它信息和匹配一个组件,它可以处理它的。如果这个属性被设置,那么评价没有执行,这部份会被用来完全一样的。通过指定这个属性,其他所有属性成为可选的意向。 (6)extras:这是任何其他信息包。这可以用来提供扩展信息的组件。例如,如果我们有一个行动,发送一封邮件,我们也可以包括在这里的数据提供一个额外的部分主题,正文等。3、AlertDialogAlertDialog是一个Dialog类

    13、的子类,可以显示一个、两个或三个按钮。如果你只是想在此对话框中显示一个字符串,请使用setMessage()方法。如果你想显示一个更复杂的View,查找FrameLayout的所谓“自定义“,并添加到您的View:FrameLayout fl = (FrameLayout) findViewById(android.R.id.custom);fl.addView(myView, new LayoutParams(MATCH_PARENT,WRAP_CONTENT);4、 相关的算法研究:(1)相关的数据结构 关于盘面情况的表示,首先得到屏幕的大小,然后根据所画棋子的大小来确定下一条棋盘的画线。

    14、 产生棋盘上所有的线 private void createLines() for (int i = 0; i = maxX; i+) /竖线 lines.add(new Line(xOffset+i*pointSize-pointSize/2, yOffset, xOffset+i*pointSize-pointSize/2, yOffset+maxY*pointSize); for (int i = 0; i = maxY; i+) /横线 lines.add(new Line(xOffset, yOffset+i*pointSize-pointSize/2, xOffset+maxX*p

    15、ointSize, yOffset+i*pointSize-pointSize/2); 以数组形式画棋盘: 画棋盘 private List lines = new ArrayList(); private void drawChssboardLines(Canvas canvas) for (Line line : lines) canvas.drawLine(line.xStart, line.yStart, line.xStop, line.yStop, paint); (2)分析规则 判断各个四个方向的棋子:在某个方向(八个中的一个)可下多少棋子,这个方法是第一分析中的核心方法priv

    16、ate void countPoint(List myPoints, List enemyPoints, Point point, FirstAnalysisResult fr,int direction,boolean forward) if(myPoints.contains(pointToNext(point,direction,forward)fr.count +;if(myPoints.contains(pointToNext(point,direction,forward)fr.count +;if(myPoints.contains(pointToNext(point,direc

    17、tion,forward)fr.count +;if(myPoints.contains(pointToNext(point,direction,forward)fr.count +;else if(enemyPoints.contains(point) | isOutSideOfWall(point,direction)fr.aliveState=HALF_ALIVE;else if(enemyPoints.contains(point) | isOutSideOfWall(point,direction)fr.aliveState=HALF_ALIVE;else if(enemyPoint

    18、s.contains(point) | isOutSideOfWall(point,direction)fr.aliveState=HALF_ALIVE;else if(enemyPoints.contains(point) | isOutSideOfWall(point,direction)fr.aliveState=HALF_ALIVE;/在某个方向上是否还能下到满五个棋子private int maxCountOnThisDirection(Point point,List enemyPoints,int direction,int count)int x=point.getX(),y=

    19、point.getY();switch (direction) /横向case HENG:while (!enemyPoints.contains(point.setX(point.getX()-1) & point.getX()=0 & count6) count +;point.setX(x);while (!enemyPoints.contains(point.setX(point.getX()+1) & point.getX()maxX & count=0) count +;point.setY(y);while (!enemyPoints.contains(point.setY(po

    20、int.getY()+1) & point.getY()maxY & count=0 & point.getY()maxY) count +;point.setX(x).setY(y);while (!enemyPoints.contains(point.setX(point.getX()+1).setY(point.getY()-1) & point.getX()=0 & count=0 & point.getY()=0) count +;point.setX(x).setY(y);while (!enemyPoints.contains(point.setX(point.getX()+1)

    21、.setY(point.getY()+1) & point.getX()maxX & point.getY()maxY & count6) count +;break;return count;(3)胜负判断 实际上,是根据当前最后一个落子的情况来判断胜负的。实际上需要从四个位置判断,以该子为出发点的水平,竖直和两条分别为 45度角和135度角的线,目的是看在这四个方向是否最后落子的一方构成连续五个的棋子,如果是的话,就表示该盘棋局已经分出胜负。 (4)算法实现描述 开始分析,扫描所有空白点,形成第一次分析结果:private Point doFirstAnalysis(List comute

    22、rs, List humans)int size = allFreePoints.size();Point computerPoint = null;Point humanPoint = null;int x,y;FirstAnalysisResult firstAnalysisResult;for (int i = 0; i size; i+) computerPoint = allFreePoints.get(i);/先把X、Y坐标记下来,因为在分析过程中会改变原来的对象x = computerPoint.getX();y = computerPoint.getY();if(xcurren

    23、tRange.xStop | ycurrentRange.yStop)continue;/if(x=debugx & y=debugy)/System.out.println(sssssssssssss);/尝试在此位置上下一个棋子,并分析在“横向”这个方向上我方可形成的状态,如活4,活3,半活4,活2等所有状态firstAnalysisResult = tryAndCountResult(comuters,humans, computerPoint, HENG);computerPoint.setX(x).setY(y);/回复点位的原值,以供下次分析if(firstAnalysisResu

    24、lt!=null)/无返回结果此方向上不可能达到五个棋子,if(firstAnalysisResult.count=5)/等于5表示在此点上下棋子即可连成5个,胜利了,不再往下进行分析return computerPoint;/记录第一次分析结果addToFirstAnalysisResult(firstAnalysisResult,computerFirstResults);第二次分析,分析第一次形成的结果,第一次分析结果会把一步棋在四个方向上可形成的结果生成最多四个FirstAnalysisResult对象(敌我各四)/这里要把这四个对象组合成一个SencondAnalysisResult

    25、对象,private Point doComputerSencondAnalysis(MapPoint,List firstResults,List sencodResults) List list = null;SencondAnalysisResult sr = null;for (Point p : firstResults.keySet() sr = new SencondAnalysisResult(p);list = firstResults.get(p);for (FirstAnalysisResult result : list) if(result.count=4)if(re

    26、sult.aliveState=ALIVE)/经过前面的过滤,双方都排除了绝杀棋,有活4就下这一步了,再下一步就赢了return result.point;/如果有绝杀,第一轮已返回,在此轮活4已经是好的棋子,直接返回,不再往下分析elsesr.halfAlive4 +;computer4HalfAlives.add(sr);else if(result.count=3)if(result.aliveState=ALIVE)sr.alive3+;if(sr.alive3=1)computer3Alives.add(sr);elsecomputerDouble3Alives.add(sr);el

    27、sesr.halfAlive3+;computer3HalfAlives.add(sr);else/半活2在第一阶段已被排除,不再处理sr.alive2+;if(sr.alive2=1)computer2Alives.add(sr);elsecomputerDouble2Alives.add(sr);sencodResults.add(sr);/没有找到活4return null;第三次分析,双方都不可以制造活4,找双活3棋子,不行就找半活4,再不行就找单活3,双活2private Point doThirdAnalysis() if(!computer4HalfAlives.isEmpty(

    28、)return computer4HalfAlives.get(0).point;System.gc();sleep(300);Collections.sort(computerSencodResults);System.gc();/即将单活4,且我没有半活4以上的,只能堵Point mostBest = getBestPoint(human4Alives, computerSencodResults);if(mostBest!=null)return mostBest;Collections.sort(humanSencodResults);System.gc();mostBest = ge

    29、tBestPoint();if(mostBest!=null)return mostBest;/拿出各自排第一的,谁好就下谁return computerSencodResults.get(0).point;四、实现运行情况,以及各个模块的截图 1、概要设计:当设计这个游戏时,首先要用一个很好的游戏界面,让我们来选择游戏中的不同的功能。在游戏中我设计了四个按钮。分别是:1新游戏、2帮助、3关于、4退出游戏。1.当我们在新游戏过程中我用一个TextViewa来进行了一个友好的提示,来帮助方便我们对游戏的操作。具体的功能情况看下图5-1:5.2图5-1功能模块 2、游戏主界面:图5-2游戏主界面3

    30、、新游戏界面:图5-3游戏结束再操作界面新游戏的功能描述:当我们进入游戏后,它会有一个操作提示:“按两下右键是人-机对战,按两下左键是人-人对战。”当我们按着操作进行游戏了。当游戏结束是又会一个“*棋输了的提示”然后又是一个操作提示重新进行新的游戏的开始。4、 帮助界面帮助界面的功能秒杀:当我们还没有进入新的游戏的时候,想知道游戏是怎么开始操作的,点击帮助界面,提示我们该进行怎样的操作。图5-4游戏提示界面5、关于五子棋介绍界面图5-5五子棋的关于6、 五子棋的退出:图5-6游戏推出五、总结在本游戏的编写过程中,我遇到了许多的问题。首先要自己先自学一下Android的游戏编程,在编程过程中对五

    31、子棋游戏的算法不是很清楚,所以在编码实现的时候,会出现一些开始完全意料不到的问题,也许这些问题当中,有的是老师讲过的,不过我想大部分还是老师没有讲过,这个时候就是体现出自己解决问题的能力的时候了。在遇到问题时要学会如何去分析错误,再是学会如何去解决掉这个问题。在遇到问题是,不要有害怕困难的情绪,解决问题也是一个不断学习进步的过程,遇到的问题越多,学到的东西也就越多。因此在遇到困难之时,不要轻言放弃,要努力向前解决问题。当我们看到自己的努力有收获的时候,总是会有那么一点点自豪和激动。任何事情都是这样子,需要我们脚踏实地的去做,一步一个脚印的完成,认真严谨,有了好的态度才能做好一件事情,一开始都觉

    32、得是一个很困难的任务,大家都难免会有一点畏惧之情,但是经过长时间的努力和积累,经过不断地查找资料后总结,我们都很好的按老师的要求完成任务,这种收获的喜悦相信每个人都能够体会到。这是一次意志的磨练,是对我实际能力的一次提升,相信对我未来的学习和工作有很大的帮助。每次在遇到困难的时候,我也得到了同学的帮助,共同商量相关专业问题,这种交流对于即将面临毕业的我们来说是一次很有意义的经历。参考文献1 (美)威尔顿,麦可匹克. JavaScript入门经典(第3版). 施宏斌译. 北京:清华大学出版社,20092 张孝祥. Java就业培训教程M. 北京:清华大学出版社,20033 E2ECloud工作室

    33、 著 深入浅出Google Android 人民邮电出版社4 (美)Bruce Eckel. Java编程思想. 陈昊鹏译. 北京:机械工业出版社,2007 5 Eric J.Braucle等.软件设计从程序设计到体系结构M.李仁发等译.北京:电子工业出版社,2007.6 孔令德.毕业设计案例教程从系统开发到论文写作M.北京:国防工业出版社,2007.7 雍俊海编著.Java程序设计习题集.北京:清华大学出版社,20068 朱福喜编著.Java语言习题与解析.北京:清华大学出版社,20069吴其庆编著.Java程序设计实例教程.北京:冶金工业出版社,200610 赵文靖编著.Java程序设计基础与上机指导.北京:清华大学出版社,200611 赵毅主编.跨平台程序设计语言Java.西安:西安电子科技大学出版社,200612王克宏 著Java技术教程(基础篇)北京:高等教育出版社,2002.0413孙燕 主编Java2入门与实例教程北京:中国铁道出版社,2003.0114叶核亚,陈立著Java2程序设计实用教程北京:电子工业出版社,2003.515柯温钊 著JAVA例解教程北京:中国铁道出版社,2001.0316都志辉 著Java3D编程实践. 北京:清华大学出版社,2002.11 - 15 -


    注意事项

    本文(Android的五子棋游戏设计说明书.docx)为本站会员(星星)主动上传,沃文网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知沃文网(点击联系客服),我们立即给予删除!




    关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服点击这里,给沃文网发消息,QQ:2622162128 - 联系我们

    版权声明:以上文章中所选用的图片及文字来源于网络以及用户投稿,由于未联系到知识产权人或未发现有关知识产权的登记,如有知识产权人并不愿意我们使用,如有侵权请立即联系:2622162128@qq.com ,我们立即下架或删除。

    Copyright© 2022-2024 www.wodocx.com ,All Rights Reserved |陕ICP备19002583号-1

    陕公网安备 61072602000132号     违法和不良信息举报:0916-4228922