C语言程序设计工程实训报告Word文件下载.docx

上传人:b****6 文档编号:21976448 上传时间:2023-02-02 格式:DOCX 页数:32 大小:198.62KB
下载 相关 举报
C语言程序设计工程实训报告Word文件下载.docx_第1页
第1页 / 共32页
C语言程序设计工程实训报告Word文件下载.docx_第2页
第2页 / 共32页
C语言程序设计工程实训报告Word文件下载.docx_第3页
第3页 / 共32页
C语言程序设计工程实训报告Word文件下载.docx_第4页
第4页 / 共32页
C语言程序设计工程实训报告Word文件下载.docx_第5页
第5页 / 共32页
点击查看更多>>
下载资源
资源描述

C语言程序设计工程实训报告Word文件下载.docx

《C语言程序设计工程实训报告Word文件下载.docx》由会员分享,可在线阅读,更多相关《C语言程序设计工程实训报告Word文件下载.docx(32页珍藏版)》请在冰豆网上搜索。

C语言程序设计工程实训报告Word文件下载.docx

用户落子,设定游戏等。

游戏判断模块:

判断游戏哪方玩家赢得比赛,游戏是否结束。

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)/*字符串条件转化成整型*/

4.系统调试

菜单如上图:

5总结

本次做的五子棋游戏,界面有点简陋,可观性不强,因为操作是要靠输入坐标的方式落子的,可操作性不强,希望能在以后的学习中能够努力的学习这方面的不足。

由于这个游戏是人人对战的,而非人际对战,缺少可玩性,但愿能在日后的学习中做出人机对战的程序来,这无疑是需要强大的算法和坚实的基础,熟练的技巧的,这对我也是很大的挑战。

6源程序清单

#include<

stdio.h>

conio.h>

windows.h>

#defineN19

#defineSetColor(x)SetConsoleTextAttribute(setcolor,x)

shortLineNo_Color=15,RowNo_Color=15,Check_Color=6,X_Color=10,O_Color=12,

*/

{

inti,j;

for(i=0;

i<

N;

i++)

for(j=0;

j<

j++)

a[i][j]='

'

;

}

inti,n=0;

for(i=0;

s[i]<

='

9'

&

&

s[i]>

0'

n=10*n+s[i]-'

;

/*"

s[i]-'

"

not"

\0'

*/

return((s[i]=='

)&

(max<

0||n<

=max))?

n:

-1;

任何一个输入都可以看成是一个不定长的字符串,此函数用来处理非法输入问题,比如输入整型数据时输入了含有字母等非数字字符

voidPrint_Chess(int(*a)[N])/*输出棋局,或者说画棋盘*/

HANDLEsetcolor=GetStdHandle(STD_OUTPUT_HANDLE);

SetColor(11);

/*设定颜色*/

SetColor(LineNo_Color);

printf("

L\\R12345678910111213141516171819\n"

);

SetColor(Check_Color);

|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|\n"

SetColor(RowNo_Color);

printf("

%2d"

i+1);

if(a[i][j]=='

SetColor(X_Color);

else

SetColor(O_Color);

%c"

a[i][j]);

\n"

intGame_Over1(int(*a)[N],intchess_symbol)/*"

对称)*/

inti,j,k,l,r;

for(k=0;

k<

N-4;

k++)

l=r=0;

for(j=k;

k+5;

j++)/*algorithmerror:

j<

"

not"

j+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;

m<

m++)

N-4-m;

RightUp=LeftDown=0;

for(i=k,j=k+m;

i++,j++)

if(a[i][j]==chess_symbol)/*对角线"

上及其右上方的"

RightUp++;

if(a[j][i]==chess_symbol)/*对角线"

上及其左下方的"

LeftDown++;

if(RightUp==5||LeftDown==5)

inti,j,k,m,LeftUp,RightDown;

for(m=N-1;

m>

=4;

m--)

m+1-4;

RightDown=LeftUp=0;

for(i=k,j=m-k;

i++,j--)

上及其左上方的"

LeftUp++;

if(a[N-1-j][N-1-i]==chess_symbol)/*对角线"

上及其右下方的"

RightDown++;

/*上面应该是"

a[N-1-j][N-1-i]"

而不是"

a[N-j][N-i]"

if(RightDown==5||LeftUp==5)

以上三个函数通过遍历棋盘所有的可能呈龙情况以判定游戏是否over了

intSave_Chess(int(*a)[N],char*ss)/*保存棋局*/

FILE*fp;

if(strcmp(ss,"

save"

)==0)/*保存当前未结束的棋局*/

if((fp=fopen("

Save.sav"

"

w"

))==NULL)

Can'

topenfile\"

Save.sav\"

!

当前棋局已经成功保存到存档文件\"

中!

else/*保存棋局终局*/

Ending.txt"

a"

Ending.txt\"

棋局终局已经成功保存到文本文件\"

fprintf(fp,"

);

%2d|"

%c|"

fclose(fp);

intSave_Options()/*保存游戏设定*/

Config.ini"

Can'

Config.ini\"

LineNo_Color=%d\nRowNo_Color=%d\nCheck_Color=%d\nX_Color=%d\n"

LineNo_Color,RowNo_Color,Check_Color,X_Color);

