一个小游戏——数组循环图形库函数调用

一个小游戏——数组循环图形库函数调用

今天带来一个小游戏——五子棋,C语言搭建,里面涉及的知识点不多。数组循环图形库函数调用注意:不要忘记安装图形库。

更不用说,让我们来一场激动人心的五子棋游戏吧!有兴趣的同学可以加入C语言C++学习交流群496926338,群里有很多项目开发和新手教学视频!

/*-------------------------------------------- 图形库五个儿子

棋 - - - - - - - - - - - - - - - - - - - - - - - - - --------------

早上和晚上

---------------------------------------------- ------------------------------------------

------------------------------*/

#包括

#包括

/*

想法:

一、内部运作

构造数组赋值黑白棋

扫描数组判断

2.外部绘图接收用户输入

绘图输入

游戏过程

1.绘制棋盘

2.一次性获取用户

3.判断输赢

*/

结构国际象棋{

诠释 x;

诠释y;

}ch, *pch;

#define M 10 //五子棋的大小

void game();//游戏函数

国际象棋结构*游戏(int map[][M+2],国际象棋结构*pch);

int scan(int map[][M+2], int x, int y, int num);

主函数()

{

黑白翻转棋_黑白皇后棋_黑白棋游戏素材

initgraph(640, 480);//界面大小

而 (1){

游戏();

if (MessageBox(0, L"Replay?", L"AGAIN", MB_OKCANCEL) == IDCANCEL)

休息;

}

关闭图();

返回 0;

}

无效游戏()

{

pch = &ch;

int map[M+2][M+2] = { 0 };//初始化地图数组

// 黑色为-1,白色为1

//绘图函数根据数组绘制棋盘

设置填充颜色(浅灰色);

//画棋盘

填充矩形(0、0、480、480);

对于 (int i = 40; ix;

j = pch->y;

fillcircle(40*i, 40*j, 15);

地图[i][j] = 1;

如果(扫描(地图,我数据报告,j黑白棋游戏素材,1))

{

MessageBox(0, L"白方胜", L"胜", MB_OK);

休息;

}

设置填充颜色(黑色);

播放(地图,PCH);

i = pch->x;

黑白棋游戏素材_黑白翻转棋_黑白皇后棋

j = pch->y;

fillcircle( 40 * i, 40 * j, 15);

地图[i][j] = -1;

扫描(地图,我,j,-1);

如果(扫描(地图黑白棋游戏素材,我,j,-1))

{

MessageBox(0, L"黑胜", L"胜", MB_OK);

休息;

}

}

// 扫描点

//int i, j;

//设置填充颜色(白色);

//for (i = 0; i < 10; i++)

//{

//for (j = 0; j < 10; j++)

//{

//如果(地图[i][j] == 1)

//{

//填充圆圈(40 + 40 * i, 40 + 40 * j, 15);

//}

//}

//}

//设置填充颜色(黑色);

//for (i = 0; i < 10; i++)

//{

//for (j = 0; j < 10; j++)

//{

//如果(地图[i][j] == -1)

//{

黑白翻转棋_黑白棋游戏素材_黑白皇后棋

//填充圆圈(40 + 40 * i, 40 + 40 * j, 15);

//}

//}

//}

}

//获取用户点的信息

国际象棋结构*游戏(int map[][M+2],国际象棋结构*pch)

{

MOUSEMSG 消息;

而 (1)

{

msg = GetMouseMsg();

开关(msg.uMsg)

{

案例 WM_LBUTTONDOWN:

//适当的鼠标信息

//1。没有走法 2. 在棋盘上

如果 (msg.x = 20)

{

//在棋盘中,需要判断是否转换为对应的坐标

如果 (地图[(msg.x - 20) / 40+1][(msg.y - 20) / 40+1] == 0)

{

//返回对应xy的值

pch->x= (msg.x - 20) / 40+1;

pch->y = (msg.y - 20) / 40+1;

返回个人电脑;

}

}

休息;

}

黑白翻转棋_黑白皇后棋_黑白棋游戏素材

}

}

//判断输赢 1为赢

//两种思路每次扫描一次或者直接扫描新点的部分

//这个地方有bug需要调试

int scan(int map[][M+2], int x, int y, int num)//scan函数直接扫描新点xy作为坐标

{

//只扫描上下左右四个方向,外圈为0

int i,win1=1,win2=1,win3=1,win4=1;

//水平判断

for (i = 1; map[x][y - i] == num; i++, win1++);

for (i = 1; map[x][y + i] == num; i++, win1++);

//垂直判断

for (i = 1; map[xi][y] == num; i++, win2++);

for (i = 1; map[x+i][y] == num; i++, win2++);

//左斜

for (i = 1; map[xi][y - i] == num; i++, win3++);

for (i = 1; map[x+i][y +i] == num; i++, win3++);

//右斜

for (i = 1; map[x+i][y - i] == num; i++, win4++);

for (i = 1; map[xi][y +i] == num; i++, win4++);

如果(win1 >= 5 || win2 >= 5 || win3 >= 5 || win4 >= 5)

{

//韩元

返回 1;

}

否则返回 0;

}

//int scanfun(int map[][M], int num)

//{

黑白皇后棋_黑白棋游戏素材_黑白翻转棋

//int i, j;

////三个区域扫描

////左上

//for (i = 0; i < M - 5; i++)

//{

//for (j = 0; j < M - 5; j++)

//{

////

//}

//}

////左下方

//for (i = M-5; i < M; i++)

//{

//for (j = 0; j < M - 5; j++)

//{

//

//}

//}

////右上方

//for (i = 0; i < M - 5; i++)

//{

//for (j = M-5; j < M; j++)

//{

//

//}

//}

////右下不用勾选

//}

黑白皇后棋_黑白棋游戏素材_黑白翻转棋

图片为网络图示例,以实际操作为准!

有兴趣的同学可以加入C语言C++学习交流群496926338游戏评测,群里有很多项目开发和新手教学视频!