五子棋双人对战 C语言课程设计doc.docx
- 文档编号:30111622
- 上传时间:2023-08-05
- 格式:DOCX
- 页数:13
- 大小:119.25KB
五子棋双人对战 C语言课程设计doc.docx
《五子棋双人对战 C语言课程设计doc.docx》由会员分享,可在线阅读,更多相关《五子棋双人对战 C语言课程设计doc.docx(13页珍藏版)》请在冰豆网上搜索。
五子棋双人对战C语言课程设计doc
C语言程序设计
题目五子棋(双人对战)
指导教师曹东燕
学生姓名夏文龙于文杰邢健
学号201000802032201000802114201000802097
专业电子信息工程
教学单位物理系(盖章)
1设计内容与设计要求……………………………………1
1.1系统功能简介………………………………………1
1.2系统运行环境………………………………………1
2程序流程图………………………………………………1
3运行的运行及说明………………………………………2
3.1系统的运行…………………………………………2
3.2运行说明……………………………………………4
4课程设计目的………………………………………………….
5程序特色…………………………………………………….5
6总结………………………………………………………5
附件:
源程序清单……………………………………………5
1设计内容与设计要求
1.1系统功能简介
该系统是五子棋的人人对战模式,而非平常的人机对战
系统有简单的菜单界面
1.2系统运行环境
Vc++6.0下运行,硬件基本无要求,现在的计算机系统基本都可以运行该系统。
2程序流程图
3系统的运行及说明
3.1系统的运行
图3-1程序的初始化界面
程序初始化的界面,界面简洁明快,便于观察。
图3-2程序的运行界面
图3-3程序的介绍界面
3-2运行说明
A向左W向上D向右S向左空格键确定当结束时按Y重新开始游戏按N退出游戏
4课程设计目的
五子棋游戏不仅能增强人们的抽象思维能力、逻辑推理能力、空间想象力,提高人们的记忆力、心算能力等,而且深含哲理,有助于修身养性。
五子棋既有现代休闲方式所特有的特征“短、平、快”,又有中国古典哲学所包含的高深学问“阴阳易理”;它既有简单易学的特点,为人民群众所喜闻乐见,又有深奥的技巧;既能组织举办群众性的比赛、活动,又能组织举办高水平的国际性比赛;它的棋文化源渊流长,具有东方的神秘和西方的直观,它是中西方文化的交融点,也是中西方文化交流的一个平台。
自从计算机作为游戏对战平台以来,各种棋类游戏如雨后春笋般纷纷冒出。
五子棋是一种受大众广泛喜爱的游戏,其规则简单,变化多端,非常富有趣味性和消遣性。
同时具有简单易学、既动手又动脑的特点。
同时也为锻炼自己的编程能力。
5程序特色
本程序简洁明快,采用黑白两色棋,并且本程序为双人对战。
6总结
通过这次实习,让我们初步有了编写系统的能力,我们对很多的函数有了新的认识,也学会了运用多种函数,也明白了编写软件的基本过程,和基本方法。
编写软件的过程中我们又学到了曾经自己不知道的函数或是自己不会的函数的用法。
这次课程设计课总的来说让我受益匪浅。
在这几天的编写过程中我们对c语言有了更进一步的认识和了解。
此次编程过程的经验和知识肯定能促进我以后的学习。
此次课程设计不仅给了我们很多很好的经验,也让我们体会到了失败时的焦急和难受,也体会到了成功时的兴奋与喜悦。
附件:
源程序清单
#include
#include
#include
voidmain()
{
//q:
20*20棋盘数据数组,0表示空,1表示黑棋,2表示白棋
//h:
游戏状态量,变化范围为0、1、2,0表示退出游戏,1表示初始化游戏数据,2表示进行游戏
//i:
循环辅助量
//j:
键盘输入结果
//k:
从二维坐标得到的一维数组下标
//l:
黑白子变化辅助量,变化范围为1、2,1为当前下的是黑棋,2为当前下的的是白棋
//m:
输赢判断结果,变化范围为0、1、2,0表示没有输赢,1表示黑棋赢,2表示白棋赢
//x:
游标的X坐标
//y:
游标的Y坐标
charq[400];
inth,i,j,k,l,m,x,y;
//第一次进入游戏循环,首先初始化游戏数据
h=1;
while(h)
{
if(h==1)
{
//初始化棋盘
for(i=0;i<400;++i)
q[i]=0;
//初始化黑白子变化辅助量,黑棋先行
l=2;
//初始化输赢判断结果,当前没有输赢
m=0;
//初始化游标坐标
x=y=0;
//初始化完毕进行游戏
h=2;
}
else
{
//清屏
system("cls");
//绘制棋子、棋盘
for(i=0;i<400;++i)
{
if(y*20+x==i)
{
if(q[i]==1)
printf("■");
elseif(q[i]==2)
printf("□");
else
printf("◎");
}
else
{
if(q[i]==1)
printf("●");
elseif(q[i]==2)
printf("○");
else
{
if(i==0)
printf("┏");
elseif(i==19)
printf("┓");
elseif(i==380)
printf("┗");
elseif(i==399)
printf("┛");
elseif(i>0&&i<19)
printf("┳");
elseif(0==i%20)
printf("┣");
elseif(19==i%20)
printf("┫");
elseif(i>380&&i<399)
printf("┻");
else
printf("╋");
}
}
if(19==i%20)
printf("\n");
}
//接收输入
j=_getch();
//更新游标坐标
if(y>0&&(j=='w'||j=='W'))
--y;
if(y<19&&(j=='s'||j=='S'))
++y;
if(x>0&&(j=='a'||j=='A'))
--x;
if(x<19&&(j=='d'||j=='D'))
++x;
//下子
if(j=='')
{
//从二维坐标转换到一维数组索引
k=y*20+x;
//设置数据
if(0==q[k])
q[k]=(l=(l==2)?
1:
2);
//设置胜负判断结果
m=0;
//左右胜负判断
for(i=-4;i<1;++i)
{
//边界判断
if(x+i<0||x+i+4>19)
continue;
else
{
//得到最左边棋子的索引
k=y*20+x+i;
//连棋判断,若成立则修改胜负判断结果
if(q[k]==q[k+1]&&
q[k+1]==q[k+2]&&
q[k+2]==q[k+3]&&
q[k+3]==q[k+4])
{
m=l;
break;}}}
//上下胜负判断
for(i=-4;i<1;++i)
{
//边界判断
if(y+i<0||y+i+4>19)
continue;
else
{
//得到最上边棋子的索引
k=(y+i)*20+x;
//连棋判断,若成立则修改胜负判断结果
if(q[k]==q[k+20]&&
q[k+20]==q[k+40]&&
q[k+40]==q[k+60]&&
q[k+60]==q[k+80])
{
m=l;
break;}}}
//左上右下胜负判断
for(i=-4;i<1;++i)
{
//边界判断
if(x+i<0||x+i+4>19||y+i<0||y+i+4>19)
continue;
else
{
//得到最左上边棋子的索引
k=(y+i)*20+x+i;
//连棋判断,若成立则修改胜负判断结果
if(q[k]==q[k+20+1]&&
q[k+20+1]==q[k+40+2]&&
q[k+40+2]==q[k+60+3]&&
q[k+60+3]==q[k+80+4])
{
m=l;
break;}}}
//左下右上胜负判断
for(i=-4;i<1;++i)
{
//边界判断
if(x+i<0||x+i+4>19||y-i>19||y-i-4<0)
continue;
else
{
//得到最左下边棋子的索引
k=(y-i)*20+x+i;
//连棋判断,若成立则修改胜负判断结果
if(q[k]==q[k-20+1]&&
q[k-20+1]==q[k-40+2]&&
q[k-40+2]==q[k-60+3]&&
q[k-60+3]==q[k-80+4])
{
m=l;
break;}}}}
//胜利结果选择
if(m!
=0)
{
//打印胜利结果
if(m==1)
printf("白棋胜利!
\n");
else
printf("黑棋胜利!
\n");
//用户输入选择
do
{
printf("重新游戏请按Y,退出游戏请按N:
\n");
j=_getch();
}while(j!
='y'&&j!
='Y'&&j!
='n'&&j!
='N');
//根据选择设置游戏状态
if(j=='y'||j=='Y')
h=1;elseh=0;}}}}
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 五子棋双人对战 C语言课程设计doc 五子棋 双人 语言 课程设计 doc