课程设计(论文)二人对战象棋

上传人:博****1 文档编号:392419865 上传时间:2023-09-13 格式:DOC 页数:34 大小:264KB
返回 下载 相关 举报
课程设计(论文)二人对战象棋_第1页
第1页 / 共34页
课程设计(论文)二人对战象棋_第2页
第2页 / 共34页
课程设计(论文)二人对战象棋_第3页
第3页 / 共34页
课程设计(论文)二人对战象棋_第4页
第4页 / 共34页
课程设计(论文)二人对战象棋_第5页
第5页 / 共34页
点击查看更多>>
资源描述

《课程设计(论文)二人对战象棋》由会员分享,可在线阅读,更多相关《课程设计(论文)二人对战象棋(34页珍藏版)》请在金锄头文库上搜索。

1、课程设计报告书 目 录1问题描述 2.1.题目内容 22.基本要求 22需求分析 21.软件的基本功能 22.输入/输出形式 23概要设计 2.1.表现手法 22.流程图 33.层次关系 44详细设计 4 1.数据成员、成员函数 4 2.伪代码算法 45编码与调试分析 .61.源代码 .62.调试分析 29.6使用说明 297测试结果 30.8实习心得体会 331. 问题描述:本次程序设计实验所选题目为:双人象棋要求:设计棋盘,棋子等数据,两个玩家可以依次输入数据控制某一个棋子的移动,并且可以判断一步棋是否合法,不合法不能移动,游戏可以存档,读档,记录下棋的过程,如能按棋谱走棋更佳。2. 需要

2、分析: 1.软件的基本功能 初始化棋局、输出棋局、输入坐标、改变旗子后再次输出、顺序下棋、游戏未结束的循环控制2.输入/输出形式 通过输入数字坐标,控制相应旗子;输出通过字符组合出来的棋局,并附有相应提示3. 概要设计:1. 如何表现棋局 棋局的表现方式是本题目中最重要的问题,盖因棋局的表现方式直接决定着其他问题的解决办法。 原来的最初设计,是主体为10*9的二维数组000000000 车马相士将士象马车 000000000 000000000 炮 炮 000000000 兵 兵 兵 兵 兵 000000000 000000000 000000000卒 卒 卒 卒 卒 000000000 砲

3、砲 000000000 000000000車馬象仕将仕象馬車将数组的每一位对应为棋盘中的一处落点,并且通过行列数作为坐标,用以定位每个落脚点。通过坐标的输入达到交互目的。旗子则通过将所在落点附以不同的值,来调用相应图片实现表现棋局。然而,由于不知如何调用图片,作罢。在参考网上资料以及与做相同题目的同学讨论后,二维数组主体和坐标输入思想不变,在表现上选择现在作品所采用的:直接在窗口用字符拼出棋盘的方法来表现棋局,并且用 switch语句来输出特定数组值对应的旗子。switch(aij)case x : printf(y);break;.case x : printf(y);break;defau

4、lt:; 2. 流程图: 3. 主函数层次:main() 初始化 输出棋盘 For(;) 输入始末坐标(红) 合法判断(红) 下棋生效 输出棋盘 输入始末坐标(黑) 合法判断(黑) 下棋生效 输出棋盘结束4. 详细设计:1.数据成员、成员函数:包含大循环的主函数:数据成员:二维数组 aij ; 坐标数字 i,j ; 主将特殊坐标 m1,n1,m2,n2;初末坐标 k,l,m,n; 其余形参 x,y,o,p,(一般是赋予末坐标m,n后用于较) 成员函数: 输出函数 display()2.伪码算法:主函数: int main()/初始化 start/输出 displayfor(;)/红旗输入 ge

5、t1 /红旗规则 rule1 /下棋生效 chang/是否吃掉黑方主将 end/是否将帅直面 rule3 /输出 display/是否将军 /黑棋输入 get2/黑棋规则 rule2/下棋生效 chang/是否吃掉红方主帅 end/将帅是否直面 rule3/输出 display/是否将军输出函数:Display() 输出横坐标输出上半棋盘边框 输出上半棋盘 输出界河 输出下半棋盘边框 输出下半棋盘 输出纵坐标5. 编码与调试分析:1. 源代码:display.h /display 头文件 #includeint i,j,a1110;void display() /定义display() 输出函

6、数 printf(*中国象棋*n);/首部for(i=0;i=4;i+) /输出上半部分棋盘aij(0=i=4,0=j9)printf(*%d ,i+1); /输出 横坐标for(j=1;j=9;j+)if (j!=9)switch(aij) /输出 旗子case 0 :printf(+);break;case 11 :printf(车);break;case 12 :printf(马);break;case 13 :printf(相);break;case 14 :printf(士);break;case 15 :printf(帅);break;case 16 :printf(炮);brea

7、k;case 17 :printf(兵);break;case 21 :printf(車);break;case 22 :printf(馬);break;case 23 :printf(象);break;case 24 :printf(仕);break;case 25 :printf(将);break;case 26 :printf(砲);break;case 27 :printf(卒);break;default:;printf(-);printf(-); /为了形成棋盘上的纵横线elseswitch(aij)case 0 :printf(+);break;case 11 :printf(车

8、);break;case 12 :printf(马);break;case 13 :printf(相);break;case 14 :printf(士);break;case 15 :printf(帅);break;case 16 :printf(炮);break;case 17 :printf(兵);break;case 21 :printf(車);break;case 22 :printf(馬);break;case 23 :printf(象);break;case 24 :printf(仕);break;case 25 :printf(将);break;case 26 :printf(砲);break;case 27 :printf(卒);break;default:;printf(n);if(i+1=5)continue;elseif(i+1=1)printf(* | | | | | / | | | |*n);/为了形成棋盘上半方的宫以及纵横线elseif(i+1=2)printf(* | | | | / | | | | |*n);elseprintf(* | | | | | | | | |*n); /为了形成棋盘上半方的纵横线printf( | 汉 界 楚 河 |n);

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

当前位置:首页 > 大杂烩/其它

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