C课程设计五子棋

上传人:le****9 文档编号:122147534 上传时间:2020-03-02 格式:DOC 页数:10 大小:45.50KB
返回 下载 相关 举报
C课程设计五子棋_第1页
第1页 / 共10页
C课程设计五子棋_第2页
第2页 / 共10页
C课程设计五子棋_第3页
第3页 / 共10页
C课程设计五子棋_第4页
第4页 / 共10页
C课程设计五子棋_第5页
第5页 / 共10页
点击查看更多>>
资源描述

《C课程设计五子棋》由会员分享,可在线阅读,更多相关《C课程设计五子棋(10页珍藏版)》请在金锄头文库上搜索。

1、/*这是我们c+课程设计五子棋,我用了许多循环语句,可能比较繁碎,不过仔细分析的话,还是挺简单的。如果有什么不懂的地方可以加我q 1570169994 */#include#include#include / 这些是一些必要的头文件#include#includeusing namespace std;#define M 15 /此处定义棋盘大小为15*15,自己视情况而定typedef struct Nodeint a; /这里定义的结点在悔棋时要用到int b;struct Node *next;node;class Qipan /定义一个棋盘类,这个类里有实现不同功能的函数public:

2、int a,b,t; /棋子的坐标我们用a,b表示,t表示接收的输入信息int player; /player为1时,代表绿方下棋,2代表红方int nameMM; /棋盘用一个15*15的二维数组表示void reset(); /此函数实现重置功能,即将棋盘上的棋子清零void chess(); /此函数实现下棋功能,是非常重要的void win(); /此函数实现判断功能,即每当一方落子后,都要调用此函数void explain(); /此函数是解释说明的函数void output(int count); /此函数输出赢的一方void gotoxy(int x,int y) HANDLE

3、hout; /这是实现光标移动的函数,具体可以百度一下 COORD coord; /x,y即为棋子的坐标,和a,b一样 coord.X = x; /此函数是将当前光标移动到x,y坐标处 coord.Y = y; hout = GetStdHandle(STD_OUTPUT_HANDLE); SetConsoleCursorPosition(hout,coord);/ main 函数int main()Qipan qipan; /定义一个棋盘对象dosystem(cls); /清屏函数 cout1.开始游戏 endl; cout2.游戏说明 endl; fflush(stdin); /清空输入缓

4、冲区,准备接收用户的输入qipan.t = getch(); /接受用户的输入,把值赋给 tif(qipan.t = 27) /Esc键的ASCII为27,即用户如果按下Esc键,则退出循环break;switch(qipan.t) /选择语句case 1: /如果用户输入1,即要开始游戏while(1) system(cls); cout1.绿棋先走 endl; cout2.红棋先走 endl;fflush(stdin); qipan.t = getch(); if(qipan.t=48) break; if(qipan.t = 27) break; if(qipan.t = 49) /用户

5、输入1,则绿棋先走, qipan.player = 1; if(qipan.t = 50) /输入2,红棋先走 qipan.player = 2;do qipan.reset(); /重置棋盘,即绘制棋盘 qipan.chess(); /下棋函数while(qipan.t = 49); if(qipan.t=48) break;break;case 2:qipan.explain(); /用户输入2,调用说明函数qipan.t = getch();break;while(qipan.t!=48);qipan.gotoxy(40,8);return 0;/reset函数,绘制棋盘void Qip

6、an:reset()int i,j;a = 14; /定义光标初始位置为中间,即(14,7)b = 7;for(i=0;iM;i+)for(j=0;jM;j+)nameij = 0; /初始化二维数组为0,当有棋子落下时,根据红绿变为1或2system(cls);SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_RED | FOREGROUND_GREEN | FOREGROUND_BLUE);/ 此函数为设置背景颜色为白色函数,可以自行百度for(i=0;iM;i+)for(j=0;jM;j+)if(nam

7、eij = 0)cout; /输出棋盘,即15*15 个 + 号coutendl;gotoxy(42,2);cout按Eas返回上级菜单;gotoxy(42,3); / 在右边输出一些提示cout按 2 悔棋 ;gotoxy(42,4);cout按 1 重新开始endl;gotoxy(42,5);cout按 0 结束游戏a = 0; /头结点初始化为0h-b = 0;h-next = NULL;while(t = getch() != 27) /接收用户的输入,并且判断不为0,因为0是结束游戏switch(t)case w: / w s a d 和 上下左右键是移动光标的if(b0)b = b

8、-1;gotoxy(a,b);break;case s:if(b0)a = a-2;gotoxy(a,b);break;case d:if(a0)b = b-1;gotoxy(a,b);break;case 80:if(b0)a = a-2;gotoxy(a,b);break;case 77:if(aa = a;q-b = b;q-next = NULL; /将当前光标的坐标即a,b赋给结点,即用结点记录棋子的坐标p-next = q;p = q;if(player = 1)SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FORE

9、GROUND_INTENSITY|FOREGROUND_GREEN);cout; /设置颜色gotoxy(a,b);name(a/2)b = 1; /落子后,二维数组的值相应的变为1或2win(); / 每下一次棋,就要调用此函数判断是否有五子连线elseSetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY|FOREGROUND_RED);couta = a;q-b = b;q-next = NULL;p-next = q;p = q;if(player = 1)SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY|FOREGROUND_GREEN);cout;gotoxy(a,b);name(a/2)b = 1;win();elseSetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY|FOREGROUND_RED);

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 建筑/环境 > 施工组织

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号