C编程练习-五子棋
五子棋项目:
数据分析:
1、定义15*15棋盘二维数组
2、定义角色变量(1?2?) '@'黑棋 '$' 白棋 '*'空
char role = '@';
3、定义变量 用于记录落子位置
逻辑分析:考虑是否需要初始化棋盘
for(;;)
{
1、清屏、打印棋盘
2、落子
判断是否超范围 如果是则提示非法并重新落子
判断是否已有棋子,如果是则提示并重新落子成功落子才继续
3、判断是否五子连珠
是:结束程序
4、交换角色
}
代码:
#include<stdio.h> #include<stdbool.h> #include<stdlib.h> char board[15][15]; //棋盘 char role = '@'; //角色 char key_x,key_y; //下子坐标 //初始化棋盘 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落子:",role); for(;;) { scanf("%hhd %hhd",&key_x,&key_y); if(0>key_x || 14<key_x || 0>key_y || 14<key_y) { printf("坐标非法请重新输入:\n"); continue; } if('*' != board[key_x][key_y]) { printf("该位置已有棋子,请重新输入:"); continue; } board[key_x][key_y] = role; return; } } //判断是否五子连珠 bool is_win(void) { int cnt = 0; //左上 for(int x=key_x-1,y=key_y-1;x>=0 &&y>=0;x--,y--) { if(board[x][y]==role) cnt++; else break; } //右下 for(int x=key_x+1,y=key_y+1; x<=14&&y<=14; x++,y++) { if(board[x][y] == role) cnt++; else break; } if(4<=cnt) return true; cnt = 0; //左下 for(int x=key_x+1,y=key_y-1;x<=14 &&y>=0;x++,y--) { if(board[x][y]==role) cnt++; else break; } //右上 for(int x=key_x-1,y=key_y+1; x>=0&&y<=14; x--,y++) { if(board[x][y] == role) cnt++; else break; } if(4<=cnt) return true; cnt=0; //左 for(int x=key_x,y=key_y-1; y>=0;y--) { if(board[x][y]==role) cnt++; else break; } //右 for(int x=key_x-1,y=key_y+1; y<=14; y++) { if(board[x][y] == role) cnt++; else break; } if(4<=cnt) return true; cnt = 0; //上 for(int x=key_x-1,y=key_y-1; x>=0;x--) { if(board[x][y]==role) cnt++; else break; } //下 for(int x=key_x-1,y=key_y+1; x<=14; x++) { if(board[x][y] == role) cnt++; else break; } if(4<=cnt) return true; return false; } int main(int argc,const char* argv[]) { init_board(); for(;;) { show_board(); get_key(); if(is_win()) { show_board(); printf("%c赢了!\n",role); return 0; } //交换角色 role = role=='@'? '$' : '@'; } }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!