C课程设计五子棋
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
/* 这是我们 c++ 课程设计五子棋,我用了许多循环语句,可能比较繁碎, 不过仔细分析的话,还是挺简单的。如果有什么不懂的地方可以加我 q 1570169994 */ #include
#include
#include
#define M 15 // 此处定义棋盘大小为 15*15 ,自己视情况而定 typedef struct Node
{
int a; // 这里定义的结点在悔棋时要用到 int b; struct Node *next;
}node;
class Qipan
{ // 定义一个棋盘类,这个类里有实现不同功能的函数 public:
int a,b,t; // 棋子的坐标我们用 a ,b 表示, t 表示接收的输入信息
int player; //player int 为 1 时,代表绿方下棋, 2 代表红方 棋盘用一个 15*15 的二维数组表示
// main 函数 int main()
{
Esc 键,则退出循环
void explain(); // 此函数是解释说明的函数 void output(int count[]); //
此函数输出赢的一方
void gotoxy(int x,int y) {
HANDLE hout; //
这是实现光标移动的函数,
具体可以百度一
下
COORD coord; //x , y 即为棋子的坐标,和 a , b 一样 coord.X = x; // 此函数是将当前光标移动到 x , y 坐标处
coord.Y = y;
void reset(); // 此函数实现重置功能,即将棋盘上的棋子清零 void chess(); // 此函数实现下棋功能,是非常重要的 void win(); // 此函数实现判断功能,即每当一方落子后,都要调用此函数 hout = GetStdHandle(STD_OUTPUT_HANDLE); SetConsoleCursorPosition(hout,coord);
}
};
Qipan qipan; // do
定义一个棋盘对象
{
system("cls"); // cout<<"1. 开始游戏 cout<<"2. 游戏说明 fflush(stdin); //
qipan.t =
清屏函数 "< 清空输入缓冲区,准备接收用户的输入 接受用户的输入,把值赋给 t if(qipan.t == 27) //Esc 键的 ASCII 为 27 ,即用户如果按下 如果用户输入 1 ,即要开始游戏 while(1) { system("cls"); cout<<"1. 绿棋先走 "< fflush(stdin); qipan.t = getch(); qipan.chess(); // }while(qipan.t == 49); if(qipan.t==48) break; } break; case '2': qipan.explain(); // qipan.t = getch(); break; } }while(qipan.t!=48); qipan.gotoxy(40,8); return 0; } //reset 函数,绘制棋盘 void Qipan::reset() { int i,j; a = 14; // 定义光标初始位置为中间,即( 14 , 7) b = 7; for(i=0;i { break ; switch(qipan.t ) // { 选择语句 牛+ 先走, 盘,即绘制棋盘 if(qipan.t==4 8) break; break; if(qipan .t = = 27) if(qipan .t = = 49) // 用户输入 1,则绿棋 if(qipan .t = = 50) qipan.player = 1 // qipan.player = 2 ; 输入 2 , ; 红棋先走 do { qipan.reset(); // 重置棋 case '1': // 下棋函数 用户输入 2,调用说明函数 棋子落下时,根据红绿变为 1 或 2 system("cls"); SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_RED | FOREGROUND_GREEN | FOREGROUND_BLUE); // 此函数为设置背景颜色 为白色函数,可以自行百度 for(i=0;i { for(j=0;j { if(name[i][j] == 0) cout<<" + "; // 输出棋盘,即 15*15 个 + 号 } cout< } g o t o x y (42,2); c o u t <<" 按 E a s 返回上级菜单 "; gotoxy(42,3); cout<<" 按 2 gotoxy(42,4); cout<<" 按 1 gotoxy(42,5); cout<<" 按 0 gotoxy(14,7); // 在右边输出一些提示 悔棋 "; 重新开始 "< //chess 函数,下棋函数 void Qipan::chess() { node *h,*p,*q,*r; // 定义一些结点指针,悔棋时用到 h = (node *)malloc(sizeof(node)); p = h; h->a = 0; // 头结点初始化为 0 h->b = 0; h->next = NULL; while((t = getch()) != 27) // 接收用户的输入,并且判断不为 0,因为 0 是 结束游戏 { switch(t) { case 'w': // w s a d 和 上下左右键是移动光标的 if(b>0) for(j=0;j ++) { name[i][j] = 0; // 初始化二维数组为 0 ,当有