五子棋c语言代码判定,c语言 五子棋危险判断 求大神解释啊
发布日期:2021-06-24 16:20:56 浏览次数:2 分类:技术文章

本文共 2585 字,大约阅读时间需要 8 分钟。

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼

代码

#include

#define right 'r'

#define lower 'l'

#define lower_right 'i'

#define lower_left 'e'

#define none 'o'

int table[19][19];

int hit_space(int x, int y, char vec)

{

if (vec == right)

{

if (x - 1 >= 0 && table[x - 1][y] == 0)

return 1;

if (x + 4 < 19 && table[x + 4][y] == 0)

return 1;

}

if (vec == lower)

{

if (y - 1 >= 0 && table[x][y - 1] == 0)

return 1;

if (y + 4 < 19 && table[x][y + 4] == 0)

return 1;

}

if (vec == lower_right)

{

if (x - 1 >= 0 && y - 1 >= 0 && table[x - 1][y - 1] == 0)

return 1;

if (x + 4 < 19 && y + 4 < 19 && table[x + 4][y + 4] == 0)

return 1;

}

if (vec == lower_left)

{

if (x - 1 >= 0 && y + 1 < 19 && table[x - 1][y + 1] == 0)

return 1;

if (x + 4 < 19 && y - 4 >= 0 && table[x + 4][y - 4] == 0)

return 1;

}

return 0;

}

int tetra_colinear_on_vec(int x, int y, char vec)

{

if (vec == right)

{

if (x + 3 < 19

&& table[x][y] == table[x + 1][y]

&& table[x + 1][y] == table[x + 2][y]

&& table[x + 2][y] == table[x + 3][y])

return 1;

}

if (vec == lower)

{

if (y + 3 < 19

&& table[x][y] == table[x][y + 1]

&& table[x][y + 1] == table[x][y + 2]

&& table[x][y + 2] == table[x][y + 3])

return 1;

}

if (vec == lower_right)

{

if (x + 3 < 19 && y + 3 < 19

&& table[x][y] == table[x + 1][y + 1]

&& table[x + 1][y + 1] == table[x + 2][y + 2]

&& table[x + 2][y + 2] == table[x + 3][y + 3])

return 1;

}

if (vec == lower_left)

{

if (x + 3 < 19 && y - 3 >= 0

&& table[x][y] == table[x + 1][y - 1]

&& table[x + 1][y - 1] == table[x + 2][y - 2]

&& table[x + 2][y - 2] == table[x + 3][y - 3])

return 1;

}

return 0;

}

char tetra_colinear(int x, int y)

{

char vec;

vec = right;

if (tetra_colinear_on_vec(x, y, vec))

return vec;

vec = lower;

if (tetra_colinear_on_vec(x, y, vec))

return vec;

vec = lower_right;

if (tetra_colinear_on_vec(x, y, vec))

return vec;

vec = lower_left;

if (tetra_colinear_on_vec(x, y, vec))

return vec;

return none;

}

int checkmate()

{

int i, j;

for (i = 0; i < 19; i++)

for (j = 0; j < 19; j++)

{

if (table[i][j] == 1)

{

char vec = tetra_colinear(i, j);

if (vec == right || vec == lower || vec == lower_right||vec==lower_left)

{

if (hit_space(i, j, vec))

{

printf("1:%d,%d\n", i+1, j+1);

return 1;

}

}

}

}

for (i = 0; i < 19; i++)

for (j = 0; j < 19; j++)

{

if (table[i][j] == 2)

{

char vec = tetra_colinear(i, j);

if (vec == right || vec == lower || vec == lower_right || vec == lower_left)

{

if (hit_space(i, j, vec))

{

printf("2:%d,%d\n", i+1, j+1);

return 1;

}

}

}

}

return 0;

}

int main()

{

int i,j;

for (i = 0; i < 19; i++)

for (j = 0; j < 19; j++)

scanf("%d",&table[i][j]);

if (!checkmate())

printf("No\n");

return 0;

}

转载地址:https://blog.csdn.net/weixin_33780516/article/details/117214268 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:c语言实现一个单向链表,C语言实现一个简单的单向链表list
下一篇:c语言 扫雷 鼠标,请问扫雷这个程序怎么显示出鼠标呀??(内有源程序)

发表评论

最新留言

路过按个爪印,很不错,赞一个!
[***.219.124.196]2024年04月26日 07时23分07秒