欢迎来到三一办公! | 帮助中心 三一办公31ppt.com(应用文档模板下载平台)
三一办公
全部分类
  • 办公文档>
  • PPT模板>
  • 建筑/施工/环境>
  • 毕业设计>
  • 工程图纸>
  • 教育教学>
  • 素材源码>
  • 生活休闲>
  • 临时分类>
  • ImageVerifierCode 换一换
    首页 三一办公 > 资源分类 > DOC文档下载  

    软件工程课程设计黑白棋游戏.doc

    • 资源ID:2386146       资源大小:167KB        全文页数:19页
    • 资源格式: DOC        下载积分:8金币
    快捷下载 游客一键下载
    会员登录下载
    三方登录下载: 微信开放平台登录 QQ登录  
    下载资源需要8金币
    邮箱/手机:
    温馨提示:
    用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)
    支付方式: 支付宝    微信支付   
    验证码:   换一换

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

    软件工程课程设计黑白棋游戏.doc

    课 程 设 计 说 明 书课程名称: 软件工程 设计题目: 黑白棋游戏 学 院: 计算机科学与信息工程学院 学生姓名: 学 号: 专业班级: 计算机科学与技术(应用方向)12-1 指导教师: 2015年 6 月 19 课 程 设 计 任 务 书设计题目黑白棋游戏学生姓名所在学院计算机科学与信息工程学院专业、年级、班计算机科学与技术(应用方向)12-1设计要求: a游戏通过相互翻转对方的棋子,最后以棋盘上谁的棋子多来判断胜负。b下棋方法:黑白棋的棋盘是一个有8*8方格的棋盘。下棋时将棋下在空格中间,而不是像围棋一样下在交叉点上。开始时在棋盘正中有两白两黑四个棋子交叉放置,黑棋总是先下子。下子的方法把自己颜色的棋子放在棋盘的空格上,而当自己放下的棋子在横、竖、斜八个方向內有一个自己的棋子,则被夹在中间的全部翻转会成为自己的棋子。并且,只有在可以翻转棋子的地方才可以下子。胜负判定条件如果玩家在棋盘上没有地方可以下子,则该玩家对手可以连下。双方都没有棋子可以下时棋局结束,以棋子数目来计算胜负,棋子多的一方获胜。在棋盘还没有下满时,如果一方的棋子已经被对方吃光,则棋局也结束。将对手棋子吃光的一方获胜。学生应完成的工作:(1)对系统进行系统需求分析,与小组成员分工合作。(2)设计实现子功能模块的设计与实现。(3)完成课程设计相关文档。参考文献阅读:1 郭宁. 软件工程实用教程. 北京:人民邮电出版社,20112 韩万江. 软件项目管理案例教程.北京:机械工业出版社,20053 何志勇等.软件工程基于项目的面向对象研究方法. 北京:机械工业出版社,2009工作计划: (1)3月23日-3月27日 第一周:获取软件需求,并进行软件设计和软件开发 (2)6月15日-6月19日第二周:进一步完善软件设计,并完善软件设计文档任务下达日期: 2015年 3 月 23 日 任务完成日期: 2015年 6 月 19 日指导教师(签名): 学生(签名): 黑白棋游戏摘 要:黑白棋作为一个棋类竞技活动,在民间十分流行,为了熟悉黑白棋规则及技巧,以及研究简单的人工智能,决定用java开发黑白棋游戏。主要完成了人机对战功能,有很好的可扩展性。在人机对弈中通过深度搜索估值模块,来提高电脑棋手的智能。分析估值模块中的影响精确性的几个要素,以及提出若干提高精确性的方法,以及对它们搜索的节点数进行比较,在这些算法的基础上分析分析一些提高电脑AI方案,如递归算法、电脑学习等。算法的研究有助于理解程序结构,增强逻辑思维能力,在其他人工智能方面也有很大的参考作用。尽管黑白棋的规则比较简单,但它所包含的丰富战略,不亚于那些相当“经典”的策略游戏。本文首先根据课题的需要,对系统进行了详细的需求分析,其次根据需求对系统进行了总体架构设计,然后对系统进行了详细的设计和实现,最后对系统进行了测试。本系统选择B/S模式作为管理系统的系统架构,以java作为编程语言。本系统实现了人机对弈,在程序运行时可以进行简单的单机游戏,基本实现了本次课程设计的要求。关键词:黑白棋游戏 ; 人机对弈; java目 录1. 设计背景11.1 课题背景11.2 系统需求12. 设计方案12.1 系统架构设计12.2 各模块功能说明22.3 程序结果33. 方案实施33.1界面设计具体实现33.2棋子的位置判断具体实现53.3电脑操作的具体实现114.结果与结论125.收获与致谢136. 参考文献131. 设计背景1.1 课题背景本课程设计是计算机软件技术基础重要的实践性环节之一,是在学生学习完软件工程概论课程后进行的一次全面的综合练习。 按课程设计指导书提供的课题,要求学生在自行完成各个操作环节,并能实现且达到举一反三的目的,完成一个项目解决一类问题。要求学生能够全面、深入理解和熟练掌握所学内容,并能够用其分析、设计和解答类似问题;对此能够较好地理解和掌握,能够进行简单分析和判断;能编写出具有良好风格的程序;掌握JAVA程序设计的基本技能和面向对象的概念和方法;了解多线程、安全和网络等编程技术。同时培养学生进行分析问题、解决问题的能力;培养学生进行设计分析、设计方法、设计操作与测试、设计过程的观察、理解和归纳能力的提高。1.2 系统需求 本系统主要实现的是简单的人机对战模式,游戏通过相互翻转对方的棋子,最后以棋盘上谁的棋子多来判断胜负。下棋方法:黑白棋的棋盘是一个有8*8方格的棋盘。下棋时将棋下在空格中间,而不是像围棋一样下在交叉点上。开始时在棋盘正中有两白两黑四个棋子交叉放置,黑棋总是先下子。下子的方法把自己颜色的棋子放在棋盘的空格上,而当自己放下的棋子在横、竖、斜八个方向內有一个自己的棋子,则被夹在中间的全部翻转会成为自己的棋子。并且,只有在可以翻转棋子的地方才可以下子。胜负判定条件如果玩家在棋盘上没有地方可以下子,则该玩家对手可以连下。双方都没有棋子可以下时棋局结束,以棋子数目来计算胜负,棋子多的一方获胜。在棋盘还没有下满时,如果一方的棋子已经被对方吃光,则棋局也结束。将对手棋子吃光的一方获胜。2. 设计方案2.1 系统架构设计总体设计的基本目的就是要对软件系统进行框架设计,确定系统中每个子系统有哪些模块组成以及模块相互间的关系。根据对系统处理对象的不同,将该系统分为人人考虑的模块和电脑考虑的模块。系统功能层次图,如图2-1所示。图2-1 系统功能层次图2.2 各模块功能说明 为了实现黑白棋游戏的开发,通过流程图的分析,计划采用以下几大模块。系统模块图,如图2-2所示。 主程序函数实现模块主控制模块人和机器模块界面设计模块 图2-2 系统模块图 1、界面设计模块:本模块用来负责主界面的绘制,包括棋盘、棋子、棋子个数的显示、以 及其它需要显示的部分。 2、人和机器模块:人机模块是本程序得以运行的基础,并通过规则模块决定能否下子。 3、主控制模块:本模块主要负责保证监听器类实现和线程的控制这两块。 4、函数实现模块:本模块通过各种函数的调用,实现棋子颜色的改变和判断棋子是否可下。2.3 程序结果一方执黑棋,一方执白棋,轮流走棋,每方都试图在游戏结束前让自己棋子的数目多于对方。同时也可以用鼠标左键操作,通过点击上下左右、斜左上、斜右上、斜左下、斜右下来进行棋子操作,最后判断谁的棋子多,谁赢。3. 方案实施3.1界面设计具体实现代码如下:public class test extends JFrameprivate JLabel jlbStatus = new JLabel();private JLabel jlbLeft = new JLabel();private JLabel jlbRight = new JLabel();private char whoseTurn = 'B'private Cell cells = new Cell88;private char color = new char88;public test()JPanel p = new JPanel(new GridLayout(8,8,0,0);for(int i=0;i<8;i+)for(int j=0;j<8;j+)if(i=j&&i=4)|(i=j&&i=3)p.add(cellsij = new Cell();cellsij.setToken('B');colorij = cellsij.getToken();cellsij.cow = i;cellsij.row = j;continue;if(i=3&&j=4)|(i=4&&j=3)p.add(cellsij = new Cell();cellsij.setToken('W');colorij = cellsij.getToken();cellsij.cow = i;cellsij.row = j;continue;elsep.add(cellsij = new Cell();colorij = cellsij.getToken();cellsij.cow = i;cellsij.row = j;p.setBorder(new LineBorder(Color.yellow,1);p.setBackground(Color.gray);add(p,BorderLayout.CENTER);add(jlbStatus,BorderLayout.SOUTH);add(jlbLeft,BorderLayout.WEST);add(jlbRight,BorderLayout.EAST);jlbStatus.setText(whoseTurn + " 's turn");jlbLeft.setText(" 黑:"+"2" + " ");jlbRight.setText(" 白:"+"2" + " ");this.setTitle("黑白棋:");this.setSize(520, 420);this.setLocationRelativeTo(null);this.setResizable(false);this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);this.setVisible(true);开始运行界面如图3-1所示: 图3-1 开始运行界面3.2棋子的位置判断具体实现主要代码如下:public boolean right(int cow,int row)/判断右边是否可下if(cow+1>7|colorcow+1row = ' '|colorcow+1row = whoseTurn)return false;elsefor(int i = cow+2;i<8;i+)if(colorirow = ' ')return false;if(colorirow = whoseTurn)int num = i-cow-1;colorRight(cow,row,num);return true;return true;public boolean rightDown(int cow,int row)/判断右下边是否可下if(row+1>7|cow+1>7|colorcow+1row+1 = ' '|colorcow+1row+1 = whoseTurn)return false;elsefor(int i = cow+2,j = row+2;i<8&&j<8;i+,j+)if(colorij = ' ')return false;if(colorij = whoseTurn)int num = i-cow-1;colorRightdown(cow,row,num);return true;return true;public boolean rightUp(int cow,int row)/判断右上边是否可下if(cow+1>7|row-1<=0|colorcow+1row-1 = ' '|colorcow+1row-1 = whoseTurn)return false;elsefor(int i = cow+2,j = row-2;i<8&&j>=0;i+,j-)if(colorij = ' ')return false;if(colorij = whoseTurn)int num = i-cow-1;colorRightUp(cow,row,num);return true;return true;public boolean leftDown(int cow,int row)/判断左下边是否可下if(cow-1<=0|row+1>7|colorcow-1row+1 = ' '|colorcow-1row+1 = whoseTurn)return false;elsefor(int i = cow-2,j = row+2;i>=0&&j<8;i-,j+)if(colorij = ' ')return false;if(colorij = whoseTurn)int num = cow-i-1;colorLeftDown(cow,row,num);return true;return true;public boolean leftUp(int cow,int row)/判断左上边是否可下if(row-1<=0|cow-1<=0|colorcow-1row-1 = ' '|colorcow-1row-1 = whoseTurn)return false;elsefor(int i = cow-2,j = row-2;i>=0&&j>=0;i-,j-)if(colorij = ' ')return false;if(colorij = whoseTurn)int num = cow-i-1;colorLeftUp(cow,row,num);return true;return true;public boolean left(int cow,int row)/判断左边是否可下if(cow-1<0|colorcow-1row = ' '|colorcow-1row = whoseTurn)return false;elsefor(int i = cow-2;i>=0;i-)if(colorirow = ' ')return false;if(colorirow = whoseTurn)int num = cow-i-1;colorLeft(cow,row,num);return true;return true;public boolean down(int cow,int row)/判断下边是否可下if(row+1>7|colorcowrow+1 = ' '|colorcowrow+1 = whoseTurn)return false;elsefor(int i = row+2;i<8;i+)if(colorcowi = ' ')return false;if(colorcowi = whoseTurn)int num = i-row-1;colorDown(cow,row,num);return true;return true;public boolean up(int cow,int row)/判断上边是否可下if(row-1<0|colorcowrow-1 = ' '|colorcowrow-1 = whoseTurn)/System.out.print("000");return false;elsefor(int i = row-2;i>=0;i-)/System.out.print(cow + " " +row);if(colorcowi = ' ')return false;if(colorcowi = whoseTurn)int num = row-i-1;colorUp(cow,row,num);return true;return true;3.3电脑操作的具体实现 主要代码如下:class chessprivate int chesses = new int88;private int number = new int8;private int NUMBER = 0;SuppressWarnings("unused")public int left(int cow,int row)/判断左边可以吃多少子if(cow-1<0|colorcow-1row = ' '|colorcow-1row = whoseTurn)return 0;elsefor(int i = cow-2;i>=0;i-)if(colorirow = ' ')return 0;if(colorirow = whoseTurn)int num = cow-i-1;return num;return 0;游戏结束时的界面,如图3-2所示 图3-2游戏结束界面4.结果与结论 通过这两周实践的时间,我学到了很多,自然在这期间遇到的困难数不胜数,开始最让我没辙的是题目不知道该订什么好,过很多个题目但往往跟其他同学重复了,为了避免做出来的东西雷同了,只能继续想其他方面的,想过去做些复杂的,但实在是能力有限,呵呵,最后终于决定做这个黑白棋游戏。 这个黑白棋游戏就是在原有的程序基础上增加了改变背景颜色功能、改变棋子颜色功能、计时器功能、联网双人对战功能以及保存信息到文件功能,由于是在原有的基础上修改的,虽然理论上那个来讲这应该很简单,不会太难,但当我真正着手做起来得时候才发现,原来自己还是太嫩,刚开始什么都不懂,于是我就去图书馆参阅了大量的资料,也不停的向同学们请教,终于渐渐的让我从刚开始连如何运行程序,甚至类的作用等一些罪基本的东西都不清楚到最后通过努力终于把这个程序成功搞定.自然这期间除了辛苦也让我明白了很多,有些小问题也是不容忽视的,就如公共类只能有一个,而且必须要有.及类名必须要同公共类名相同.否则程序就无法运行。5.收获与致谢 通过这次课程设计,对很多东西有了新的认识和新的见解,认识问题的和思考解决办法有了本质上的进步,特别是对一个游戏开发的模式有了更深的认识,对专业技能的运用更熟练。我觉得对自己有很大提高,克服了自己粗心大意的老毛病,这对我以后的学习和工作有很大的帮助。我感受到了编程是一项非常烦琐周密的活动,它不但需要一个人周密的思考问题的能力,处理问题的能力,还需要有足够的耐心和严谨治学的作风,来不得半点马虎。通过本次毕业设计,我初步学会了论文设计的基本方法,学会了怎样去借鉴别人的方法和经验,知道如何去查找资料和整合处理这些资料的能力,这为以后的写论文打下了一个初步的基础,使我收益最大的是享受到了一种成功的喜悦。最后,感谢王瑞平老师细心指导和各位同学的帮助。感谢同组的同学,大家共同努力,团队精诚合作才得以顺利完成此次课程设计。 6. 参考文献1 郭宁. 软件工程实用教程M. 北京:人民邮电出版社,20112 韩万江. 软件项目管理案例教程M.北京:机械工业出版社,20053 何志勇等.软件工程基于项目的面向对象研究方法M. 北京:机械工业出版社,20094 孙永强,戴锋,陈宗斌Visual C# .NET程序设计基础M清华大学出版社,20025 英夏普.Visual C#2005从入门到精通M周靖 译.清华大学出版社,20066 英费森Visual C#基于组件的开发M战晓苏 译清华大学出版社,20037 李律松,马传宝,李婷Visual C#+SQL Server 数据库开发与实例M清华大学出版社,20068 Karli Watson C# 入门经典M康博 译清华大学出版社,2002指导教师评语:1、课程设计报告:a、内容: 不完整 完整 详细 b、方案设计: 较差 合理 非常合理c、实现: 未实现 部分实现 全部实现 d、文档格式: 不规范 基本规范 规范 2、出勤: 全勤 缺勤 次3、答辩: a、未能完全理解题目,答辩情况较差 b、部分理解题目,部分问题回答正确 c、理解题目较清楚,问题回答基本正确 d、理解题目透彻,问题回答流利 课程设计报告成绩: ,占总成绩比例: 50% 课程设计其它环节成绩:环节名称: 出勤 ,成绩: ,占总成绩比例: 20% 环节名称: 答辩 ,成绩: ,占总成绩比例: 30% 总 成 绩: 指导教师签字:年 月 日

    注意事项

    本文(软件工程课程设计黑白棋游戏.doc)为本站会员(仙人指路1688)主动上传,三一办公仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知三一办公(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    备案号:宁ICP备20000045号-2

    经营许可证:宁B2-20210002

    宁公网安备 64010402000987号

    三一办公
    收起
    展开