


版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、计算机学院网络工程专业程序设计综合课程设计报告(2011/2012 学年 第一学期)学生姓名:学生班级:网络工学生学号:指导教师:2011 12 30 日双人五子棋目录 HYPERLINK l _TOC_250022 第一章 课程设计目的和要求1课程设计的目的1 HYPERLINK l _TOC_250021 课程设计的要求1 HYPERLINK l _TOC_250020 第二章 课程设计任务内容2 HYPERLINK l _TOC_250019 课程设计的主要内容2 HYPERLINK l _TOC_250018 系统设计原则2 HYPERLINK l _TOC_250017 第三章 设计
2、说明3 HYPERLINK l _TOC_250016 游戏分析和介绍3 HYPERLINK l _TOC_250015 游戏分析3 HYPERLINK l _TOC_250014 游戏介绍3 HYPERLINK l _TOC_250013 重点模块说明3 HYPERLINK l _TOC_250012 棋盘界面Showboard()3 HYPERLINK l _TOC_250011 下棋Play()4 HYPERLINK l _TOC_250010 覆盖棋盘Recoverboard()7 HYPERLINK l _TOC_250009 游戏结束后初始化棋盘Unitboard()7 HYPER
3、LINK l _TOC_250008 保存棋盘CopyB()8 HYPERLINK l _TOC_250007 函数清单8接口9 HYPERLINK l _TOC_250006 第四章 软件使用说明10 HYPERLINK l _TOC_250005 4.1 测试10 HYPERLINK l _TOC_250004 4.2 限制条件13 HYPERLINK l _TOC_250003 第五章 课程设计心得体会14 HYPERLINK l _TOC_250002 附录一 程序流程图15 HYPERLINK l _TOC_250001 附录二 程序代码16 HYPERLINK l _TOC_250
4、000 附录三 参考文献26第一章 课程设计目的和要求课程设计的目1,C想,加深对高级语言基本语言要素和控制结构的理解。2,全面系统的学习面向对象程序设计的基本概念、基本语法和编程方法,与同学合作设计整套程序,并且独立完成一定工作量的程序设计.3,掌握程序设计中的常用算法和格。C 语言的程序技巧,培养良好的程序设计风4,运用所学的知识了解五子棋游戏的制作结构,将所学的知识运用于实践中。课程设计的要求1,与同学合作设计、编制、调试出一款双人五子棋游戏,并单独完成其中一定量的函数模块。2,要求该游戏具有趣味性和可操作性,能够正常运行。其中用到C+语言中的(3,双人五子棋要求能够进入欢迎界面,二人对
5、弈,当有五颗同色棋子相连时, 判断出输赢等一系列游戏流程。第二章 课程设计任务内容课程设计的主要内容任务内容就是设计一款老少皆宜、能够锻炼个人策略谋划能力、较为传统的16*16,横、竖、斜线上的五个同色棋子练成不间断的一排则胜出。系统设计原则1,系统性。系统作为统一整体而存在,因此,在设计中,要从系统的角度考虑。系统的代码要统一,传递语言要尽可能一致。2,可靠性。可靠性是指系统抵御外界干扰的能力及外界干扰时的恢复能力。3,规范性。游戏的运用以吸引玩家的乐趣为前提,一方面,系统设计应尽量避免不必要的复杂化,另一方面模块应尽量简洁,以缩短处理流程。第三章 设计说明游戏分析和介绍游戏分析置悔棋的相关
6、模块。游戏介绍(若是输入的坐标超出棋盘或者该位子已经有子则会提示玩家重新输入坐标位子则退出游戏。重点模块说明Showboard()出现棋盘的界面,对棋盘上每一个点进行定位,并在棋盘上显示相关的信息。相关代码如下:int Showboard()/棋盘界面system(CLS); cout for(int s=1;s=10) cout s-10 ; else cout s ;cout endl; for(i=0;i16;i+)printf(%2d,i+1); for(j=0;j16;j+)cout mapij;if(i=6)cout退出:输入: 0 0 ;if(i=8)cout步数(Step):
7、Step;if(i=12)cout制作人:吴忆芸 余迎香。;if(i=14)cout请输入棋子的纵坐标、横坐标下子! ;cout endl;return(1);Play()在这个小游戏中,黑方先下棋,然后可以轮流进行。而在 Play(Interface(),CopyB(), 判断棋子的位子是否合法 bool legal() bool Overflow(),判断同色五颗棋子judgewin()相关代码如下: int Play()char a03=;char a13=;Showboard();cout 黑方下:endl;while(cout x,cout y)if(x=0&y=0)Recoverb
8、oard(); Interface(); break;if(Overflow() if(legal()continue;x-;y-;if(flag=1)/输入的是白棋mapxy0=a00;mapxy1=a01; Step+; Showboard(); if(judgewin()cout Switch;if(Switch!=n)unitboard();Play();elsereturn 1;cout 黑方下:endl; flag=0;elsemapxy0=a10;mapxy1=a11; Step+; Showboard(); if(judgewin()cout n 黑方胜利了! Switch;i
9、f(Switch!=n)unitboard();Play();elsereturn 1;cout 绿方下:endl; flag=1;elsecout It already have a chessman!Please Reenter:n此位置已有子!请重新输入:;Recoverboard()棋盘,从而使棋盘达到清屏的效果,但是却能够保存所下的棋的步数。相关代码如下:void Recoverboard()/覆盖棋盘,使棋盘恢复到原始状态Step=0; for(i=0;i16;i+)for(j=0;j16;j+)mapij0=copymapij0;mapij1=copymapij1;Unitboa
10、rd()相关代码如下:int unitboard()/游戏结束后界面初始化for(int i=0;i16;i+) for(int j=0;j16;j+)mapij0=copymapij0;mapij1=copymapij1;return 1;CopyB()的保存,若是没有这个函数,最终将判断不出胜负。相关代码如下:void CopyB()/调用字符数组保存原始棋盘for(i=0;i16;i+) for(j=0;j16;j+)copymapij0=mapij0;copymapij1=mapij1;函数清单char map16168/绘制 16*16 的棋盘copymap16168/在重新玩一局游
11、戏的时候显示最初的空棋盘Showboard()/棋盘界面棋盘界面/最初的欢迎界面unitboard()/游戏结束后棋盘初始化judgewin()/判断输赢Play()/下棋Recoverboard()/覆盖棋盘legal()/判断棋子是否合法判断棋子是否在棋盘内部函数接口Int mainInt mainInterface()SystemSystemSystemCopyB()titlecolor()mode()Play()欢迎界面SnowboardRecoverboardOverflowLegalJudgewin图 3-1第四章 软件使用说明测试如下所示,是运行过程中的各种界面显示: 1,如图所
12、示是五子棋的欢迎界面图 4-12,选择“1”时则出现如下棋盘界面图 4-23,选择“2”时,出现如下界面图 4-34,进入棋盘界面下棋,当该位子已经有子的时候,界面显示如下图 4-45,进入棋盘界面下棋,当输入的坐标超出棋盘时,界面显示如下:图 4-56,当五颗同色的棋子相连的时候,界面显示如下:图 4-67,选择“y”时,回到空棋盘,显示如下:图 4-78,当选择“n”时,会出现如下界面:限制条件图 4-8这个游戏由于比较小,而且是双人对战,所以没有设计悔棋这一步骤。这是一个相当大的限制。另外,只能是人人对战,而实现不了人机对战。第五章 课程设计心得体会明白了只有通过自己不断地动手实践才能找
13、出不足、找出问题和提高自己的能 识及应用方法,为我更好的完成报告付出了辛勤的劳动。附录一 程序流程图开始开始ii=1i=2打印棋盘街面黑方下,输入坐标值 ( x,y)判断棋子位置是否合法画判断是否五子连珠黑方获胜绿方下,输入坐标值 ( x,y)判断棋子位置是否合法画判断是否五子连珠绿方获胜是否继续程序结束结束附录二 程序代码#include #include #include #include #include #include using namespace std; int x,y,Step=0;bool int i,j; char char map16168=, ;char copyma
14、p16168;/保存棋盘初始状态,恢复初始状态int Showboard(),Interface(),unitboard(),judgewin(),Play();/界面,游戏结束后初始化棋盘,判断输赢,下棋void Recoverboard(); /覆盖棋盘bool legal(),Overflow();/判断位子是否合法,判断位子是否在棋盘内部int Interface()char a;cout nnn ttntt n;cout endl;cout endl;cout 1:TwoPersonGamesendl;cout (人人对战)endl;cout endl;cout2:Exitendl;
15、cout (退出)endl;cout endl;cout endl;cout a;Please select(请选择):;if(a=1) Play(); elsecout n( coutgetch();return 0;return 1;void Recoverboard()/恢复到棋盘原始状态Step=0;for(i=0;i16;i+) for(j=0;j16;j+)mapij0=copymapij0;mapij1=copymapij1;void CopyB()/调用字符数组保存原始棋盘for(i=0;i16;i+) for(j=0;j16;j+)copymapij0=mapij0;copy
16、mapij1=mapij1;int unitboard()/游戏结束后界面初始化for(int i=0;i16;i+) for(int mapij0=copymapij0;mapij1=copymapij1;return 1;int judgewin()/5 就返回 10int cx,cy,dx,dy;char a,a03=,a13=; if(flag=1)a=a01;elsea=a11;cx=x;cy=y;dx=x;dy=y; while(mapcxcy1=a)cx-;cy-;/向左上检测if(cx0|cy15|dy15)break;if(dx=(cx+6)|dy=(cy+6) return
17、 1;cx=x;cy=y;dx=x;dy=y; while(mapcxcy1=a)cx-;/向上竖直检测if(cx15)break;if(dx=(cx+6) return 1;cx=x;cy=y;dx=x;dy=y; while(mapcxcy1=a)cy-;/水平向左检测if(cy15)break;if(dy=(cy+6) return 1;cx=x;cy=y;dx=x;dy=y; while(mapcxcy1=a)cx+;cy-;/向左下方检测if(cx15|cy0) break;while(mapdxdy1=a)dx-;dy+;/向右上方检测if(dx15) break;if(cx=(d
18、x+6)|dy=(cy+6) return 1;return 0;int Showboard()/棋盘界面system(CLS); cout for(int s=1;s=10) cout s-10 ; else cout s ;cout endl; for(i=0;i16;i+)printf(%2d,i+1); for(j=0;j16;j+)cout mapij;if(i=6) if(i=8)cout 退出:输入: 0 0 ; cout 步数(Step): if(i=12)cout 制作人:吴忆芸 余迎香; if(i=14)cout 请输入棋子的纵坐标、横坐标下子 cout 16|x16|y1)cout 此位置不合法!请重新输入:endl; return 1;elsereturn 0;int Play()char a03=;char a13=; Showboard();cout 黑方下:endl;while(cout x,cout y)if(x=0&y=0)Recoverboard();Interface(); break;if(Overflow() continue; if(legal()x-;y-;if(flag=1)/输入的是白棋mapxy0=a00;mapxy1=a01; Step+; Showboard(); if(judgewin()cout
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 急诊护理科普大赛
- 电商平台消费者债权转让及清收服务协议
- 植物人离婚监护权及子女抚养权共享协议
- 医疗资源整合远程会诊项目合作协议
- 智能停车管理系统租赁与智能停车场运营管理及增值服务合同
- 医院洁净手术部BIM管线施工与运维协议
- 草原牧场放牧权竞标与草原生态修复协议
- 世界杯羽毛球赛赞助商协议
- 家居装修工程设计与施工合同
- 影视拍摄场地消毒卫生保障协议
- 储罐内喷铝施工方案
- 2024年江西省高考地理真题(解析版)
- 绍兴市粮食批发市场经营有限公司招聘笔试题库2024
- 毕业研究生登记表(适用于江苏省)
- 2024年光伏行业供应链数字化建设白皮书
- 网络传播概论(第5版)课件 第七章 网络传播建构的关系
- 公安机关拘留通知书(存根、附卷副本、正本)模板
- 【年产2000吨色氨酸发酵工厂的计算与设计(附布置图流程图)15000字(论文)】
- 2024-2030年中国动画产业发展趋势及未来前景预测分析报告
- 2024年中级硫磺回收装置操作工职业鉴定理论考试题库(浓缩500题)
- DL∕T 1917-2018 电力用户业扩报装技术规范
评论
0/150
提交评论