您好,欢迎访问三七文档
当前位置:首页 > IT计算机/网络 > 数据库 > C语言程序设计工程实训报告
某某工程实训报告五子棋游戏课程名称C语言程序设计工程实训姓名院(系)专业班级学号指导教师某某大学教务处制目录1需求分析.....................................................................................................................................................12系统总框图和功能模块说明.....................................................................................................................12.1系统总框图......................................................................................................................................12.2功能模块说明..................................................................................................................................13系统设计.....................................................................................................................................................23.1主要结构体........................................................................................................................................23.2主要功能函数.....................................................................................................................................23.3关键函数的流程图............................................................................................................................34.系统调试................................................................................................................................................55总结.............................................................................................................................................................66源程序清单.................................................................................................................................................61需求分析系统以菜单方式工作落子—输入实时浏览功能--输出存档,按文件查找。2系统总框图和功能模块说明2.1系统总框图图1系统总框图2.2功能模块说明棋局生成模块:生成棋局用户操作模块:用户落子,设定游戏等。游戏判断模块:判断游戏哪方玩家赢得比赛,游戏是否结束。五子棋游戏生成棋局落子判断是否赢棋菜单链接棋局存档新的棋局游戏设定退出游戏3系统设计3.1主要结构体{shortLineNo_Color=15,RowNo_Color=15,Check_Color=6,X_Color=10,O_Color=12,Menu_Color=7,Game_Options_Color=7,Help_Color=7,Open_Sound=1,Auto_Save_Ending=1;intGame_Over3(int(*a)[N],intchess_symbol)/*/形呈龙*//*以上全局变量依次表示:行序号颜色,列序号颜色,棋盘格线颜色,玩家1的棋子'X'颜色,玩家2的棋子'O'颜色,游戏主菜单GAME_MENU颜色,游戏设定菜单Game_Options颜色,关于游戏的颜色,是否开启游戏提示音,是否开启棋局终局自动保存3.2主要功能函数intmain()voidAbout_Game()/*游戏帮助*/intGame_Options()/*游戏设定*/intGame_Over1(int(*a)[N],intchess_symbol)/*-形或者|形呈龙(事实上-与|关于\对称)*/intGame_Over2(int(*a)[N],intchess_symbol)/*\形呈龙*/intGame_Over3(int(*a)[N],intchess_symbol)/*/形呈龙*/voidInit_Chess(int(*a)[N])/*初始化棋盘,置棋盘上无任何棋子*/intLoad_Chess(int(*a)[N])/*读取棋局*/intLoad_Options()/*读取游戏设定*/voidPrint_Chess(int(*a)[N])/*输出棋局,或者说画棋盘*/intSave_Chess(int(*a)[N],char*ss)/*保存棋局*/intSave_Options()/*保存游戏设定*/intString_to_Int(char*s,intmax)/*字符串条件转化成整型*/3.3关键函数的流程图voidInit_Chess(int(*a)[N])/*初始化棋盘,置棋盘上无任何棋子*/intString_to_Int(char*s,intmax)/*字符串条件转化成整型*/intmain()4.系统调试菜单如上图:5总结本次做的五子棋游戏,界面有点简陋,可观性不强,因为操作是要靠输入坐标的方式落子的,可操作性不强,希望能在以后的学习中能够努力的学习这方面的不足。由于这个游戏是人人对战的,而非人际对战,缺少可玩性,但愿能在日后的学习中做出人机对战的程序来,这无疑是需要强大的算法和坚实的基础,熟练的技巧的,这对我也是很大的挑战。6源程序清单#includestdio.h#includeconio.h#includewindows.h#defineN19#defineSetColor(x)SetConsoleTextAttribute(setcolor,x)shortLineNo_Color=15,RowNo_Color=15,Check_Color=6,X_Color=10,O_Color=12,Menu_Color=7,Game_Options_Color=7,Help_Color=7,Open_Sound=1,Auto_Save_Ending=1;/*以上全局变量依次表示:行序号颜色,列序号颜色,棋盘格线颜色,玩家1的棋子'X'颜色,玩家2的棋子'O'颜色,游戏主菜单GAME_MENU颜色,游戏设定菜单Game_Options颜色,关于游戏的颜色,是否开启游戏提示音,是否开启棋局终局自动保存*/voidInit_Chess(int(*a)[N])/*初始化棋盘,置棋盘上无任何棋子*/{inti,j;for(i=0;iN;i++)for(j=0;jN;j++)a[i][j]='';}intString_to_Int(char*s,intmax)/*字符串条件转化成整型*/{inti,n=0;for(i=0;s[i]='9'&&s[i]='0';i++)n=10*n+s[i]-'0';/*s[i]-'0',nots[i]-'\0'*/return((s[i]=='\0')&&(max0||n=max))?n:-1;}/*任何一个输入都可以看成是一个不定长的字符串,此函数用来处理非法输入问题,比如输入整型数据时输入了含有字母等非数字字符*/voidPrint_Chess(int(*a)[N])/*输出棋局,或者说画棋盘*/{inti,j;HANDLEsetcolor=GetStdHandle(STD_OUTPUT_HANDLE);SetColor(11);/*设定颜色*/SetColor(LineNo_Color);printf(L\\R12345678910111213141516171819\n);for(i=0;iN;i++){SetColor(Check_Color);printf(|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|\n);SetColor(RowNo_Color);printf(%2d,i+1);SetColor(Check_Color);printf(|);for(j=0;jN;j++){if(a[i][j]=='X')SetColor(X_Color);elseSetColor(O_Color);printf(%c,a[i][j]);SetColor(Check_Color);printf(|);}printf(\n);}printf(|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|\n);}intGame_Over1(int(*a)[N],intchess_symbol)/*-形或者|形呈龙(事实上-与|关于\对称)*/{inti,j,k,l,r;for(i=0;iN;i++)for(k=0;kN-4;k++){l=r=0;for(j=k;jk+5;j++)/*algorithmerror:jk+5;notjj+5;*/{if(a[i][j]==chess_symbol)/*-形呈龙*/l++;if(a[j][i]==chess_symbol)/*|形呈龙*/r++;}if(l==5||r==5)/*连续的5个棋子在一条直线上时,游戏结束*/return1;}return0;}intGame_Over2(int(*a)[N],intchess_symbol)/*\形呈龙*/{inti,j,k,m,LeftDown,RightUp;for(m=0;mN-4;m++)for(k=0;kN-4-m;k++){RightUp=LeftDown=0;for(i=k,j=k+m;ik+5;i++,j++){if(a[i][j]==chess_symbol)/*对角线\上及其右上方的\形呈龙*/RightUp++;if(a[j][i]==chess_symbol)/*对角线\上及其左下方的\形呈龙*/LeftDown++;}if(RightUp==5||LeftDown==5)return1;}return0;}intGame_Over3(int(*a)[N],intchess_symbol)/*/形呈龙*/{inti,j,k,m,LeftUp,RightDown;for(m=N-1;m
本文标题:C语言程序设计工程实训报告
链接地址:https://www.777doc.com/doc-4010585 .html