自己做的c课程设计象棋

上传人:cl****1 文档编号:422048351 上传时间:2023-12-22 格式:DOC 页数:37 大小:312KB
返回 下载 相关 举报
自己做的c课程设计象棋_第1页
第1页 / 共37页
自己做的c课程设计象棋_第2页
第2页 / 共37页
自己做的c课程设计象棋_第3页
第3页 / 共37页
自己做的c课程设计象棋_第4页
第4页 / 共37页
自己做的c课程设计象棋_第5页
第5页 / 共37页
点击查看更多>>
资源描述

《自己做的c课程设计象棋》由会员分享,可在线阅读,更多相关《自己做的c课程设计象棋(37页珍藏版)》请在金锄头文库上搜索。

1、计算机与信息学院计算机类课程设计报告课程名称:面向对象程序设计课程设计课程设计题目:中国象棋姓 名:系:计算机系专 业:计算机科学与技术年 级:学 号:061150083指导教师:职 称:2008年 12 月 23 日福建农林大学计算机与信息学院计算机类课程设计报告结果评定评语:评分项目分值得分课程设计报告符合规范10分类图、用例图、系统框图合理30分主要技术线路正确30分设计报告条理清晰、重点突出20分有一定创新性、难易程度10分成绩:指导教师签字:任务下达日期:11月17日评定日期:目 录1.设计目的42.设计要求43.设计方案44.设计内容6 4.1 运行程序进入欢迎界面.6 4.2 按

2、Enter键进入游戏棋盘64.3 按“y”键进入走棋的状态9 4.3.1例如:当要显示兵的时候.10 4.3.2例如:要移动炮的时候.11 4.3.3例如:要移动车的时候.124.3.4例如:要移动马的时候144.3.5例如:要移动相的时候.154.3.6例如:要移动仕的时候.164.3.7例如:要移动帅的时候.17 4.4判断棋子的走法是否正确.18 4.5如果对自己所下的棋子后悔的话还可以悔棋.19 4.6可以统计双方的各自的胜负和和棋的情况.215.总结.22参考文献231.设计目的(1)通过课程设计的综合训练,培养学生实际分析问题、编程和动手能力(2)初步了解c+程序的结构和编程方法。

3、(3)掌握声明类的方法,类和类的成员的概念以及定义对象的方法。(4)掌握对象的指针及其使用的方法。2.设计要求(1)程序结构分明,条理清晰。(2)设计的中国象棋棋子走法必须符合规范。(3)能够判断棋子的走法是否正确。(4)能够实现悔棋、求和、认输。(5)在结束玩之前能够统计双方的胜数和和棋的次数。3.设计方案一、用例图二、类图4.设计内容4.1 运行程序进入欢迎界面,实现代码为:void Cchess:welcome()cout欢迎使用中国象棋!请最大化窗口。endl;cout观棋不语真君子,endl举手无悔大丈夫!endl;cin.get();进入的界面如图所示:4.2 按Enter键进入游

4、戏棋盘,实现代码如下:void Cchess:printchess(int i,int j)switch(boardij) /通过读取数组中的内容来显示棋子;case 0:cout| |;break;case 1:cout|红帅|;break;case 2:cout|黑将|;break;case 3:cout|红仕|;break;case 4:cout|黑士|;break;case 5:cout|红相|;break;case 6:cout|黑象|;break;case 7:cout|红马|;break;case 8:cout|黑马|;break;case 9:cout|红车|;break;ca

5、se 10:cout|黑车|;break;case 11:cout|红炮|;break;case 12:cout|黑炮|;break;case 13:cout|红兵|;break;case 14:cout|黑卒|;break;void Cchess:initialboard()for(int i=0;i10;i+) for(int j=0;j9;j+) boardij=0; /初始化,全部置零board04=1;board94=2;board03=board05=3;board93=board95=4;board02=board06=5;board92=board96=6;board01=bo

6、ard07=7;board91=board97=8;board00=board08=9;board90=board98=10;board21=board27=11;board71=board77=12;board30=board32=board34=board36=board38=13;board60=board62=board64=board66=board68=14;head=0;turn=0;printboard();void Cchess:printboard()system(cls);cout-;coutendl;for(int i=0;i59;i+) cout-;coutendl;

7、for(i=0;i10;i+) cout-i-; for(int j=0;j9;j+) printchess(i,j); coutendl; for(j=0;j59;j+) cout-; coutendl; if(i=4) cout 楚 河 汉 界; coutendl; for(j=0;j59;j+) cout-; cout4&abs(y2-y1)=1) /不得后退,过河前不得横移; return 1;return 0;兵不能往后退,在过河之前只能往前走不能左右移动,当过河之后就可以左右移动。当选中兵之后要移动到哪个位置就输入要移动到的行和列。显示的画面如下:4.3.2例如:要移动炮的时候,输

8、入当前跑所在的位置,运行炮的代码如下:int Cchess:c11judge(int x1,int y1,int x2,int y2)if(!boardx2y2&c9judge(x1,y1,x2,y2) /炮在不吃子的情况下等同于车 return 1;if(boardx2y2) /目标有子 int i,f=0; if(x1=x2) for(i=min(y1,y2)+1;imax(y1,y2);i+) /在路线上有且仅有一个子 if(boardx1i) f+; if(f=1) return 1; return 0; if(y1=y2) for(i=min(x1,x2)+1;imax(x1,x2)

9、;i+) /在路线上有且仅有一个子 if(boardiy1) f+; if(f=1) return 1; return 0; return 0;当炮要横移或竖移时,前面没有棋子的时候,移动的情况跟车一样,当有一个棋子的时候就可以把对方的棋子吃掉。显示的画面如下:4.3.3例如:要移动车的时候,输入当前跑所在的位置,运行车的代码如下:int Cchess:c9judge(int x1,int y1,int x2,int y2) int i;if(x1=x2) /如果是走横线 for(i=min(y1,y2)+1;imax(y1,y2);i+) /判断移动路线上有没有别的棋子 if(boardx1

10、i) return 0; return 1;if(y1=y2) /如果是走竖线 for(i=min(x1,x2)+1;imax(x1,x2);i+) /判断移动路线上有没有别的棋子 if(boardiy1) return 0; return 1;return 0;当车的前面没有棋子的时候且有隔空的话,车可以吃掉对方的任何的东西,移动的时候如果横竖没有棋子的话就可以,可以自由移动任意空格。出现的画面如下:4.3.4例如:要移动马的时候,输入当前马所在的位置,运行炮马的代码如下:int Cchess:c7judge(int x1,int y1,int x2,int y2)if(abs(x2-x1)+abs(y2-y1)!=3) /看马是不是走“日”字型 return 0;if(x2-x1=2&!boardx1+1y1) /四种羁绊马走的情况 return 1;if(x1-x2=2&!boardx1-1y1) return 1;if(y2-y1=2&!boardx1y1+1) return 1;if(y1-

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 商业/管理/HR > 销售管理

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号