云文档网 - 专业文章范例文档资料分享平台

基于Android系统的五子棋游戏开发与实现

来源:网络收集 时间:2024-05-02 下载这篇文档 手机版
说明:文章内容仅供预览,部分内容可能不全,需要完整文档或者需要复制内容,请下载word后使用。下载word有问题请添加微信号:xuecool-com或QQ:370150219 处理(尽可能给您提供完整文档),感谢您的支持与谅解。点击这里给我发消息

北京邮电大学毕业设计(论文)

// 将人下的那个最后一步棋去掉

allFreePoints.remove(humans.get(humans.size() - 1));

// 电脑可以下的一步棋子

Point result = doAnalysis(myPoints, humans);

// 去除电脑下的棋子

allFreePoints.remove(result);

// 将棋子确定为电脑下的并且完成

myPoints.add(result); }

40

题 目

学生姓名 所在系(院) 专业名称 指导教师

于桂玲

学 号 计算机科学与技术

年 级 职 称

讲师

基于Android系统的五子棋游戏开发与实现

2013年6月10日

北京邮电大学

毕业设计(论文)诚信声明

本人声明所呈交的毕业设计(论文),题目《基于Android平台的五子棋游戏开发与实现》是本人在指导教师的指导下,独立进行研究工作所取得的成果,除了文中特别加以标注和致谢中所罗列的内容以外,毕业设计(论文)中不包含其他人已经发表或撰写过的研究成果,也不包含为获得北京邮电大学或其他教育机构的学位或证书而使用过的材料。

申请学位论文与资料若有不实之处,本人承担一切相关责任。

本人签名: 日期:

毕业设计(论文)使用权的说明

本人完全了解北京邮电大学有关保管、使用论文的规定,其中包括:①学校有权保管、并向有关部门送交学位论文的原件与复印件;②学校可以采用影印、缩印或其它复制手段复制并保存论文;③学校可允许论文被查阅或借阅;④学校可以学术交流为目的,复制赠送和交换学位论文;⑤学校可以公布学位论文的全部或部分内容。

本人签名: 日期: 指导教师签名: 日期:

北京邮电大学毕业设计(论文)

题目

基于Android平台的五子棋游戏开发与实现

摘要

随着互联网的逐步深入,我们的生活也随之有了很大的改变。Android的代码是被公开的,它以Linux为基础,在很短的时间里伫立到了智能机的顶端,所以用Android来对软件进行开发很有必要。本文详细介绍了怎样用Java语言在Android平台上编写游戏。开发五子棋游戏更重视对系统的分析和设计阶段而不仅仅是一个简单的游戏。本文是严格符合软件工程学中对软件设计的要求的,先是总体的设计一个大概的软件周期的计划,然后按照计划分开阶段对它进行严格的管理,并对软件的大框架设计和细节设计进行了主要的介绍,程序运行开始后,又继续的完善设计,并运用surface重绘等存储数据以致最终得到一个集优美的界面、便捷的操作和良好的视觉感应于一身的可操作性系统,即“基于Android平台五子棋游戏的设计与开发”。

关键词: Android Java 软件工程 五子棋游戏

I

北京邮电大学毕业设计(论文)

Title

The five in a row game based on Android

Abstract

With the acceleration development of the Internet, our life has had the very big change. Android's code is open, it is based on Linux, in a very short time stood at the top of the Smartphone, so use Android to software development is necessary. This paper introduces in detail how to use Java language to write the game on the Android platform. Gobang game development more emphasis on system analysis and design stage of the not just a simple game. This article is strictly conform to the requirements of software engineering for software design, first the overall design of a general software cycle of plan, and then according to the plan phase separately to strict management, and the framework of software design and detailed design, the main program is running after the start, and continue to perfect the design, and redrawn using surface and other store data so that eventually get a collection of beautiful interface, convenient operation and good visual induction of operational system, namely \platform of design and development\

Keywords: Android Java Software Engineering Five in a Row

II

北京邮电大学毕业设计(论文)

目 录

1 前言 ................................................................................................................... 1

1.1 课题研究背景 ··············································································································· 1 1.2 课题研究的意义和目的 ······························································································· 4 1.3 可行性研究 ··················································································································· 5

