1、C语言课程设计,三子连珠,程序说明,程序说明:模仿五子棋的形式,有一方三子连成一线即获胜。程序设计要求:(1)玩家可以设置棋盘的大小,即在游戏开始时输入一变量n(n=39),使棋盘的大小为nn。(2)本程序有if-else选择语句来判断获胜者,如果棋盘变大这将非常繁琐,现要求将这一功能用循环语句实现,且适用于任意大小的棋盘。(3)可以设置悔棋功能,要求任意方可以在对方下棋后悔改一步,即将对方当前步和本方上一步删除,本方重新下棋。,课程设计实验内容报告,整个程序采用数据循环与if-else选择语句等相结合的编程方法一共完成了棋盘的设置,还可以判断获胜,其中还可以悔棋功能。 数据中建立了stati
2、c void InitialBoard(void);初始化棋盘,static int nSize;建立了棋盘的大小。 If-else语句包含了int Judge();判断获胜,运用了选择语句如果甲方三个棋子连成一条线,就判断了甲方获胜。乙方也一样,如果两方的三个棋子都没有连成则判断平局。,源程序代码(page1),#include #include using namespace std;class CGobang /棋子类private: char chSort; /棋子的类别 int nWin; /赢棋的次数 int nLose; /输棋的次数 static int nDraw; /平局次
3、数 static char achBoard33; /棋盘 static int nSize; /棋盘的尺寸 nSize X nSizepublic: CGobang(char chsort) /构造函数,决定一方棋子的类别 ,Page(2),chSort=chsort; nWin=nLose=nDraw=0; void PlayTurn(void); /走1步棋 int Judge(); /判断是否连成一线,是则返回1,否则返回0 void Win(void); /赢棋 void Lose(void); /输棋 static void Draw(void); /平局 void PrintIn
4、fo(void); /输出总体情况 static void PrintBoard(void); /输出棋盘 static int GetFull(void); /判断棋盘是否已布满棋子 static void InitialBoard(void); /初始化棋盘;,Page(3),char CGobang:achBoard33;int CGobang:nSize = 3;int CGobang:nDraw = 0;void CGobang:Draw() cout nntt平局!nn; nDraw+;void CGobang:InitialBoard() /初始化棋盘 for(int i=0;i
5、nSize;i+) for(int j=0;jnSize;j+) achBoardij= ;,Page(4),void CGobang:PrintBoard() /输出棋盘 cout endl; cout 1 2 3 endl; cout 1 achBoard00 | achBoard01 | achBoard02 endl; cout -|-|- endl; cout 2 achBoard10 | achBoard11 | achBoard12 endl; cout -|-|- endl; cout 3 achBoard20 | achBoard21 | achBoard22 endl; c
6、out endl; cout endl;,Page(5),int CGobang:GetFull() /判断棋盘是否布满棋子,若是返回1 for(int i=0;inSize;i+) for(int j=0;jnSize;j+) if(achBoardij!= ) return 0; return 1;void CGobang:Win() /赢棋 cout nnttchSort nRow nCol; /输入坐标 if(nRownSize | nColnSize) /判断坐标越界 cout 输入的坐标越界,x与y的范围应小于等于nSize,请重新输入n; else if(achBoardnRow
7、-1nCol-1!= ) /判断坐标合理 cout 棋盘(nRow ,nCol )处已有棋子,请重新输入n; else achBoardnRow-1nCol-1=chSort; /在坐标处放上棋子 break; /退出循环 ,Page(7),while(1);int CGobang:Judge() /判断是否棋子连成一线,若是返回1/以下是各种可能连成一线的情况 if(achBoard00=chSort ,Page(8),else if(achBoard02=chSort /没有连成一线则返回0,Page(9),void CGobang:PrintInfo(void) /打印总体情况 cout
8、 Side chSort方共计赢 nWin 局,输 nLose 局,平 nDraw 局。endl;void PrintRule(void) /打印规则 cout tt欢迎使用三子连珠游戏! endl endl; cout t游戏规则: endl; cout t1.每1步输入要下棋的格子的x,y坐标,按Enter键n; cout t2.有1方首先3个棋子连成一线即判获胜n; cout t3.当棋子布满棋盘但仍无获胜方即为平局n; cout t4.X方先行n; cout strChoice;,Page(14),while(strChoice = Y | strChoice = y); SideX.
9、PrintInfo(); SideO.PrintInfo(); cout nnt欢迎再次使用三子连珠游戏! endl endl; return 0;,运行结果 1,2,3,4,5,6,7,8,9,课程设计总结,通过这次课程设计,我又收获到很多,平时的在做作业时,因为题形与结构都是很简单的,并且每一章的内容都是有相应的例题可以参考,所以在做题时没有遇到过很麻烦的问题,而这次不同了,一个课题拿到手时,给我的感觉是无从下手,而且要求很多,使得题目要求更大了.我将整个程序分成几块完成,这个大程序主要有棋盘的设计,输入棋子的功能,判断获胜,还有悔棋功能。在调试是非常困惑,使得我没自信做下次,不过查询程序课程设计通过书上的知识,也读了里面的很多程序,了解某些知识点。经过这次课程设计我发现了很多自己欠缺的地方,又一次将程序整个进行调试。最后把程序完善了许多。,参考书目,程序课程设计 C+程序设计,指导教师,高攀,