- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
韶关学院计算机科学学院
数据结构课程设计
题 目: 四子棋
学生姓名:刘晓锋
学 号:11115011038
专 业:计算机科学与技术
班 级:11级(1)班
指导教师姓名及职称:陈正铭 讲师
起止时间: 2013 年 3 月—— 2013 年 5 月
1 需求分析
1.1 课题背景及意义
全球在使用的移动电话已经超过10亿部,而且这个数字每天都在不断增加。手机在作为一种便携通信工具的同时,它的功能也在不断的丰富,进而推进手机游戏的发展。根据《2012手机游戏用户行为分析报告》,随着智能手机的普及和手机性能的提高,手机上的终端应用越来越丰富,作为手机上的重要的娱乐应用,手机游戏市场也在快速成长,越来越多的用户通过手机游戏来打发无聊的时间,其中76%的用户单次玩手机游戏都在30分钟左右。
结合个人水平和兴趣爱好,本人将借本次课程设计机会设计一款休闲娱乐型的四子棋游戏,在娱乐自我,锻炼编程设计能力的同时,希望也借此给身边的朋友们带来快乐。
1.2 课题要求
A. 支持android手机的四子棋游戏
B. 设计一个7*6棋盘大小的四子棋双人对战游戏程序,先四子连线(横、纵、斜)者胜。
C. 选做内容:支持棋局录制与重放 -- 悔棋和新开功能,图形化操作界面
1.3 软件格式规定
A.程序所能达到的功能 :正确判断输赢并有相应的语音和文字提示
B.测试的数据:
1)、正确的输入:
提示:蓝棋赢,并将蓝棋变为另外一种颜色 -- 天蓝和响起赢局的音乐
2)、用户误输入:
提示:亲,我的悔棋能力有限啊!
1.4 设计目标
A. 软件名称:Four In A Line(四子棋)
B. 软件组成:FourInALine.apk(android系统应用程序)
C. 制作平台及相关调试工具:Eclipse ; AndroidSDK
D. 运行环境:android手机/winxp/win7(PC平台必须具有AndroidSDK)
E. 性能特点:
(1)软件由两个可执行文件组成,各具特点:
FourInALine.apk为android系统应用程序,体积小,界面友好,使用方便。
(2)方便重新开始游戏和悔棋。
(3)判赢用时少。
(4)个别其他功能可进行再扩展。
2 概要设计
2.1问题解决的思路概述
首先是确定结构化程序设计的流程图,利用已存在的数据结构来构造一个存储棋盘的结构,接着把游戏实现分成六个主要的模块:实现悔棋的模块、实现新开的模块、实现音乐的模块、实现绘图的模块,实现控制线程的模块,实现判赢的模块,然后各个模块里面还要分成若干种情况来考虑并通过函数的嵌套调用来实现其功能。最后,编写main主函数以实现游戏的可玩性和正确性,调试程序并将不足的地方加以修改。总而言之,就是先用自顶向下、逐步细化的设计方法来分析并画出程序设计流程图;然后用自下而上、逐步积累的设计方法来写出程序。
2.2 相关函数介绍说明
在android版本程序定义一个用于存储棋盘的二维数组变量:
private static int[][] ChessBoardState;[1]
(1)android版本程序下定义的主要函数
public boolean isWin(int x, int y)// 判断赢家,采用遍历最后下的棋子在8个方向上的棋子
public void back(Context context)// 悔棋函数
public void play()//游戏主线程
public void setXY(MyBackChessState myBackChessState)//处理栈顶元素
public Rect getRect(int[] xy) // 标记二维数组对应的矩形区域,也即是棋子该下的位置
public Rect getRect(int x, int y) // 标记二维数组对应的矩形区域,也即是棋子该下的位置
private int[] getIndexofXY() // 获得当前坐标在二维数组中对应的索引。XY[0]是横坐标,也即是棋盘的第某列数;XY[1]是纵坐标,也即是棋盘的第某横。
private int searchEmptyTopTile(int x, int[][] chessboardstate) //返回当列最上方无棋子的坐标,也即是棋盘的第某横.
public void setChessBoardState(int[][] ChessBoardState)//保存棋盘状态
public DrawGraph getChessBoardView() //获得绘图实例
public voi
原创力文档


文档评论(0)