三子棋小游戏_第1页
三子棋小游戏_第2页
三子棋小游戏_第3页
三子棋小游戏_第4页
三子棋小游戏_第5页
已阅读5页,还剩25页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、 计算机学院计算机科学与技术专业计算机学院计算机科学与技术专业程序设计综合课程设计程序设计综合课程设计报告报告 (2011/2012 学年 第一学期)学生姓名:学生姓名: 学生班级:学生班级: 学学生生学学号号: 指导教师指导教师: 2012 年 01 月 04 日 三三子子棋棋 小小游游戏戏目目 录录第一章第一章 程序设计的目的和要求程序设计的目的和要求 .11.1 课程设计的目的 .1 1.2 课程设计的要求 .1第二章第二章 课程设计任务内容课程设计任务内容.32.1 课程设计题目 .32.2 课程设计介绍 .3第三章第三章 详细设计说明详细设计说明 .43.1 流程逻辑. .43.2

2、限制条件.53.3 运行结果.53.4 实验过程.8第四章第四章 实验总结及特色实验总结及特色.114.1 调试结果及截图 .11第五章第五章 课程设计心得及体会课程设计心得及体会 .13附录附录 参考文献参考文献.15附录附录 程序代码程序代码.16 1第一章第一章 课程设计目的和要求课程设计目的和要求第一节目的通过此次课程设计,进一步加深对 c+语言和运用的了解,将理论知识运用于开发的实践,并在实践中逐步掌握软件工具的使用。巩固已经学习过的 c+理论知识;进一步学习程序设计、程序调试的能力。进一步学习面向对象编程的知识和程序调试的能力; 增强 visual c+编程环境的应用能力掌握并且熟

3、练应用c+程序设计中所学知识,并学会运用。掌握函数功能的划分方法,并运用此方法解决问题。学会程序测试方案的制定,并且实现程序的测试。通过此次实践,积累经验,提高分析和解决问题的能力。 2第二节第二节 要求要求课程设计需要从整体来考虑,在大的方向下来考虑小的模块,在继续分工。作到最小化,可执行化。1) 对于课程设计需要自己筹划一下自己如何去下手,让自己的方案能够用 c+来执行。2) 对于运行结果的处理,再运行程序时可能会遇到一些其他问题,对于运行结果的处理主要是在达不到自己的期望是,就要对其进行分析。3) 错误的改正,在对于编程中错误的改正也是一重要的步骤,学会错误的改正才能更好的提高自己。4)

4、通过 c+课程设计,对 c+语言的应用及实现有更加深入的认识和理解3第二章第二章 课程设计任务内容课程设计任务内容2.1 课程设计题目井字棋小游井字棋小游戏戏2.2 课程设计介绍课程设计介绍“井字棋”的棋盘很简单,是一个 33 的格子,类似于“五子棋” “五子棋”的规则是一方首先五子连成一线就胜利;“井字棋”是一方首先三子连成一线就胜利。在 3*3 棋盘上玩游戏,实现人机对弈,x 表示计算机,0 表示人。一方取胜条件:一方的 3 个棋子连成一线,即或成一横线、或成竖线、或对角线。和棋条件:棋盘填满了,但无人能赢。4第三章第三章 详细设计说明详细设计说明第一节第一节 流程逻辑流程逻辑输入 y/n

5、开始电脑先手进行游戏玩家先手进行游戏游戏结束y n5第二节第二节 限制条件限制条件 该程序必须在 visual c+6.0 环境中运行。模式选择时,不管输入何种值,只要不是要求的输入都是无效的。程序可能有时运行较慢,玩家需要等待,但是时间是非常短的。第三节 运行结果1)开始的界面由“游戏规则”和“是否先手”两部分构成,如下图,就是实现后的界面 62)2) 当选择是否先手后,就进入了游戏开始的初始界面,也是由输入输出函完成的,每次走棋前都会显示棋盘对应的编号,有利于方便玩家下棋,下方会显示每次的走棋步骤,具体实现的效果图为:3 3)棋盘走棋是按玩家输入的数字进行的,用“x”或“o”显示在棋盘上。