1.3.1 技术可行性 ........................................................................................................ 5 1.3.2 经济可行性 ........................................................................................................ 6 1.3.3 操作可行性 ........................................................................................................ 6 1.4 本章小结 ······················································································································· 7

2 需求分析与系统设计 ....................................................................................... 8

2.1 需求分析与创新意义 ··································································································· 8

2.1.1 系统的需求分析 ................................................................................................ 8 2.1.2 系统的创新与意义 ............................................................................................ 8 2.2 系统的功能设计 ··········································································································· 9

2.2.1 人机对战 ............................................................................................................ 9 2.2.2 人人对战 ............................................................................................................ 9 2.2.3 关于 .................................................................................................................. 10 2.3 系统的组成与实现原理 ····························································································· 10

2.3.1 系统组成 .......................................................................................................... 10 2.3.2 系统实现原理 .................................................................................................. 10 2.4 本章小结 ····················································································································· 11

3 客户端系统的实现 ......................................................................................... 12

3.1 用户进入游戏 ············································································································· 13 3.2 人人对战 ····················································································································· 15 3.3 人机对战 ····················································································································· 20 3.4 关于 ····························································································································· 22 3.5 本章小结 ····················································································································· 22

III

北京邮电大学毕业设计(论文)

return computerPoint; addToFirstAnalysisResult(firstAnalysisResult, computerFirstResults); } firstAnalysisResult = tryAndCountResult(comuters, humans, computerPoint, FAN_XIE); computerPoint.setX(x).setY(y); if (firstAnalysisResult != null) { if (firstAnalysisResult.count == 5) return computerPoint; addToFirstAnalysisResult(firstAnalysisResult, computerFirstResults); }

// 分析在横向上对方棋子的状态是怎样的,如敌方的活3、半活4等

firstAnalysisResult = tryAndCountResult(humans, comuters,

computerPoint, HENG); computerPoint.setX(x).setY(y); if (firstAnalysisResult != null) { if (firstAnalysisResult.count == 5) humanPoint = computerPoint; addToFirstAnalysisResult(firstAnalysisResult, humanFirstResults); } firstAnalysisResult = tryAndCountResult(humans, comuters, computerPoint, ZHONG); computerPoint.setX(x).setY(y); if (firstAnalysisResult != null) { if (firstAnalysisResult.count == 5) humanPoint = computerPoint; addToFirstAnalysisResult(firstAnalysisResult, humanFirstResults); } firstAnalysisResult = tryAndCountResult(humans, comuters,

computerPoint, ZHENG_XIE); computerPoint.setX(x).setY(y); if (firstAnalysisResult != null) { if (firstAnalysisResult.count == 5) humanPoint = computerPoint; addToFirstAnalysisResult(firstAnalysisResult, humanFirstResults);

35

北京邮电大学毕业设计(论文)

} firstAnalysisResult = tryAndCountResult(humans, comuters, computerPoint, FAN_XIE); computerPoint.setX(x).setY(y); if (firstAnalysisResult != null) { if (firstAnalysisResult.count == 5) humanPoint = computerPoint; addToFirstAnalysisResult(firstAnalysisResult, humanFirstResults); } } return humanPoint; }

接下来我们进行第二次分析,要进行此次分析必须先分析初步分析的结果,初步分析的结果会把一步棋在四个方向上可形成的结果生成最多四个FirstAnalysisResult对象(敌我各四),这里要把这四个对象组合成一个SencondAnalysisResult对象。

主要代码如下:

private Point doComputerSencondAnalysis( Map> 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 (result.aliveState == ALIVE)

{// 根据前面所有的分析,游戏双方都不会出现一招制胜,出现活4之后再下一步就赢了

return result.point;// 如果有一招制胜的情况,说明之前已经返回,

这种情况下活4已经最好了,没有必要继续了,直接返回就可以了

} else {

36

北京邮电大学毕业设计(论文)

sr.halfAlive4++; computer4HalfAlives.add(sr); } } else if (result.count == 3) { if (result.aliveState == ALIVE) { sr.alive3++; if (sr.alive3 == 1) { computer3Alives.add(sr); } else { computerDouble3Alives.add(sr); } } else { sr.halfAlive3++; computer3HalfAlives.add(sr); } } else

