五子棋C语音程序设计.docx

上传人:b****8 文档编号:9878396 上传时间:2023-02-07 格式:DOCX 页数:12 大小:139.98KB
下载 相关 举报
五子棋C语音程序设计.docx_第1页
第1页 / 共12页
五子棋C语音程序设计.docx_第2页
第2页 / 共12页
五子棋C语音程序设计.docx_第3页
第3页 / 共12页
五子棋C语音程序设计.docx_第4页
第4页 / 共12页
五子棋C语音程序设计.docx_第5页
第5页 / 共12页
点击查看更多>>
下载资源
资源描述

五子棋C语音程序设计.docx

《五子棋C语音程序设计.docx》由会员分享,可在线阅读,更多相关《五子棋C语音程序设计.docx(12页珍藏版)》请在冰豆网上搜索。

五子棋C语音程序设计.docx

五子棋C语音程序设计

青岛农业大学

本科生课程论文

 

论文题目五子棋C语音程序设计

学生专业班级通信工程

学生姓名(学号)

指导教师

完成时间

 

年月日

 

正文部分

1、

设计简介

五子棋是一种传统的棋盘游戏,是起源于中国古代的传统黑白棋种之一。

发展于日本,流行于欧美。

容易上手,老少皆宜,而且趣味横生,引人入胜;不仅能增强思维能力,提高智力,而且富含哲理,有助于修身养性。

这种游戏用笔纸都可以进行。

本程序设计为人与人对弈,双方棋子为两种不同符号。

一方执“黑笑脸”棋,一方执“白笑脸”棋,执“白笑脸”棋的一方先行下子,先输行再输列,比如ab,落子键为“Enter"。

接着双方轮流走棋,每方都试图在游戏结束前让自己的棋子在横线、竖线、斜线方向五子相连,首先实现五子相连的一方获胜,游戏结束。

程序执行过程中,要求棋盘、棋子时时可见,如果中途退出按q键。

二、设计模块

三、流程图

四.设计过程

1、列出所需头文件名

2、定义棋盘的制符表及位置

3、定义双方玩家各自的操作键

4、定义数据结构

5、说明自定义函数原型

6、定义全局变量

7.初始化图像以及获得按键值

8、嵌入各自定义函数编写主函数

9、编写界面初始化函数voidInit(void)

10、编写画棋盘函数voidPrint(void)

11、编写赢棋处理函数voidInput()

12、编写判断是否赢棋函数intJudge()

13、编写判断在规定方向是否有五子相连函数intLinksame()

14、编写游戏结束处理函数IntGameover()

5、调试过程

运行平台:

C/C++程序设计学习与实验系统

1、点击运行,出现棋盘界面

2、根据界面提示键落子,玩家一先下,双方轮流落子

3、方五子相连,判出赢家,游戏结束。

 

4、按q键退出游戏

 

六、源程序

#include

#include

#defineCHESSBOARD_SIZE15

constintlinkcount=5;

charchessboard[CHESSBOARD_SIZE][CHESSBOARD_SIZE];

intcount;

intplayerid;

voidinit()

{

inti,j;

count=1;

playerid=1;//默认Player1先走

for(i=0;i

{

for(j=0;j

{

chessboard[i][j]='+';

}

}

}

voidprint()

{

inti,j;

printf("abcdefghijklmno\n");

for(i=0;i

{

printf("%c",i+'a');

for(j=0;j

{

printf("%c",chessboard[i][j]);

if(j!

=CHESSBOARD_SIZE-1)

{

printf("-");

}

}

printf("\n");

}

}

voidinput()

{

charix,iy;

intx,y;

printf("player%d下棋,想退出请输入q键:

",playerid);

fflush(stdin);//清除之前缓存留下的数据

scanf("%c%c",&ix,&iy);

if(ix=='q')

{

exit(0);//退出游戏

}

getchar();

x=ix-'a';

y=iy-'a';

while(x<0||x>=CHESSBOARD_SIZE||y<0||y>=CHESSBOARD_SIZE||chessboard[x][y]!

='+')

{

printf("inputerror!

!

\npleaseinputagain:

");

fflush(stdin);//清除缓存留下的数据

scanf("%c%c",&ix,&iy);

getchar();

x=ix-'a';

y=iy-'a';

}

chessboard[x][y]=playerid+1;

count++;

playerid=count%2;//判断该步谁走

}

intlinksame(intx,inty,intxoffset,intyoffset,intncount)

{

intxnext,ynext;

if(chessboard[x][y]=='+')

{

return0;

}

if(ncount==linkcount-1)

{

return1;

}

xnext=x+xoffset;

ynext=y+yoffset;

if(xnext<0||xnext>=CHESSBOARD_SIZE||ynext<0||ynext>=CHESSBOARD_SIZE)

{

return0;

}

if(chessboard[x][y]==chessboard[xnext][ynext])

{

returnlinksame(xnext,ynext,xoffset,yoffset,ncount+1);

}

return0;

}

intjudge()

{

inti,j;

for(i=0;i

{

for(j=0;j

{

if(linksame(i,j,-1,1,0)||

linksame(i,j,0,1,0)||

linksame(i,j,1,1,0)||

linksame(i,j,1,0,0))

{

return1;

}

}

}

return0;

}

intgameover()

{

if(count==CHESSBOARD_SIZE*CHESSBOARD_SIZE-1)

{

system("cls");

print();

printf("drawgame!

!

\n");

return1;

}

if(judge())

{

system("cls");

print();

printf("player%d恭喜你赢了!

!

\n",playerid==1?

0:

1);

return1;

}

return0;

}

voidgamestart()

{

init();

while(!

gameover())

{

system("cls");

print();

input();

}

}

intmain()

{

charch='y';

while

(1)

{

gamestart();

getchar();

printf("continue?

(y/n):

");

ch=getchar();

if(ch=='n')

{

break;

}

}

return0;

}

七.自我总结

当题目出现在我的面前时,感觉真的一点都不会,让我自己编一个程序真的太难了,感觉自己上课的时候一点都没有好好的学,现在一点都不懂,就从网上参考了一下,当看到程序的时候都看不懂,经过问同学和同学之间的商量,老师的指导,终于做出一个完整的程序,当看到完整的的程序的时候真的感觉有一种成就感,真的觉得学到知识很好,所以在以后的学习中要做到认真努力。

 

课程论文成绩评定表

学生姓名

专业班级

论文题目

五子棋C语言课程设计

指导教师评语及意见:

 

成绩:

指导教师签字

年月日

忽略此处..

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

当前位置:首页 > 工作范文 > 制度规范

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

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