五子棋程序代码

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

/*************************************

** 程序名称:五子棋 **

** 编译环境:vs2012 **

** 编辑作者:往事随风<1034882113> **

** 最后修改:2013-07-25 **

** 项目类型:win32控制台程序 **

**************************************/

#include

#include// _kbhit() _getch()

/****************** 宏定义区 **********************/

#define BOARD_LEN 640 // 棋盘大小

#define BOARD_WIDTH 640

#define EXTRA_LEN 200 // 右边提示区域的长度

#define SIZE 40 // 棋盘小方格大小

#define ROW 14 // 棋盘为14*14

/****************** 数据类型定义区******************/

/****************** 全局变量区**********************/

IMAGE img_chessboard; // 背景

IMAGE img_box_black; // 黑色棋盒

IMAGE img_box_white; // 白色棋盒

IMAGE img_bkbox; // 右边区域背景

IMAGE img_time; // 显示时间

IMAGE img_count[11]; // 十个数字和一个冒号

int m_x = (BOARD_LEN - SIZE * ROW)/2; // 居中

int m_y = (BOARD_WIDTH - SIZE * ROW)/2;

byte gobang[ROW+1][ROW+1] = {0};// byte不能表示负数0:无子1:黑子2:白子byte type = 0; // 1: 白棋0:黑棋

bool replay = true; // false 游戏结束,true代表游戏运行中

DWORD b_oldtime; // 黑棋花费时间

DWORD w_oldtime; // 白棋花费时间

DWORD start_time; // 游戏起始时间

/****************** 函数声明区**********************/

void init_system();

void init_img();

void init_chessboard();

void getMouse(POINT *point);

void deal_mousemsg(POINT point);

void game_win(int x,int y);

void quit_game();

void print_msg();

void show_time(DWORD newtime);

void print_time(DWORD time);

/****************** 主函数区 **********************/ void main()

{

POINT point; // 存储坐标位置

while (true)

{

init_system();

while (replay)

{

getMouse(&point);

deal_mousemsg(point);

}

}

}

/****************** 函数定义区**********************/

void print_time(DWORD time)

{

int y = 0;

int minuteh = time / (600*1000); // 分钟十位

time %= (600*1000);

int minutel = time / (60*1000); // 分钟个位

time %= (60*1000);

int secondh = time / (10*1000); // 秒钟十位

int secondl = time % (10*1000); // 秒钟个位

int x = BOARD_LEN + 5 - m_x;

if (type) // 白棋

y = EXTRA_LEN + 5 - m_y;

else y = BOARD_WIDTH/2+EXTRA_LEN+5 - m_y; // 黑棋

putimage(x+80,y+45,&img_count[minuteh]); // 分钟十位

putimage(x+95,y+45,&img_count[minutel]); // 分钟个位

putimage(x+125,y+45,&img_count[secondh]); // 秒十位

putimage(x+140,y+45,&img_count[secondl/1000]); // 秒个位}

/* 显示倒计时 */

void show_time(DWORD newtime)

{

DWORD tmp = b_oldtime+w_oldtime + start_time; // 游戏运行的时间

if (type) // 白棋

{

w_oldtime += newtime - tmp; // 计算白棋用的时间

print_time(w_oldtime);

}

else// 黑棋

{

b_oldtime += newtime - tmp; // 计算黑棋用的时间

print_time(b_oldtime);

}

}

/* 打印右边游戏信息 */

void print_msg()

{

outtextxy(20,50,_T("倒计时:"));

putimage(80,45,&img_count[0]);

putimage(95,45,&img_count[0]);

putimage(110,45,&img_count[10]);

putimage(125,45,&img_count[0]);

putimage(140,45,&img_count[0]);

outtextxy(20,80,_T("比分:"));

outtextxy(80,80,_T("0"));

}

/* 结束游戏 */

void quit_game()

{

closegraph();

exit(0);

}

/* 判断胜利 */

void game_win(int x,int y)

{

int i = -5,j = -5;

int count = 0;

byte flag = gobang[x][y]; // 判断棋色

相关文档
最新文档