6、输入部分之后的效果图为: 74)当一局完成时,会有“再来一盘?”的提示,若是,则会跳回到模式界面,重新选择是否先手,并开始程序。效果图如下: 5 5)玩家走棋时,玩家根据提示输入要走棋的位置,输入数字进行走棋,若输入错误则会提示输入错误,效果图如下:8第四步第四步 实验过程实验过程1. 玩家根据游戏规则和相关提示,选择是否先手,回车键表示完成。2. 根据提示输入相应的数字,然后在相应的位置显示出棋子“x” ,同时显示出来电脑走的棋子“o”的位置。 93. 根据电脑的走棋,玩家选择自己的走棋位置。选错位置会输出提醒,并允许重新选择。4. 重复 2-3 步,直到有一方获得胜利,或者棋盘布满所有棋子

7、,但仍未分出胜负的,显示平局。105. 至此,一局已经结束。后面会问“再来一盘” ,根据玩家要求进行:选“y”或者“y” ,则会重新进行一局,重复上述步骤。选“n”或者“n”则会按任意键退出。 11第四章第四章 实验总结及特色实验总结及特色1)程序具有较好的性能。主要表现在以下几个方面:a. 是否先手选择时,不管输入何种值,只要不是要求的输入都是无效的,效果图为: b. 玩家走棋时,任何非要求值,均报错,要求重新输入。位置重复时也会报错,效果图为: 12c一局结束时,提醒是否进行下一局时,任何非要求输入也会报错,并要求重新输入。效果图为: 13第五章第五章 课程设计心得与体会课程设计心得与体会

8、对于课程设计一开始有一种一头雾水的感觉,它是干什么的,我要怎么做。拿下来题目之后,觉得以我的能力根本就不可能实现这个题目的要求,可是慢慢我发现它并非不可实现。只要耐心的分析它要的功能需要什么函数实现,就可以做到。于是我就着手做这个程序,可是它也并不像我想得那么简单。在设计中刚开始出现了一百多个错误,令我一头雾水,但是在经过几天的检查与修改后,能够编译出来,这令我非常的高兴,但是运行结果有点出乎我的意料,所运行的结果,不能达到所期望的,但是经过一番修改后,能够输出,并且能进行游戏,这让我喜出望外。说实话这是我第一次,编写一个 200 多行的程序。虽然写的程序比较繁琐,没有任何技巧,但我觉得这是个

9、美好的开始,说明我也可以自己做东西了。在我自己写出之后都有点不敢相信自己,因为对于我来说是个编程的新手,刚学了一学期,在课程设计中,刚开始真有点对自己失去信心,但是在我真正的开始编写时,就发现事情并不是我想的那么糟,只要肯下决心就会让你自己发现原来自己的事,只有在自己真正的做了之后,才14能感觉到那种成功的喜悦,那种失败的酸辛。这次课程设计也让我感觉得到了我的不足,我也从网上找到过相同的程序源代码。并且比我的实现的功能还要多,可是我的程序却要比他们的多好几倍,这也使我很苦恼。我知道原因就是我的程序并没有分模块编译,这也是问题所在,因为模块化设计部并不太明白。我想既然这些问题暴露出来了,我也没必

10、要回避了。这次设计先搞一段落,放假后才是我追上别人的最好的时间,我将利用这段时间,好好的把这个弱项补回来。通过这次实验设计使我对 c+有了更加深刻的理解,并对他的实现有了进一步了解。15附录附录 1:参考文献:参考文献谭浩强著.c+程序设计.北京:清华大学出版社,2004谭浩强著.c+程序设计题解与上机指导.北京:清华大学出版社,200516附录附录 2:程序清单:程序清单#include #include using namespace std;typedef char chess10; /字符数组typedef int temparr10; /整型数组chess arr; /定义字符数组变

11、量temparr brr; /定义整型数组变量int number,suc,n3,c3,n2,c2,n1,c1;void inarrdata(chess a) /初始化棋盘编号 a1=1;a2=2;a3=3; a4=4;a5=5;a6=6; a7=7;a8=8;a9=9;void display(chess a) /输出棋盘状态 coutendl;coutendl; cout a1 | a2 | 17a3endl; cout -endl; cout a4 | a5 | a6endl; cout -endl; cout a7 | a8 | a9endl; coutendl;coutendl;in

