C课程设计五子棋

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

/* 这是我们 c++ 课程设计五子棋,我用了许多循环语句,可能比较繁碎, 不过仔细分析的话,还是挺简单的。如果有什么不懂的地方可以加我 q 1570169994 */ #include #include

#include // 这些是一些必要的头文件

#include #include using namespace std;

#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 ,当有

相关文档
最新文档