O_Color=%d\nMenu_Color=%d\nGame_Options_Color=%d\n"

O_Color,Menu_Color,Game_Options_Color);

Help_Color=%d\nOpen_Sound=%d\nAuto_Save_Ending=%d\n"

Help_Color,Open_Sound,Auto_Save_Ending);

当前游戏设定已经成功保存到配置文件\"

intLoad_Chess(int(*a)[N])/*读取棋局*/

intj,k,X_Number=0,O_Number=0;

charc;

doublei=-1.5;

if((fp=fopen("

r"

))==NULL)/*检测存档文件"

是否在当前目录下*/

Init_Chess(a);

/*先初始化棋盘*/

c=fgetc(fp);

while(c!

=EOF)

if(c=='

X_Number++;

O_Number++;

if(X_Number-O_Number>

1||X_Number-O_Number<

-1)/*检查棋盘数据是否合法*/

return-1;

rewind(fp);

/*文件指针移至文件首*/

=EOF&

N)/*确保数组不越界*/

\n'

i+=0.5;

k=0;

j=k/4-1;

/*棋盘数据的分布规律*/

a[(int)i][j]='

/*读取档案数据*/

c=fgetc(fp);

k++;

returnX_Number>

O_Number?

2:

1;

/*返回读档后的优先下棋的玩家*/

intLoad_Options()/*读取游戏设定*/

shortOption_Value[10]={0},i=0;

))==NULL)/*检测配置文件"

if(c<

c>

Option_Value[i]=10*Option_Value[i]+c-'

/*"

c-'

not"

c"

if(Option_Value[i]<

1&

8)/*确保颜色属性值合法,即不小于1*/

i++;

LineNo_Color=Option_Value[0];

/*加载配置文件"

中的设定*/

RowNo_Color=Option_Value[1];

Check_Color=Option_Value[2];

X_Color=Option_Value[3];

O_Color=Option_Value[4];

Menu_Color=Option_Value[5];

Game_Options_Color=Option_Value[6];

Help_Color=Option_Value[7];

Open_Sound=Option_Value[8];

Auto_Save_Ending=Option_Value[9];

intGame_Options()/*游戏设定*/

HANDLEsetcolor=GetStdHandle(STD_OUTPUT_HANDLE);

inttemp;

shorti;

chars[10];

while

(1)

system("

cls"

SetColor(11);

SetColor(Game_Options_Color);

*-*-*-*-*-*-*Game_Options*-*-*-*-*-*-*\n"

1.查看各种颜色的属性值(1-15);

2.设定行序号的颜色;

3.设定列序号的颜色;

4.设定棋局格线(棋盘)的颜色;

5.设定玩家1的棋子的颜色;

6.设定玩家2的棋子的颜色;

7.设定游戏主菜单Game_Menu的颜色;

8.设定游戏设定菜单Game_Options的颜色;

9.设定\"

关于游戏\"

的颜色;

10.设定是否开启游戏提示音;

11.设定是否开启棋局终局自动保存;

12.保存当前设定到配置文件Config.ini中;

13.加载配置文件Config.ini中的设定;

14.恢复游戏设定至默认值;

15.退出游戏设定菜单Game_Options.\n"

请输入一个整数以决定你要设定的项目:

scanf("

%s"

s);

temp=String_to_Int(s,15);

switch(temp)

case1:

for(i=1;

16;

SetColor(i);

%d是当前其显示的颜色的属性值!

i);

break;

case2:

请输入行序号颜色的属性值(1-15):

if(temp>

0)

LineNo_Color=temp;

已成功设定行序号的颜色!

rintf("

非法的颜色属性值!

case3:

请输入列序号颜色的属性值(1-15):

RowNo_Color=temp;

已成功设定列序号的颜色!

case4:

请输入棋局格线(棋盘)颜色的属性值(1-15):

Check_Color=temp;

已成功设定棋局格线(棋盘)的颜色!

case5:

请输入玩家1的棋子(棋子符号'

)颜色的属性值(1-15):

X_Color=temp;

已成功设定玩家1的棋子的颜色!

case6:

请输入玩家2的棋子(棋子符号'

O_Color=temp;

已成功设定玩家2的棋子的颜色!

case7:

请输入游戏主菜单Game_Menu的颜色的属性值(1-15):

te

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 党团工作 > 入党转正申请

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1