简易三子棋实现-创新互联
三子棋主要功能分析:
九江ssl适用于网站、小程序/APP、API接口等需要进行数据传输应用场景,ssl证书未来市场广阔!成为成都创新互联的ssl证书销售渠道,可以享受市场价格4-6折优惠!如果有意向欢迎电话联系或者加微信:18980820575(备注:SSL证书合作)期待与您的合作!
- 简易游戏界面
- 下棋及对应棋盘的打印
- 胜负判断
简易三子棋实现的基本子函数:
- 界面函数
- 棋盘初始化
- 棋盘打印
- 玩家、电脑下棋函数
- 判断函数
界面函数:
void manu() { printf("*************************\n"); printf("***** welcome! *******\n"); printf("***** 1:play *******\n"); printf("***** 2:quit *******\n"); printf("*************************\n"); //界面函数只要是用于main函数中循环调用 }
棋盘初始化
void InitChess(char chess[ROW][COL], int row, int col) { for (int i = 0; i< row; i++) { for (int j = 0; j< col; j++) { chess[i][j] = ' ';//初始化为‘ ’方便后续打印 } } }
棋盘打印函数
上图为打印界面样式,采用每一个小格打印两行,第一行为“ %c ”加‘|’第二行为---加‘|’,最后一列不打印‘|’,在最后一行中不打印---,由此写成一下循环
void PrintBoard(char chess[ROW][COL], int row, int col) { for (int i = 0; i< row; i++) { for (int j = 0; j< col; j++) { printf(" %c ", chess[i][j]); if (j< row - 1)//最后一列不打印‘|’ printf("|"); } printf("\n"); if (i< row - 1)//最后一行不打印--- { for (int j = 0; j< col; j++) { printf("---"); if (j< row - 1) printf("|"); } printf("\n"); } } }
下棋函数
void Player(char chess[ROW][COL], int row, int col) //玩家下棋 { int row1 = 0; int col1 = 0; while (1) { printf("请输入位置>>"); scanf("%d %d", &row1, &col1); if (row1 >ROW || row1<= 0 || col1 >COL || col1<= 0) { printf("pos error\n"); continue; } if (chess[row1-1][col1-1] != ' ') { printf("pose error\n"); continue; } else { chess[row1-1][col1-1] = '#'; break; } } }
void computer(char chess[ROW][COL], int row, int col) //电脑下棋 { while (1) { int row1 = rand() % 3;//srand函数在进入函数前调用 int col1 = rand() % 3; if (row1 >ROW || row1<= 0 || col1 >COL || col1<= 0) { continue; } if (chess[row1 - 1][col1 - 1] != ' ') { continue; } else { chess[row1 - 1][col1 - 1] = '*'; break; } } }
判断函数
int judge(char chess[ROW][COL], int row, int col) //简易判断,只考虑三子棋,没有写的更加深入 { for (int i = 0; i< ROW; i++) { if (chess[i][1] == chess[i][2] && chess[i][2] == chess[i][0] && chess[i][1] == '#') { return 1; } } for (int i = 0; i< COL; i++) { if (chess[1][i] == chess[2][i] && chess[2][i] == chess[0][i]&&chess[1][i]=='#') { return 1; } } if (chess[1][1] == chess[2][2] && chess[2][2] == chess[0][0]&&chess[0][0]=='#') return 1; if (chess[0][0] == chess[1][1] && chess[1][1] == chess[2][2] && chess[0][0] == '#') return 1; for (int i = 0; i< ROW; i++) { if (chess[i][1] == chess[i][2] && chess[i][2] == chess[i][0] && chess[i][1] == '*') { return -1; } } for (int i = 0; i< COL; i++) { if (chess[1][i] == chess[2][i] && chess[2][i] == chess[0][i] && chess[1][i] == '*') { return -1; } } if (chess[1][1] == chess[2][2] && chess[2][2] == chess[0][0] && chess[0][0] == '*') return -1; if (chess[0][0] == chess[1][1] && chess[1][1] == chess[2][2] && chess[0][0] == '*') return -1; return 0; }
主函数
int main() { int flag = 0; while (1) { manu(); scanf("%d", &flag); switch (flag) { case 1: game(); break; case 2:return 0; default: printf("input error"); continue; break; } } } void game() { srand((unsigned int)time(NULL)); char chess[ROW][COL]; int flag = 0; InitChess(chess, ROW, COL); PrintBoard(chess, ROW, COL); while (1) { Player(chess, ROW, COL); PrintBoard(chess, ROW, COL); flag = judge(chess, ROW, COL); if (flag == 1) { printf("You win\n"); return; } else if(flag== -1){ printf("You lose\n"); return; } printf("电脑输入\n"); computer(chess, ROW, COL); PrintBoard(chess, ROW, COL); flag = judge(chess, ROW, COL); if (flag == 1) { printf("You win\n"); return; } else if (flag == -1) { printf("You lose\n"); return; } }
结果展示
你是否还在寻找稳定的海外服务器提供商?创新互联www.cdcxhl.cn海外机房具备T级流量清洗系统配攻击溯源,准确流量调度确保服务器高可用性,企业级服务器适合批量采购,新人活动首月15元起,快前往官网查看详情吧
当前题目:简易三子棋实现-创新互联
网站路径:http://cdiso.cn/article/ddosde.html