☰
C语言双人游戏五子棋
2026/10/10 1:15:16 网站建设 项目流程
# include<stdio.h> #define hang 10 #define line 10 void cd()//菜单 { printf("1:开始游戏\n"); printf("2:退出游戏\n"); printf("请输入选择:"); } void csh(char board[line][hang])//初始化棋盘 { int i,j; for(i=0;i<hang;i++) { for (j=0;j<line;j++) { board[i][j]=' '; } } } void display(char board[line] [hang])//棋盘显示 { int i,j; for(i=0;i<hang;i++) { for(j=0;j<line;j++)//数据打印 { printf("%3.c",board[i][j]); if(j<(line-1)) printf("|"); } printf("\n"); if(i<(hang-1))//分割行的打印 { for(j=0;j<line;j++) { printf("---"); if(j<(line-1)) printf("|"); } printf("\n"); } } } int isfull(char board[line][hang])//判断棋盘是否为空 { int i,j,zj=1; for (i=0;i<hang;i++) { for(j=0;j<line;j++) { if(board[i][j]==' ') return 0; } } return 1; } char iswinner(char board[line][hang],char mb) { int i,j,flag,zj=0; flag=0; for (i=0;i<hang;i++) { for(j=0;j<line;j++) { //判断行 if(j+4<line) { if(board[j][i]==mb&&board[j][i]==board[j+1][i]&&board[j][i]==board[j+2][i]&&board[j][i]==board[j+3][i]&&board[j][i]==board[j+4][i]) { flag=1; goto result; } } //判断列 if(j+4<hang&&i) { if(board[i][j]==mb&&board[i][j]==board[i][j+1]&&board[i][j]==board[i][j+2]&&board[i][j]==board[i][j+3]&&board[i][j]==board[i][j+4]) { flag=1; goto result; } } //判断左斜行 if(j+4<hang&&i+4<line) { if(board[i][j]==mb&&board[i][j]==board[i+1][j+1]&&board[i][j]==board[i+2][j+2]&&board[i][j]==board[i+3][j+3]&&board[i][j]==board[i+4][j+4]) { flag=1; goto result; } } //判断右斜行 if(j+4<hang&&i-4>=0) { if(board[i][j]==mb&&board[i][j]==board[i-1][j+1]&&board[i][j]==board[i-2][j+2]&&board[i][j]==board[i-3][j+3]&&board[i][j]==board[i-4][j+4]) { flag=1; goto result; } } } } result: if(flag) return 0; else return 1; } void game(char board[line][hang]) { int a,b,c,d,pd,zj; char tj; //函数声明 void display(char board[line] [hang]); char iswinner(char board[line][hang],char mb); int isfull(char board[line][hang]); //函数调用 display(board); tj=1; while(tj)//1号玩家下棋 { pd=1; printf("1号玩家下棋,请输入落子坐标:"); scanf("%d,%d",&a,&b); if(a<=hang&&b<=line) { if(board[a-1][b-1]==' ') { board[a-1][b-1]='*'; display(board); } else { printf("此处已经被落子,请重新输入坐标\n"); display(board); pd=0; } } else { printf("超出棋盘格子\n"); display(board); pd=0; } tj=iswinner(board,'*'); if(tj==0) { printf("1号玩家获胜\n"); break; } zj=isfull(board); if(zj==1) { printf("平局\n"); break; } assept : if(pd)//2号玩家下棋 { printf("2号玩家下棋,请输入落子坐标:"); scanf("%d,%d",&c,&d); if(c<=hang&&d<=line) { if(board[c-1][d-1]==' ') { board[c-1][d-1]='#'; display(board); } else { printf("此处已经被落子,请重新输入坐标\n"); display(board); goto assept; } } else { printf("超出棋盘格子\n"); display(board); goto assept; } tj=iswinner(board,'#'); if(tj==0) { printf("2号玩家获胜\n"); break; } zj=isfull(board); if(zj==1) { printf("游戏平局\n"); break; } } } } int main()//双人五子棋游戏 { int xz,tj=1; char board[line] [hang]; //函数声明 void cd(); void csh(char board[line][hang]); void game(char board[line][hang]); //二维数据传参 while (tj) { cd(); csh(board); scanf("%d",&xz); switch(xz) { case 1: { game(board); break; } case 2: { printf("游戏退出中····"); tj=0;break; } } } }

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询