12、t arrfull() /判断还有没有下棋的位置 int i; int arrf=0; for(i=1;i=9;i+) if(i=arri-48) /如果字符arri-48等于i arrf=1; /那么arrf=1,也就是可以走棋 return arrf;void cn(int line) /判断状态 switch(line) 18 case 0:c3=c3+1;break; case 1:n2=n2+1;break; case 2:c2=c2+1;break; case 3:n1=n1+1;break; case 4:c1=c1+1;break; case 5:n3=n3+1;break;

13、int linenum(char a,char b,char c) /判断状态 int ln=6; if(a=x)&(b=x)&(c=x) ln=0; if(a=o)&(b=o)&(c!=o)|(a=o)&(b!=o)&(c=o)|(a!=o)&(b=o)&(c=o) ln=1; if(a=x)&(b=x)&(c!=x)|(a=x)&(b!=x)&(c=x)|(a!=x)&(b=x)&(c=x) ln=2; 19if(a=o)&(b!=o)&(c!=o)|(a!=o)

14、&(b=o)&(c!=o)|(a!=o)&(b!=o)&(c=o) ln=3; if(a=x)&(b!=x)&(c!=x)|(a!=x)&(b=x)&(c!=x)|(a!=x)&(b!=x)&(c=x) ln=4;if(a=o)&(b=o)&(c=o) ln=5; return ln;int maxbrr(int *br) /判断最大权值 int temp,i,mb; temp=-888; for(i=1;i=9;i+) if(temp=bri) temp=bri; mb=i; 20 return

15、mb;void manstep() /人走棋处理模块 int j; display(arr); if(arrfull() /如果棋盘上还有下棋的位置,人走一步棋 coutj; while(j9)|(j!=arrj-48) coutj; arrj=o; n3=0;c3=0;n2=0;c2=0;n1=0;c1=0; number=linenum(arr1,arr2,arr3);cn(number);21 number=linenum(arr4,arr5,arr6);cn(number); number=linenum(arr7,arr8,arr9);cn(number); number=linen

16、um(arr1,arr4,arr7);cn(number); number=linenum(arr2,arr5,arr8);cn(number); number=linenum(arr3,arr6,arr9);cn(number); number=linenum(arr1,arr5,arr9);cn(number); number=linenum(arr3,arr5,arr7);cn(number); if(n3!=0) /您赢了 display(arr); coutendl; cout恭喜您赢了!endl; suc=0; 22void computerstep() /计算机走棋处理模块 in

17、t i; if(arrfull() /如果棋盘上还有可下棋的位置,则计算机走棋 for(i=1;i=9;i+) /对每一步可走的棋进行计算 if(i=arri-48) c3=0;n2=0;c2=0;n1=0;c1=0; arri=x; number=linenum(arr1,arr2,arr3);cn(number); number=linenum(arr4,arr5,arr6);cn(number); number=linenum(arr7,arr8,arr9);cn(number); number=linenum(arr1,arr4,arr7);cn(number);23 number=l

18、inenum(arr2,arr5,arr8);cn(number); number=linenum(arr3,arr6,arr9);cn(number); number=linenum(arr1,arr5,arr9);cn(number); number=linenum(arr3,arr5,arr7);cn(number); brri=(128*c3-63*n2+31*c2-15*n1+7*c1); /计算此步权值 arri=i+48; else brri=-999; arrmaxbrr(brr)=x; /确定计算机走哪一步,权值最大的一步 c3=0;n2=0;c2=0;n1=0;c1=0; number=linenum(arr1,arr2,arr3);cn(number); number=linenum(arr4,arr5,arr6);cn(number);24 number=linenum(arr7,arr8,arr9);cn(number); number=linenum(arr1,arr4,arr7);cn(number); number=linenum(arr2,arr5,arr8);cn(number); number=linenum(arr3,arr6,arr9);cn(number); number=linenum(arr1,arr5,arr9);c

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论