ITPub博客

首页 > 应用开发 > C/C++ > 五子棋:如何用C语言实现

五子棋:如何用C语言实现

C/C++ 作者:嗨嗨hi啦啦la 时间:2020-10-30 14:55:05 0 删除 编辑

五子棋:

需要的数据:

1、定义一个15*15的棋盘

2、定义变量用于记录棋子的坐标

3、定义角色变量

业务逻辑:

是否需要对数据进行初始化

for( ; ; )

{

1、刷新屏幕,显示棋盘

2、落子

检查坐标是否合法,该位置不能有棋子

3、检查是否五子连珠

刷新屏幕

是:游戏胜利

4、交换角色

}

5、宣布平局,结束游戏


#include <stdio.h>

#include <stdlib.h>

#include <stdbool.h>

#include <getch.h>


// 定义棋盘

char board[15][15];


// 棋子坐标

char key_x = 7,key_y = 7;


// 角色

char role = '@';


// 初始化棋盘

void init_board(void)

{

for(int i=0;i<15;i++)

{

for(int j=0;j<15;j++)

{

board[i][j] = '*';

}

}

}


// 显示棋盘

void show_board(void)

{

system("clear");

for(int i=0;i<15;i++)

{

for(int j=0;j<15;j++)

{

printf(" %c",board[i][j]);

}

printf("\n");

}

}


// 落子

void get_key(void)

{

printf("请%c下棋\n",role);

for(;;)

{

printf("\33[%hhd;%hhdH",key_x+1,(key_y+1)*2);

switch(getch())

{

case 183: key_x>0 && key_x--;break;

case 184: key_x<14 && key_x++;break;

case 185: key_y<14 && key_y++;break;

case 186: key_y>0 && key_y--;break;

case 10: 

if(board[key_x][key_y] == '*')

{

board[key_x][key_y] = role;

return;

}

}

}

}


//计算一个方向上有多少个相同的棋子

int count_key(int go_x,int go_y)//0 -1

{

int count = 0;

for(int x=key_x+go_x,y=key_y+go_y;

x>=0 && y>=0 && x<15 && y<15;x+=go_x,y+=go_y)

{

if(role == board[x][y])

{

count++;

}

else

{

break;

}

}

return count;

}



// 检查五子连珠

bool check_key(void)

{

//左上右下

if(count_key(-1,-1) + count_key(1,1) >= 4)

return true;

if(count_key(-1,1) + count_key(1,-1) >= 4)

return true;

if(count_key(1,0) + count_key(-1,0) >= 4)

return true;

if(count_key(0,1) + count_key(0,-1) >= 4)

return true;

return false;

}


int main(int argc,const char* argv[])

{

// 初始化棋盘

init_board();


for(;;)

{

// 显示棋盘

show_board();


// 落子

get_key();


// 检查五子连珠

if(check_key())

{

show_board();

printf("%c胜利!!!\n",role);

return 0;

}

// 交换角色

role = role == '@'?'$':'@';

}

}


来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/69984368/viewspace-2731161/ ,如需转载,请注明出处,否则将追究法律责任。

下一篇: 没有了~
请登录后发表评论 登录
全部评论

注册时间:2020-09-22

  • 博文量
    4
  • 访问量
    5314