{// 半活2不再处理了,因为第一步已经排除了

sr.alive2++; if (sr.alive2 == 1) { computer2Alives.add(sr); } else { computerDouble2Alives.add(sr); } } } sencodResults.add(sr); }

// 没有找到活4

return null; }

以上的代码为电脑一方的第二次分析,玩家和这个是类似的。 我们接着进行第三次的分析,主要代码如下:

private Point doThirdAnalysis() {

37

北京邮电大学毕业设计(论文)

if (!computer4HalfAlives.isEmpty()) { 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 = getBestPoint(); if (mostBest != null) return mostBest; return computerSencodResults.get(0).point;

}

计算机将根据第三次分析的结果来选择落子的节奏,确定是进行攻击还是防御。

主要代码如下:

protected Point getBestPoint() { Point mostBest= getBestPoint(computerDouble3Alives, humanSencodResults); if(mostBest!=null) return mostBest; mostBest = getBestPoint(computer3Alives, humanSencodResults); if(mostBest!=null) return mostBest; mostBest = getBestPoint(humanDouble3Alives, computerSencodResults); if(mostBest!=null) return mostBest; mostBest = getBestPoint(human3Alives, computerSencodResults); if(mostBest!=null) return mostBest; mostBest = getBestPoint(human4HalfAlives, computerSencodResults); if(mostBest!=null) return mostBest; mostBest = getBestPoint(computerDouble2Alives, humanSencodResults);

38

北京邮电大学毕业设计(论文)

if(mostBest!=null) return mostBest; mostBest = getBestPoint(computer2Alives, humanSencodResults); if(mostBest!=null) return mostBest; mostBest = getBestPoint(computer3HalfAlives, humanSencodResults); if(mostBest!=null) return mostBest; mostBest = getBestPoint(humanDouble2Alives, computerSencodResults); if(mostBest!=null) return mostBest; mostBest = getBestPoint(human2Alives, computerSencodResults); if(mostBest!=null) return mostBest;}

电脑将在选择操作方式之后落子,这算最后一步的第三次分析,我们可以根据上次结果那个排过序的前提下选出最好的落子方式

protected Point getBestPoint(List myBest, List yourSencodResults) { if (!myBest.isEmpty()) { if (myBest.size() > 1) { for (SencondAnalysisResult your : yourSencodResults) { if (myBest.contains(your)) { return your.point; } } return myBest.get(0).point; } else { return myBest.get(0).point; } } return null; }

当选择好了最佳的点之后,电脑就可以落子了。主要代码如下:

public void run(List humans, Point p) {

39

北京邮电大学毕业设计(论文)

// 将人下的那个最后一步棋去掉

allFreePoints.remove(humans.get(humans.size() - 1));

// 电脑可以下的一步棋子

Point result = doAnalysis(myPoints, humans);

// 去除电脑下的棋子

allFreePoints.remove(result);

// 将棋子确定为电脑下的并且完成

myPoints.add(result); }

40

北京邮电大学毕业设计(论文)

4.2.3 关于测试

功能实现:会转化出一个关于的框框来提示。

测试目的:是否可以通过摁主界面上的关于按钮来转换出框框提示。 测试结果:屏幕上转换出了关于对话框来提示。(如图4.3所示)。

图4.3 关于测试

4.3 本章小结

本章主要介绍了“欢乐五子棋”游戏的最终功能测试,通过对开人人对战,人机对战,关于等功能进行测试测试,并且最后都测试通过,整个项目功能已经顺利完成。

25

北京邮电大学毕业设计(论文)

5 系统存在问题及改进方法

5.1 系统存在的问题

此系统基本实现了基于Android系统的五子棋游戏,但是由于时间较紧,还有一些没有实现的功能。首先玩家在进行游戏之前应该选择自己喜欢的棋子颜色,如白色或黑色。其次,程序中没有响应的成绩存储功能。再次,游戏再过程中没有音效,这让玩家在玩游戏的过程中感觉有些枯燥乏味。最后,此款游戏的界面,也就是Android客户端的界面,还存在一定的不足,并没有特别好看的视觉感觉。

5.2 系统改进方法

针对提出的一些不足之处,我们分析出有以下几种办法来弥补: 阵营选择:如果想要设计的更贴近用户,那么在开始游戏之前加入提示玩家是否要对棋子的颜色来进行选择,或是红色或是黑色,又玩家自己决定。

存储成绩与排名:如果要使得该游戏更人性化,可以加入对各个玩家游戏的成绩的储存以及和其他各玩家相比的排名,根据前面介绍的存储技术来对成绩进行存储,这样使得游戏具备的功能全面。

背景音乐:该游戏若能加上落子的音效,更加能够提升游戏的可玩性。

26

北京邮电大学毕业设计(论文)

6 结 论

Android可以说是目前最受欢迎的手机系统了,而对于手机来说多点触控则是属于当前的热点。多点触控系统摒弃了传统的手机按键式操作方式,用户只需用手指轻触手机屏幕就可以方便的完成打开界面、转换画面、信息查询、拖动控制等功能。在Android平台上开发一款功能强大的系统,可以上让用户使用手机更加的方便,灵活。

本游戏是在Eclipse上面设计出来的,运用的Java语言,基于JAVA来运行服务功能的,对于手机客户来说,需要使用的操作系统为Android 1.6以上的版本,并且主要运行成功了以下几个的功能:

人和人玩、人和电脑玩,关于。

1.人人对战:人人对战就是当用户进入到主界面之后,摁人人对战按钮从而开始的游戏。如果摁人和人玩的那个按钮,那么屏幕会进入人和人玩的方式,其棋盘界面与人机对战模式的界面是一样的。在该游戏过程中是没有计算机算法的。游戏玩家可以找一个自己的朋友来一起玩这个人和人的方式,或者自己担任两个角色。在该游戏过程中,两种颜色的棋子分别被参与游戏的双方玩家执有,而且游戏规定先落子的一方默认使用的是黑色的棋子,另一方则为白色棋子,系统默认当游戏双方有任意一方出现五颗及以上的棋子连在一起时,则判定该游戏玩家胜利,反之另一方则失败。

2.人机对战:用户在使用手机客户端的时候,先打开该游戏的应用程序,然后在主界面上摁人和机玩的那个按钮,这样就可以开始这个方式的游戏,此时,手机屏幕会跳转到人机对战的界面。在此模式中,系统默认游戏玩家执有黑色的棋子,那么白色棋子归电脑所有。玩家或者电脑双方只要有一方棋子有五颗及以上连在一起时,则该方将赢得胜利。

3.关于:当用户在主界面摁那个关于按钮时,将转换到关于那个框框,出现的将是次游戏的作者的资料。

通过这段时间对Android编程的学习 ,不仅让我学习到了以前没有深入学到的知识,同时让我对手机开发产生了一定的兴趣。每一次发现问题,解决问题都让我印象深刻,每一次实现一个功能,都会对本系统有更深的理解。

27

北京邮电大学毕业设计(论文)

以前没有学习到Android中手势识别和方向传感器的知识,通过本次毕业设计的考验,让我学习到了手机经常用到的,比较新意的东西,而对Java语言和Eclipse开发平台也有了进一步的熟悉。虽然如此,我所学到的还是很有限的,需要在今后更一步的深入学习。

28

北京邮电大学毕业设计(论文)

致 谢

本次毕业设计在我的指导老师于桂玲老师的精心指导下,前前后后历经三个多月的忙碌,终于可以说就要完成了。虽然中间有很多的艰辛与不易,但现在终见成效,喜悦的心情难以言表。首先我很感谢我的指导老师,她的平易近人与悉心教导,让我领悟很多,不仅仅是该论文的写作,更是她的人格魅力,让我感悟到做人应有的对学业以及生活的严谨与认真的态度,这对我受益匪浅,也可以说终将会受益终身。在此,我再次向于桂玲老师表示感谢并致以祝福!

同时,我还要对我的母校说声感谢,感谢她四年来的照顾,感谢她给我带来的自豪感,以及母校所有的师生们。因为你们无私的奉献与关怀,不仅使我顺利完成了学业,还教会我很多很多。四年的大学生活使我们真正成长为一个有理想,有追求,有知识的当代青年。

在此我还想感谢论文中涉及到的参考文献的学者们。你们就像行路上的明灯,有你们的辛苦钻研与考究,才有那么多可以称得上经典的参考文献,给我完成论文带来了很多灵感的启发。

我作为一个本科生,对文章中涉及到的知识的掌握还不是特别的深刻,所以难免会存在一些不足之处,在此,也恳请各位老师能够谅解并且指正,让我能够学习的更好!

最后,我要感谢陪伴了我生命中很重要的大学时光的同学们,尤其是帮助我在毕业设计中解决问题与难点的师姐。大学四年,与同学们一起互相帮助,共同进步,不断充实自己。我发自心底地感谢你们对我的帮助和支持!

29

北京邮电大学毕业设计(论文)

参考文献

[1] 林城. Android 2.3 应用开发实战[M]. 第一版. 机械工业出版社,

2011 :17-321.

[2] 韩超. Android 经典应用程序开发[M]. 第二版. 人力资源出版社,

2011 :5-18.

[3] (美)Cay S.Horstmann, Cornell G. Java核心技术[M]. 第一版. 机械工业

出版社, 2008 :5-18.

[4] 刘卫国, 姚昱禹. Android与J2ME平台间即时通信的研究与实现[J].

Android工程师, 2008(11):118-120.

[5] 刘平. Android手机访问服务器的一种数据交互方法[J]. 西安财经学院网

络与现在教育技术, 2010(6):96-102.

[6] 刘玉平. Java输入输出流及在网站开发中的应用探讨[J]. 科技实况, 2009

(18):35-49.

[7] 赵亮, 张维. 基于Android技术的界面设计与研究[D]. 徐州:徐州建筑职

业技术学院, 2001.

[8] 陈璟, 陈平华, 李文亮. Android内核分析[J]. Android程序员,

2009(4):112-115.

[9] 刘卫国, 姚昱禹. Android的架构与应用开发研究[J]. Android程序员,

2009(7):110-112.

[10] Friesen J. Learn Java for Android Development[M]. New York:Apress,

2010 :19-142.

[11] Ableson F, Collins C, Sen R. Unlocking Android: A Developer’s Guide[M].

New York:Manning Publications, 2009 :75-186.

30

北京邮电大学毕业设计(论文)

附 录

【1】人机对战主要代码:

private void initRange(List comuters, List humans) { currentRange.xStart = humans.get(0).getX() - RANGE_STEP; currentRange.yStart = humans.get(0).getY() - RANGE_STEP; currentRange.xStop = humans.get(0).getX() + RANGE_STEP; currentRange.yStop = humans.get(0).getY() + RANGE_STEP; for (Point point : humans) { if (point.getX() - RANGE_STEP < currentRange.xStart) {

currentRange.xStart = point.getX() - RANGE_STEP; } else if (point.getX() + RANGE_STEP > currentRange.xStop) { currentRange.xStop = point.getX() + RANGE_STEP; } if (point.getY() - RANGE_STEP < currentRange.yStart) {

currentRange.yStart = point.getY() - RANGE_STEP; } else if (point.getY() + RANGE_STEP > currentRange.yStop) {currentRange.yStop = point.getY() + RANGE_STEP;}} for (Point point : comuters) { if (point.getX() - RANGE_STEP < currentRange.xStart) {

currentRange.xStart = point.getX() - RANGE_STEP; } else if (point.getX() + RANGE_STEP > currentRange.xStop) {

currentRange.xStop = point.getX() + RANGE_STEP; } if (point.getY() - RANGE_STEP < currentRange.yStart) { currentRange.yStart = point.getY() - RANGE_STEP; } else if (point.getY() + RANGE_STEP > currentRange.yStop) { currentRange.yStop = point.getY() + RANGE_STEP;

}//如果棋盘被扩充之后多于之前的,那么选之前的棋盘大小

} currentRange.xStart = currentRange.xStart < 0 ? 0 : currentRange.xStart;

31

北京邮电大学毕业设计(论文)

currentRange.yStart = currentRange.yStart < 0 ? 0 : currentRange.yStart; currentRange.xStop = currentRange.xStop >= maxX ? maxX - 1 : currentRange.xStop; currentRange.yStop = currentRange.yStop >= maxY ? maxY - 1 : currentRange.yStop; }

首先先判定计算机算法的计算范围,然后将分析现有棋盘的形式。 主要代码如下:

private Point doAnalysis(List comuters, List humans)

{//我们来对属于现行的入口方式进行研究,可以分三个步骤,其中第三步骤的难度控制可由子类干预

if (humans.size() == 1)

{// 第一步

return getFirstPoint(humans); }

// 初始化计算范围

initRange(comuters, humans);

// 清除以前的结果

initAnalysisResults();

// 开始分析后,我们通过对所有没有棋子的点来得出第一次分析结果

Point bestPoint = doFirstAnalysis(comuters, humans); if (bestPoint != null) {

// System.out.println(\这步就必须这么走了,是非常需要的\

return bestPoint; }

// 我们通过第一次的结果来判断哪个点最适合自己

bestPoint = doComputerSencondAnalysis(computerFirstResults, computerSencodResults); if (bestPoint != null) {

//System.out.println(\马上就赢了,必须走这步\

return bestPoint; } computerFirstResults.clear(); System.gc();

//我们利用第一次的结果来选出敌人最重要的那个的点

bestPoint = doHumanSencondAnalysis(humanFirstResults,

32

北京邮电大学毕业设计(论文)

humanSencodResults); if (bestPoint != null) {

// System.out.println(\再不下这个棋子就输了\

return bestPoint; } humanFirstResults.clear(); System.gc();

// 没有找到一招致命的点,第三次结果分析

return doThirdAnalysis(); }

// 根据人和人玩的时候分析首先要进行的落子步骤来进行,这个过程的计算过程很简单

private Point getFirstPoint(List humans) { Point point = humans.get(0); if (point.getX() == 0 || point.getY() == 0 || point.getX() == maxX && point.getY() == maxY) return new Point(maxX / 2, maxY / 2); else { return new Point(point.getX() - 1, point.getY()); } }

当第一步完成之后,计算机开始分析,扫描所有空白的点,形成第一次分析结果,主要代码如下:

private Point doFirstAnalysis(List comuters, 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 = computerPoint.getX();

33

北京邮电大学毕业设计(论文)

y = computerPoint.getY(); if (x < currentRange.xStart || x > currentRange.xStop || y < currentRange.yStart || y > currentRange.yStop) { continue; }

// 我们在这个位子落子,并分析落子后在横向上的状态,如活4,活3,半活4,活2等所有状态

firstAnalysisResult = tryAndCountResult(comuters, humans, computerPoint, HENG);

computerPoint.setX(x).setY(y);// 为了下一次分析撤销此步 if (firstAnalysisResult != null)

{// 如果没有结果,那么这个情况下不能分胜负

if (firstAnalysisResult.count == 5)// 如果等于5,那表明有一种颜色的棋子已经出现五个及以上在一起的情况,胜负已定

return computerPoint;

// 记录第一次分析结果

addToFirstAnalysisResult(firstAnalysisResult, computerFirstResults); }

// 在“纵向”对上面的步骤再走一次

firstAnalysisResult = tryAndCountResult(comuters, humans, computerPoint, ZHONG); computerPoint.setX(x).setY(y); if (firstAnalysisResult != null)

{// 死棋,不下

if (firstAnalysisResult.count == 5) return computerPoint; addToFirstAnalysisResult(firstAnalysisResult, computerFirstResults); }

// 正斜向

firstAnalysisResult = tryAndCountResult(comuters, humans, computerPoint, ZHENG_XIE); computerPoint.setX(x).setY(y); if (firstAnalysisResult != null) { if (firstAnalysisResult.count == 5)

34

百度搜索“yundocx”或“云文档网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,云文档网,提供经典综合文库基于Android系统的五子棋游戏开发与实现在线全文阅读。

基于Android系统的五子棋游戏开发与实现.doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印 下载失败或者文档不完整,请联系客服人员解决!
本文链接:https://www.yundocx.com/wenku/174582.html(转载请注明文章来源)
Copyright © 2018-2022 云文档网 版权所有
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ:370150219 邮箱:370150219@qq.com
苏ICP备19068818号-2
Top
× 游客快捷下载通道(下载后可以自由复制和排版)
单篇付费下载
限时特价:7 元/份 原价:20元
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信:xuecool-com QQ:370150219