《c++课程设计论文三子连珠》由会员分享,可在线阅读,更多相关《c++课程设计论文三子连珠(8页珍藏版)》请在金锄头文库上搜索。
1、C+课程设计报告 任课教师 钱芸生 时间 2014/4/5 实验题目 三子连珠游戏 评定难易级别 B级 实验报告成绩 一 题目名称:三子连珠游戏 二 难度等级:B 级 三 程序功能介绍 该程序是TICTACTOE 游戏,棋盘为33,3 个棋 子连起来即为赢。输入参数时,若输入的数字超出边界或在已有的地方再输入,则提示出错, 要求重新输入。 四 课程设计要求: (1) 将程序改写成类。 (2) 将棋盘扩充成 44。 (3) 统计输赢结果并打印输出。 (4) 选做:使游戏更生动。 (输赢条件相同) 。 五 程序设计思想设计一个玩家下棋的操作类,里面封装了棋盘棋子类别和输赢次数等成员数据,操作 类的
2、函数包括有初始化棋盘下棋判断输赢等。定义一个类的对象,在调用类中函数时直 接使用对象名加函数名即可。将两个玩家定义为两个数组用于区分他们的信息,分别用 O和X代表两个玩家所用棋子,然后分别对两个玩家通过已定义的类的对象调用类 中的函数,完成下棋过程。进一步改进程序: 1. 程序中用 if else if 格式的语句来判断玩家的输赢,当棋盘增大时,三子连珠的各种 可能性成倍增加,使得语句非常繁琐,所以将其改为 for语句的循环结构进行判断, 当棋盘增大时,只需更改循环条件结束的参数即可,可灵活使用于各种尺寸的棋盘。 2. 为防止用户误操作,特别是在姓名的输入时的失误,可以采用 cin.getli
3、ne 函数读入 在判断确认。 3. 在完成第一步的基础上可将三子连珠扩充为标准的五子棋。 六源程序结构流程框图与说明开始 输出游戏提示信 息输出棋盘玩家下棋。并判断是否 三子一线 换另一方玩家 下棋 提示该 玩 家 获胜 统计结果,询 问是否再下 一盘 结束程序 清除原有 游戏信息 否 是 否 是 七基本数据结构在头文件之后定义了一个名为 CGobang 的类: class CGobang private: char board44;/用数组来定义一个 4*4的棋盘 public: void Rules();/打印菜单总体情况,说明游戏规则和方法,无返回值void Dayinqp();/打印棋
4、盘,无返回值 void Xiaqi(char*,int /下棋,无返回值 int Huosheng(int,int,char);/判断那个选手赢,返回值为一整形数 void Choice(char /是否再玩,无返回值 void Chongzhi();/重置棋盘,无返回值 ; 在这个类中,定义了一个未经说明的数组被默认为私有成员,即 char board44,用它 来存储玩家在下棋的过程中所输入的棋子的坐标,并以此来区分表示不同的两个玩家。另外,这个类中还说明了五个没有返回值的函数以及一个返回值为整形数的函数,对它们的定义将 出现在主函数完成之后,所以本着“先定义,后调用”的原则,在类中的说明
5、相当于自定义 函数中的函数说明,这样可以使在主函数调用类中的公有函数时变得更加明了清晰。 八程序设计思想 1.建立基本的棋子类class CGobang char board44; public: void Rules();void Dayinqp(); void Xiaqi(char*,int int Huosheng(int,int,char); void Choice(char void Chongzhi(); ; 2.在类外建立成员 建立 Rules 函数,描述游戏规则void CGobang:Rules() cout choice; 建立下棋函数,输入 x,y,,确定棋子的位置 vo
6、id CGobang:Xiaqi(char*player1,int couty; while(x4|y4|xx; couty; boardx-1y-1=c; 当一局游戏结束时需要清空棋盘,建立重置函数 void CGobang:Chongzhi() for(int Row=0;Row=0)a+) if(+n=3) return 1; for(a=1;(x+a=0)a+) if(+n=3) return 1; for(a=1;(x+a=0)a+) if(+n=3) return 1; for(a=1;(y+a=0)a+) if(+n=3) return 1; return 0; 3在主函数中建立
7、类的对象,利用 while 循环统计输赢与和局的次数,并输出结果。 九程序运行情况 1.程序开始 2.玩家 A 下棋,之后玩家 B 下棋4. 若棋子下错时,出现提示 5. 当有一方玩家获胜时,出现选择6. 若输入 Y 则继续游戏,若输入其他字母,则结束游戏,结束时统计输赢 结果 十.设计中遇到的难题 1. 胜负判断条件的改写。依据课本中程序设计思想的提示,需要把源代码中的 if else 格 式的语句改写成 for循环语句,以便于后面对任意大棋盘的 n子连珠程序的扩展。若单单 从 for循环的简单语句中找答案,没有什么成效,应该把 for循环语句与 if 条件语句结合使 用。 2.多个函数的顺序以及通过 choice 函数和 while(choice=Y)判断语句的综合利用以及choice 是在 main 函数中的局域变量得到。 十一.个人感悟 通过这次的报告我觉得自己对 c+程序设计的理解更深入了一些,要想完成一个漂亮 的程序,首先要有扎实的基础知识,比如建立类和类的成员函数,然后就需要有统筹规划 能力,每个程序都是由很多个小部分组成,把每一个小部分的程序写的正确之后,就要有 严密的逻辑来规划函数的分布以及联系。最重要的是需要有足够的耐心,当程序运行出现 这样那样的错误时,要静下心来慢慢找出错误。我举得自己的程序虽然已经做完,但不足 之处还有很多,请老师指教,谢谢。