五子棋程序设计说明书
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
printf(" 0方累计下棋步数:%d @方累计下棋步数:%d\n",x,y);
printf("================================================================================================================\n");
五子棋是一种两人对弈的纯策略型棋类游戏,是起源于中国古代的传统黑白棋种之一。我们通过对《C语言》以及对《大学计算机基础》的初步学习后,本学期末进行了课程程序设计,设计课题为“五子棋”。我们小组由6人组成,通过分工与合作并在赵老师的耐心指导下共同完成了此程序设计。
2.设计的基本原理
问题描述
连珠(五子棋)是有两个人在一盘棋上进行对抗的竞技运动。在对局开始时,先由用户选择哪方先开局,先开局一方将一枚棋子落在一点上,然后由另一方在对方棋周围的交叉点上落子,如此轮流落子,直到某一方首先在棋盘的直线、横线或斜线上形成连续的五子则该方就算获胜。此时,算法结束。需求分析
中北大学
程序设计
课程设计说明书
学生姓名:学 号:
学 院:信息与通信工程学院
专 业:光电信息工程
题 目:五子棋
指导教师:职称:
2012年01月06日
(纪念我已经逝去的大学生活)
院:信息与通信工程学院
专 业:光电信息工程
学 生 姓 名:学 号:
课程设计题目:五子棋
起 迄 日 期:2011年12月24日~2012年1月6日
for(i=0;i<65;i++) //输出横纵坐标//
printf("%2d",i);
printf("\n");
for(i=1;i<65;i++)
{
for(j=0;j<65;j++)
{
if(j==0)
{
w+=1;
printf("%2d",w);
}
else
{
printf("%2c",a[i][j]);
5.设计成果形式及要求:
课程说明书打印,并装订;
源自文库必要的程序流程图和程序附录。
6.工作计划及进度:
2011年12月24日~2011年12月26日下达设计任务书,学生熟悉设计内容;
2011年12月27日~2011年12月29日查阅参考资料,确定基本设计方案;
2011年12月29日~2012年01月04日C语言进行程序设计;
附录
负责人
设计内容
Viod judge()函数的设计及程序的调试
Viod judge()函数的设计及程序的调试
Void move()函数的设计及课程设计说明书的排版制作
Int playing()函数的设计及程序的调试
Void showcheckerboard()函数设计及相关操作
Void show()函数的设计及程序的调试
case 97: *y=*y-1;break; //a键控制棋子左移//
case 115: *x=*x+1;break; //s键控制棋子下移//
case 100: *y=*y+1;break; //d键控制棋子右移//
case 111: flag=0;break; //o键确定落子//
}
if(flag==0) break; //判断某步是否移动完成//
{b[i][j]=46;}
for(i=0;i<40;i++) //对图像数组特定点赋值//
for(j=0;j<40;j++)
{
if(i>10&&i<16)
{if(j>10&&j<16||j>25&&j<31)
b[i][j]='O';}
else
{
if(i==21)
{if(j>=6&&j<=35)
b[i][j]='O';}
{
int i,j,w=0; //i,j为横纵坐标变量//
printf("================================================================================================================\n");
void move(int *p1,int *p2);
void showcheckerboard(int x,int y);
printf("O方先输入首子坐标:");
scanf("%d %d",&x,&y); //输入首坐标//
a[x][y]='O'; //首坐标的棋盘位置画棋子//
showcheckerboard(m,n); //输出更新后的棋盘//
}
}
}
}
for(i=0;i<40;i++) //输出图像数组//
{
for(j=0;j<40;j++)
printf("%c",b[i][j]);
printf("\n");
}
}
void move(int *x,int *y) /*移动棋子的方向*/ //x为上一步棋子横坐标,y为上一步棋子纵坐标//
{
char b[40]; //为记录棋子将要移动的步伐//
程序应该具有以下基本功能:
1.显示欢迎界面。
2.玩家棋子可选,棋盘范围足够。
3.落子时间倒计时。
设计要求:
1.不同的功能使用不同的函数实现(模块化),对每个函数的功能和调用接口要
注释清楚。对程序其它部分也进行必要的注释。
3.对系统进行功能模块分析、画出总流程图和各模块流程图。
4.用户界面要求使用方便、简洁明了、美观大方、格式统一。
for(i=0;i<2000;i++) //改变玩家//
{
if(flag==1)
flag=0;
else
flag=1;
for(k=0;k<2000;k++) //玩家落子并判断下的棋子是否过界或此处是否有子//
{
if(flag==1)
{printf("O方下棋\n");m++;}
else
{printf("@方下棋\n");n++;}
b[i][j]='O';}
else
{
if(i==26)
{if(j>=12&&j<=28)
b[i][j]='O';}
else
{
if(i==27)
{if(j>=14&&j<=26)
b[i][j]='O';}
else
{
if(i==28)
{if(j>=17&&j<=23)
b[i][j]='O';}
}
}
}
}
}
课程设计地点:111420
指 导 教 师:
系 主 任:
下达任务书日期:2011年12月25日
课 程 设 计 任 务 书
1.设计目的:
1 熟悉C语言程序设计的原理与方法;
2 掌握C语言开发环境下程序的具体设计;
3 掌握利用C语言分析解决具体问题。
2.设计内容和要求:
设计内容:
用C语言设计一个五子棋游戏程序,允许游戏者自由选择棋子颜色,实现人人对战和人机对战,利用时间函数设置实现落子倒计时功能
move(p1,p2);
if(x>=1&&x<=64&&y>=1&&y<=64)
{
if(a[x][y]==46) break;
else
{if(flag==1) m--; else n--;
printf("此处有子,请继续移子");
continue;
}
}
else {if(flag==1) m--; else n--;printf("此处过界,请继续移子");}
}
}
printf("\n");
}
}
int judge(int x,int y) /*判断各方向五子是否连成一线*/ //x,y分别为横纵坐标//
设计背景及意义
我们的五子棋程序是在Visual C++ 环境下运行的。
Visual C++
Microsoft Visual C++(简称Visual C++、MSVC、VC++或VC)微软公司的C++开发工具,具有集成开发环境,可提供编辑C语言,C++以及C++/CLI等编程语言。VC++整合了便利的除错工具,特别是整合了微软视窗程式设计(Windows API)、三维动画DirectX API,Microsoft .NET框架。目前最新的版本是Microsoft Visual C++ 2010。Visual C++集成了,于1998发行。发行至今一直被广泛地用于大大小小的项目开发。
}
}
int playing() /*开始下棋*/
{
int flag=1,i=0,x=0,y=0,k,l,n=0,m=1; //flag为记录哪方下棋的标志变量,x,y为a[][]的横纵坐标,m,n分别记录o方,@方的积累步数//
int *p1=&x,*p2=&y;
int judge (int x,int y); //本函数所用子函数的声明//
2012年01月05日~2012年01月06日完成设计报告;
2012年01月06日答辩;
系主任审查意见:
签字:
年月日
1、课程设计的背景及意义……………....06
2、设计的基本原理………………………06
3、设计的基本过程………………………08
4、设计的结果……………………………10
5、总结和结论…………………………….11
(1)输出棋盘界面
(2)要求玩家选择棋子
(3)玩家轮流下棋
(4)判断键盘输入哪个键按规则执行操作
(5)判断谁先落棋
(6)判断赢家
(7)输出结果界面
流程图
3设计的基本过程
char b[40][40];
void show(),再接下来的双for是为塑形:限定行间距为10<i<16,再限定列间距为10<j<16或25<j<31,用判断语句来塑造图形“双眼”;当i=21时,限定6<=j<=25,当i=22,23,24,25,26,27时同理,用判断语句来塑造“嘴”,最后用双for语句来输出图形。
else
{
if(i==22)
{if(j>=7&&j<=34)
b[i][j]='O';}
else
{
if(i==23)
{if(j>=8&&j<=33)
b[i][j]='O';}
else
{
if(i==24)
{if(j>=9&&j<=31)
b[i][j]='O';}
else
{
if(i==25)
{if(j>=10&&j<=30)
4设计结果
玩家获胜显示界面截图
5总结与结论
课程设计是培养学生综合运用所学知识,发现,提出,分析和解决实际问题,锻炼实践能力的重要环节,是对学生实际工作能力的具体训练和考察过程.回顾起此次课程程序设计,至今我仍感慨颇多,从选题到定稿,从理论到实践,在整整两星期的日子里,学到很多很多的的东西,不仅巩固了以前所学过的知识,而且学到了很多在书本上所没有学到过的知识。通过这次课程设计使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,才能真正提高自己的实际动手能力和独立思考的能力。在设计的过程中难免会遇到过各种各样的问题,同时在设计的过程中也发现了自己的不足之处,对以前所学过的知识理解得不够深刻,掌握得不够牢固,通过这次课程设计之后,把以前所学过的知识重新温故。这次课程设计顺利完成了,在设计中遇到了很多编程问题,最后在赵宇老师的辛勤指导下,终于游逆而解。同时,在赵宇老师的身上我学得到很多实用的知识,我表示感谢!同时,对给过我帮助的所有同学和各位指导老师再次表示忠心的感谢!
int i,z,flag=1; //z为某一步的中间变量,flag为标志变量//
gets(b); //输入要移动的步伐//
for(i=0;i<40;i++)
{
z=b[i]; //把b【】的某一步传递给z//
switch(z) //判断移动棋子方向//
{
case 119: *x=*x-1;break; //w键控制棋子上移//
程序源代码:
#include<>
#include<>
char a[65][65];
char b[40][40];
void show() //输出获胜图像//
{
int i=0,j=0; //i为横坐标变量,j为纵坐标变量//
for(i=0;i<40;i++) //对图像数组赋初值//
for(j=0;j<40;j++)
5.所有程序需在Win-Tc 或Microsoft Visual C++ 环境调试通过。
3.设计工作任务及工作量的要求〔包括课程设计计算说明书(论文)、图纸、实物样品等〕:
课程设计说明书一份;
电子文档(说明书、设计程序)一份
课 程 设 计 任 务 书
4.主要参考文献:
谭浩强 《c程序设计》 北京大学出版社
}
if(flag==1) //在a[][]的特定位置更新字符//
a[x][y]='O';
else
a[x][y]='@';
showcheckerboard(m,n); //更新棋盘//
l=judge(x,y); //记录谁赢变量//
if(l==1) return flag;
}
}
void showcheckerboard(int x,int y) /*画出棋盘*/ //x,y分别为o方下棋步数,@方下棋步数//
printf("================================================================================================================\n");
五子棋是一种两人对弈的纯策略型棋类游戏,是起源于中国古代的传统黑白棋种之一。我们通过对《C语言》以及对《大学计算机基础》的初步学习后,本学期末进行了课程程序设计,设计课题为“五子棋”。我们小组由6人组成,通过分工与合作并在赵老师的耐心指导下共同完成了此程序设计。
2.设计的基本原理
问题描述
连珠(五子棋)是有两个人在一盘棋上进行对抗的竞技运动。在对局开始时,先由用户选择哪方先开局,先开局一方将一枚棋子落在一点上,然后由另一方在对方棋周围的交叉点上落子,如此轮流落子,直到某一方首先在棋盘的直线、横线或斜线上形成连续的五子则该方就算获胜。此时,算法结束。需求分析
中北大学
程序设计
课程设计说明书
学生姓名:学 号:
学 院:信息与通信工程学院
专 业:光电信息工程
题 目:五子棋
指导教师:职称:
2012年01月06日
(纪念我已经逝去的大学生活)
院:信息与通信工程学院
专 业:光电信息工程
学 生 姓 名:学 号:
课程设计题目:五子棋
起 迄 日 期:2011年12月24日~2012年1月6日
for(i=0;i<65;i++) //输出横纵坐标//
printf("%2d",i);
printf("\n");
for(i=1;i<65;i++)
{
for(j=0;j<65;j++)
{
if(j==0)
{
w+=1;
printf("%2d",w);
}
else
{
printf("%2c",a[i][j]);
5.设计成果形式及要求:
课程说明书打印,并装订;
源自文库必要的程序流程图和程序附录。
6.工作计划及进度:
2011年12月24日~2011年12月26日下达设计任务书,学生熟悉设计内容;
2011年12月27日~2011年12月29日查阅参考资料,确定基本设计方案;
2011年12月29日~2012年01月04日C语言进行程序设计;
附录
负责人
设计内容
Viod judge()函数的设计及程序的调试
Viod judge()函数的设计及程序的调试
Void move()函数的设计及课程设计说明书的排版制作
Int playing()函数的设计及程序的调试
Void showcheckerboard()函数设计及相关操作
Void show()函数的设计及程序的调试
case 97: *y=*y-1;break; //a键控制棋子左移//
case 115: *x=*x+1;break; //s键控制棋子下移//
case 100: *y=*y+1;break; //d键控制棋子右移//
case 111: flag=0;break; //o键确定落子//
}
if(flag==0) break; //判断某步是否移动完成//
{b[i][j]=46;}
for(i=0;i<40;i++) //对图像数组特定点赋值//
for(j=0;j<40;j++)
{
if(i>10&&i<16)
{if(j>10&&j<16||j>25&&j<31)
b[i][j]='O';}
else
{
if(i==21)
{if(j>=6&&j<=35)
b[i][j]='O';}
{
int i,j,w=0; //i,j为横纵坐标变量//
printf("================================================================================================================\n");
void move(int *p1,int *p2);
void showcheckerboard(int x,int y);
printf("O方先输入首子坐标:");
scanf("%d %d",&x,&y); //输入首坐标//
a[x][y]='O'; //首坐标的棋盘位置画棋子//
showcheckerboard(m,n); //输出更新后的棋盘//
}
}
}
}
for(i=0;i<40;i++) //输出图像数组//
{
for(j=0;j<40;j++)
printf("%c",b[i][j]);
printf("\n");
}
}
void move(int *x,int *y) /*移动棋子的方向*/ //x为上一步棋子横坐标,y为上一步棋子纵坐标//
{
char b[40]; //为记录棋子将要移动的步伐//
程序应该具有以下基本功能:
1.显示欢迎界面。
2.玩家棋子可选,棋盘范围足够。
3.落子时间倒计时。
设计要求:
1.不同的功能使用不同的函数实现(模块化),对每个函数的功能和调用接口要
注释清楚。对程序其它部分也进行必要的注释。
3.对系统进行功能模块分析、画出总流程图和各模块流程图。
4.用户界面要求使用方便、简洁明了、美观大方、格式统一。
for(i=0;i<2000;i++) //改变玩家//
{
if(flag==1)
flag=0;
else
flag=1;
for(k=0;k<2000;k++) //玩家落子并判断下的棋子是否过界或此处是否有子//
{
if(flag==1)
{printf("O方下棋\n");m++;}
else
{printf("@方下棋\n");n++;}
b[i][j]='O';}
else
{
if(i==26)
{if(j>=12&&j<=28)
b[i][j]='O';}
else
{
if(i==27)
{if(j>=14&&j<=26)
b[i][j]='O';}
else
{
if(i==28)
{if(j>=17&&j<=23)
b[i][j]='O';}
}
}
}
}
}
课程设计地点:111420
指 导 教 师:
系 主 任:
下达任务书日期:2011年12月25日
课 程 设 计 任 务 书
1.设计目的:
1 熟悉C语言程序设计的原理与方法;
2 掌握C语言开发环境下程序的具体设计;
3 掌握利用C语言分析解决具体问题。
2.设计内容和要求:
设计内容:
用C语言设计一个五子棋游戏程序,允许游戏者自由选择棋子颜色,实现人人对战和人机对战,利用时间函数设置实现落子倒计时功能
move(p1,p2);
if(x>=1&&x<=64&&y>=1&&y<=64)
{
if(a[x][y]==46) break;
else
{if(flag==1) m--; else n--;
printf("此处有子,请继续移子");
continue;
}
}
else {if(flag==1) m--; else n--;printf("此处过界,请继续移子");}
}
}
printf("\n");
}
}
int judge(int x,int y) /*判断各方向五子是否连成一线*/ //x,y分别为横纵坐标//
设计背景及意义
我们的五子棋程序是在Visual C++ 环境下运行的。
Visual C++
Microsoft Visual C++(简称Visual C++、MSVC、VC++或VC)微软公司的C++开发工具,具有集成开发环境,可提供编辑C语言,C++以及C++/CLI等编程语言。VC++整合了便利的除错工具,特别是整合了微软视窗程式设计(Windows API)、三维动画DirectX API,Microsoft .NET框架。目前最新的版本是Microsoft Visual C++ 2010。Visual C++集成了,于1998发行。发行至今一直被广泛地用于大大小小的项目开发。
}
}
int playing() /*开始下棋*/
{
int flag=1,i=0,x=0,y=0,k,l,n=0,m=1; //flag为记录哪方下棋的标志变量,x,y为a[][]的横纵坐标,m,n分别记录o方,@方的积累步数//
int *p1=&x,*p2=&y;
int judge (int x,int y); //本函数所用子函数的声明//
2012年01月05日~2012年01月06日完成设计报告;
2012年01月06日答辩;
系主任审查意见:
签字:
年月日
1、课程设计的背景及意义……………....06
2、设计的基本原理………………………06
3、设计的基本过程………………………08
4、设计的结果……………………………10
5、总结和结论…………………………….11
(1)输出棋盘界面
(2)要求玩家选择棋子
(3)玩家轮流下棋
(4)判断键盘输入哪个键按规则执行操作
(5)判断谁先落棋
(6)判断赢家
(7)输出结果界面
流程图
3设计的基本过程
char b[40][40];
void show(),再接下来的双for是为塑形:限定行间距为10<i<16,再限定列间距为10<j<16或25<j<31,用判断语句来塑造图形“双眼”;当i=21时,限定6<=j<=25,当i=22,23,24,25,26,27时同理,用判断语句来塑造“嘴”,最后用双for语句来输出图形。
else
{
if(i==22)
{if(j>=7&&j<=34)
b[i][j]='O';}
else
{
if(i==23)
{if(j>=8&&j<=33)
b[i][j]='O';}
else
{
if(i==24)
{if(j>=9&&j<=31)
b[i][j]='O';}
else
{
if(i==25)
{if(j>=10&&j<=30)
4设计结果
玩家获胜显示界面截图
5总结与结论
课程设计是培养学生综合运用所学知识,发现,提出,分析和解决实际问题,锻炼实践能力的重要环节,是对学生实际工作能力的具体训练和考察过程.回顾起此次课程程序设计,至今我仍感慨颇多,从选题到定稿,从理论到实践,在整整两星期的日子里,学到很多很多的的东西,不仅巩固了以前所学过的知识,而且学到了很多在书本上所没有学到过的知识。通过这次课程设计使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,才能真正提高自己的实际动手能力和独立思考的能力。在设计的过程中难免会遇到过各种各样的问题,同时在设计的过程中也发现了自己的不足之处,对以前所学过的知识理解得不够深刻,掌握得不够牢固,通过这次课程设计之后,把以前所学过的知识重新温故。这次课程设计顺利完成了,在设计中遇到了很多编程问题,最后在赵宇老师的辛勤指导下,终于游逆而解。同时,在赵宇老师的身上我学得到很多实用的知识,我表示感谢!同时,对给过我帮助的所有同学和各位指导老师再次表示忠心的感谢!
int i,z,flag=1; //z为某一步的中间变量,flag为标志变量//
gets(b); //输入要移动的步伐//
for(i=0;i<40;i++)
{
z=b[i]; //把b【】的某一步传递给z//
switch(z) //判断移动棋子方向//
{
case 119: *x=*x-1;break; //w键控制棋子上移//
程序源代码:
#include<>
#include<>
char a[65][65];
char b[40][40];
void show() //输出获胜图像//
{
int i=0,j=0; //i为横坐标变量,j为纵坐标变量//
for(i=0;i<40;i++) //对图像数组赋初值//
for(j=0;j<40;j++)
5.所有程序需在Win-Tc 或Microsoft Visual C++ 环境调试通过。
3.设计工作任务及工作量的要求〔包括课程设计计算说明书(论文)、图纸、实物样品等〕:
课程设计说明书一份;
电子文档(说明书、设计程序)一份
课 程 设 计 任 务 书
4.主要参考文献:
谭浩强 《c程序设计》 北京大学出版社
}
if(flag==1) //在a[][]的特定位置更新字符//
a[x][y]='O';
else
a[x][y]='@';
showcheckerboard(m,n); //更新棋盘//
l=judge(x,y); //记录谁赢变量//
if(l==1) return flag;
}
}
void showcheckerboard(int x,int y) /*画出棋盘*/ //x,y分别为o方下棋步数,@方下棋步数//