三子棋小游戏课程设计.docx
- 文档编号:24645920
- 上传时间:2023-05-29
- 格式:DOCX
- 页数:13
- 大小:87.19KB
三子棋小游戏课程设计.docx
《三子棋小游戏课程设计.docx》由会员分享,可在线阅读,更多相关《三子棋小游戏课程设计.docx(13页珍藏版)》请在冰豆网上搜索。
三子棋小游戏课程设计
三子棋小游戏课程设计
计算机学院计算机科学与技术专业
《程序设计综合课程设计》报告
(2011/2012学年第一学期)
学生姓名:
学生班级:
学生学号:
指导教师:
2012年01月04日
三
子
棋
小
游
戏
第一章程序设计的目的和要求1
课程设计的目的......1
课程设计的要求1
第二章课程设计任务内容3
课程设计题目3
课程设计介绍3
第三章详细设计说明..4
流程逻辑.............................................................4
限制条件..............................................................5
运行结果..............................................................5
实验过程..............................................................8
第四章实验总结及特色11
调试结果及截图11
第五章课程设计心得及体会13
附录Ⅰ参考文献15
附录Ⅱ程序代码16
第一章课程设计目的和要求
目的
通过此次课程设计,进一步加深对C++语言和运用的了解,将理论知识运用于开发的实践,并在实践中逐步掌握软件工具的使用。
巩固已经学习过的C++理论知识;进一步学习程序设计、程序调试的能力。
进一步学习面向对象编程的知识和程序调试的能力;增强VisualC++编程环境的应用能力
掌握并且熟练应用《C++程序设计》中所学知识,并学会运用。
掌握函数功能的划分方法,并运用此方法解决问题。
学会程序测试方案的制定,并且实现程序的测试。
通过此次实践,积累经验,提高分析和解决问题的能力。
第二节要求
课程设计需要从整体来考虑,在大的方向下来考虑小的模块,在继续分工。
作到最小化,可执行化。
对于课程设计需要自己筹划一下自己如何去下手,让自己的方案能够用C++来执行。
对于运行结果的处理,再运行程序时可能会遇到一些其他问题,对于运行结果的处理主要是在达不到自己的期望是,就要对其进行分析。
错误的改正,在对于编程中错误的改正也是一重要的步骤,学会错误的改正才能更好的提高自己。
4)通过c++课程设计,对c++语言的应用及实现有更加深入的认识和理解
第二章课程设计任务内容
课程设计题目
井字棋小游戏
课程设计介绍
“井字棋”的棋盘很简单,是一个3×3的格子,类似于“五子棋”“五子棋”的规则是一方首先五子连成一线就胜利;“井字棋”是一方首先三子连成一线就胜利。
在3*3棋盘上玩游戏,实现人机对弈,x表示计算机,0表示人。
一方取胜条件:
一方的3个棋子连成一线,即或成一横线、或成竖线、或对角线。
和棋条件:
棋盘填满了,但无人能赢。
第三章详细设计说明
第二节限制条件
该程序必须在VisualC++环境中运行。
模式选择时,不管输入何种值,只要不是要求的输入都是无效的。
程序可能有时运行较慢,玩家需要等待,但是时间是非常短的。
第三节运行结果
1)开始的界面由“游戏规则”和“是否先手”两部分构成,如下图,就是实现后的界面
2当选择是否先手后,就进入了游戏开始的初始界面,也是由输入输出函完成的,每次走棋前都会显示棋盘对应的编号,有利于方便玩家下棋,下方会显示每次的走棋步骤,具体实现的效果图为:
3)棋盘走棋是按玩家输入的数字进行的,用“X”或“O”显示在棋盘上。
输入部分之后的效果图为:
4)当一局完成时,会有“再来一盘?
”的提示,若是,则会跳回到模式界面,重新选择是否先手,并开始程序。
效果图如下:
5)玩家走棋时,玩家根据提示输入要走棋的位置,输入数字进行走棋,若输入错误则会提示输入错误,效果图如下:
第四步实验过程
1.玩家根据游戏规则和相关提示,选择是否先手,回车键表示完成。
2.根据提示输入相应的数字,然后在相应的位置显示出棋子“X”,同时显示出来电脑走的棋子“O”的位置。
3.根据电脑的走棋,玩家选择自己的走棋位置。
选错位置会输出提醒,并允许重新选择。
4.重复2-3步,直到有一方获得胜利,或者棋盘布满所有棋子,但仍未分出胜负的,显示平局。
5.至此,一局已经结束。
后面会问“再来一盘”,根据玩家要求进行:
选“y”或者“Y”,则会重新进行一局,重复上述步骤。
选“n”或者“N”则会按任意键退出。
第四章实验总结及特色
1)程序具有较好的性能。
主要表现在以下几个方面:
a.是否先手选择时,不管输入何种值,只要不是要求的输入都是无效的,效果图为:
玩家走棋时,任何非要求值,均报错,要求重新输入。
位置重复时也会报错,效果图为:
C.一局结束时,提醒是否进行下一局时,任何非要求输入也会报错,并要求重新输入。
效果图为:
第五章课程设计心得与体会程序清单#include
#include
usingnamespacestd;
typedefcharchess[10];//字符数组
typedefinttemparr[10];//整型数组
chessarr;//定义字符数组变量
temparrbrr;//定义整型数组变量
intnumber,suc,n3,c3,n2,c2,n1,c1;
voidinarrdatachessa//初始化棋盘编号
a[1]'1';a[2]'2';a[3]'3';
a[4]'4';a[5]'5';a[6]'6';
a[7]'7';a[8]'8';a[9]'9';
voiddisplaychessa//输出棋盘状态
coutendl;coutendl;
cout""a[1]""'|'""a[2]""'|'""a[3]endl;
cout"-----------"endl;
cout""a[4]""'|'""a[5]""'|'""a[6]endl;
cout"-----------"endl;
cout""a[7]""'|'""a[8]""'|'""a[9]endl;
coutendl;coutendl;
intarrfull//判断还有没有下棋的位置
inti;
intarrf0;
fori1;i9;i++
ifiarr[i]-48//如果字符arr[i]-48等于i
arrf1;//那么arrf1,也就是可以走棋
returnarrf;
voidcnintline//判断状态
switchline
case0:
c3c3+1;break;
case1:
n2n2+1;break;
case2:
c2c2+1;break;
case3:
n1n1+1;break;
case4:
c1c1+1;break;
case5:
n3n3+1;break;
intlinenumchara,charb,charc//判断状态
intln6;
ifa'X'&&b'X'&&c'X'
ln0;
ifa'O'&&b'O'&&c!
'O'||a'O'&&b!
'O'&&c'O'||a!
'O'&&b'O'&&c'O'
ln1;
ifa'X'&&b'X'&&c!
'X'||a'X'&&b!
'X'&&c'X'||a!
'X'&&b'X'&&c'X'
ln2;
ifa'O'&&b!
'O'&&c!
'O'||a!
'O'&&b'O'&&c!
'O'||a!
'O'&&b!
'O'&&c'O'
ln3;
ifa'X'&&b!
'X'&&c!
'x'||a!
'X'&&b'X'&&c!
'X'||a!
'X'&&b!
'X'&&c'X'
ln4;
ifa'O'&&b'O'&&c'O'
ln5;
returnln;
intbrrint*br//判断最大权值
inttemp,i,mb;
temp-888;
fori1;i9;i++
iftempbr[i]
tempbr[i];
mbi;
returnmb;
voidmanstep//人走棋处理模块
intj;
displayarr;
ifarrfull//如果棋盘上还有下棋的位置,人走一步棋
cout"您要走哪一步?
请输入数字(1--9):
";
cinj;
whilej1||j9||j!
arr[j]-48
cout"对不起,您输入的数字不对,请重新输入(1--9):
";
cinj;
arr[j]'O';
n30;c30;n20;c20;n10;c10;
numberlinenumarr[1],arr[2],arr[3];cnnumber;
numberlinenumarr[4],arr[5],arr[6];cnnumber;
numberlinenumarr[7],arr[8],arr[9];cnnumber;
numberlinenumarr[1],arr[4],arr[7];cnnumber;
numberlinenumarr[2],arr[5],arr[8];cnnumber;
numberlinenumarr[3],arr[6],arr[9];cnnumber;
numberlinenumarr[1],arr[5],arr[9];cnnumber;
numberlinenumarr[3],arr[5],arr[7];cnnumber;
ifn3!
0//您赢了
displayarr;
coutendl;
cout"恭喜您赢了!
!
!
"endl;
suc0;
voidcomputerstep//计算机走棋处理模块
inti;
ifarrfull//如果棋盘上还有可下棋的位置,则计算机走棋
fori1;i9;i++//对每一步可走的棋进行计算
ifiarr[i]-48
c30;n20;c20;n10;c10;
arr[i]'X';
numberlinenumarr[1],arr[2],arr[3];cnnumber;
numberlinenumarr[4],arr[5],arr[6];cnnumber;
numberlinenumarr[7],arr[8],arr[9];cnnumber;
numberlinenumarr[1],arr[4],arr[7];cnnumber;
numberlinenumarr[2],arr[5],arr[8];cnnumber;
numberlinenumarr[3],arr[6],arr[9];cnnumber;
numberlinenumarr[1],arr[5],arr[9];cnnumber;
numberlinenumarr[3],arr[5],arr[7];cnnumber;
brr[i]128*c3-63*n2+31*c2-15*n1+7*c1;//计算此步权值
arr[i]i+48;
else
brr[i]-999;
arr[brrbrr]'X';//确定计算机走哪一步,权值最大的一步
c30;n20;c20;n10;c10;
numberlinenumarr[1],arr[2],arr[3];cnnumber;
numberlinenumarr[4],arr[5],arr[6];cnnumber;
numberlinenumarr[7],arr[8],arr[9];cnnumber;
numberlinenumarr[1],arr[4],arr[7];cnnumber;
numberlinenumarr[2],arr[5],arr[8];cnnumber;
numberlinenumarr[3],arr[6],arr[9];cnnumber;
numberlinenumarr[1],arr[5],arr[9];cnnumber;
numberlinenumarr[3],arr[5],arr[7];cnnumber;
ifc3!
0//计算机已赢
displayarr;
coutendl;
cout"计算机赢了!
!
!
"endl;
suc0;
else
suc0;
intmain
cout"游戏规则:
"endl"棋盘格式如图,人和计算机在棋盘上交替走棋"endl;
cout"约定计算机使用符号X,人使用符号O"endl;
cout"谁先使一横行或一竖行或对角线上有三个自己的符号,就胜利了!
"endl;
strings"y";
stringch;
whiles"y"||s"Y"
inarrdataarr;//棋盘坐标编号
displayarr;//显示初始棋盘
suc1;
cout"请选择您是否先走?
y/n";
cinch;
whilech!
"y"&&ch!
"Y"&&ch!
"n"&&ch!
"N"
cout"错误!
请输入y或n:
";
cinch;
ifch"y"||ch"Y"//输入Y,表示人先走棋
whilesuc
manstep;
computerstep;
else//计算机先走棋
whilesuc
computerstep;
ifsuc
manstep;
ifn30&&c30
coutendl"和棋!
"endlendl;
coutendl"再来一盘y/n?
";
cins;
whiles!
"y"&&s!
"Y"&&s!
"n"&&s!
"N"
cout"错误!
请输入y或n:
";
cins;
return0;
27
1
输入y/n
开始
电脑先手
进行游戏
玩家先手
进行游戏
游戏
结束
Y
n
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 三子棋 小游戏 课程设计