c语言简单实现三子棋
来源:互联网 发布:惠惠助手淘宝不显示 编辑:程序博客网 时间:2024/05/22 13:05
利用3*3的数组,简单实现三子棋
Game.h文件
#ifndef __GAME_H__ #define __GAME_H__ #define ROWS 3 #define COLS 3 #include<stdio.h> #include<stdlib.h> #include <time.h>#include<string.h> void init_board(char arr1[ROWS][COLS], int row,int col); void display_board(char arr1[ROWS][COLS], int row, int col); void player_move(char arr1[ROWS][COLS], int row, int col); void computer_move(char arr1[ROWS][COLS], int row, int col); char check_win(char arr1[ROWS][COLS], int row, int col); #endif
Game.c文件
#define _CRT_SECURE_NO_WARNINGS 1 #include"game.h" void display_board(char arr1[COLS][ROWS],int col,int row){ int i = 0; printf("-------------\n"); for (i=0;i<row;i++) { printf("| %c | %c | %c |\n", arr1[i][0], arr1[i][1], arr1[i][2]); if (i != row - 1) printf("|---|---|---|\n"); else if (i == row - 1) printf("-------------\n"); } }void player_move(char arr1[COLS][ROWS],int col,int row){ int x = 0; int y = 0; while (1) { printf("请输入你想下的坐标:>"); scanf("%d%d", &x, &y); x--; y--; if ((x>=0) && (x<=row-1) && (y>=0) && (y<=col-1)) { if (arr1[x][y] == ' ') { arr1[x][y] = 'X'; break; } else { printf("坐标已被占用,请重新输入:>\n"); } } } }void computer_move(char arr1[ROWS][COLS], int row, int col) { int i = 0; int j = 0; while (1) { for (i = 0; i < row; i++) { if ((arr1[i][0] == arr1[i][1]) && (arr1[i][1] == '0') && (arr1[i][2]) == ' ') { arr1[i][2] = '0'; goto END; } else if ((arr1[i][1] == arr1[i][2]) && (arr1[i][2] == '0') && (arr1[i][0]) == ' ') { arr1[i][0] = '0'; goto END; } else if ((arr1[i][0] == arr1[i][2]) && (arr1[i][2] == '0') && (arr1[i][1]) == ' ') { arr1[i][1] = '0'; goto END; } } for (i = 0; i < col; i++) { if ((arr1[0][i] == arr1[1][i]) && (arr1[1][i] == '0') && (arr1[2][i]) == ' ') { arr1[2][i] = '0'; goto END; } else if ((arr1[1][i] == arr1[2][i]) && (arr1[2][i] == '0') && (arr1[0][i]) == ' ') { arr1[0][i] = '0'; goto END; } else if ((arr1[0][i] == arr1[2][i]) && (arr1[2][i] == '0') && (arr1[2][i]) == ' ') { arr1[1][i] = '0'; goto END; } } if ((arr1[0][0] == arr1[1][1]) && (arr1[1][1] == '0') && (arr1[2][2] == ' ')) { arr1[2][2] = '0'; break; } if ((arr1[1][1] == arr1[2][2]) && (arr1[1][1] == '0') && (arr1[0][0] == ' ')) { arr1[0][0] = '0'; break; } if ((arr1[0][0] == arr1[2][2]) && (arr1[2][2] == '0') && (arr1[1][1] == ' ')) { arr1[1][1] = '0'; break; } if ((arr1[0][2] == arr1[1][1]) && (arr1[1][1] == '0') && (arr1[2][0] == ' ')) { arr1[2][0] = '0'; break; } if ((arr1[0][2] == arr1[2][0]) && (arr1[2][0] == '0') && (arr1[1][1] == ' ')) { arr1[1][1] = '0'; break; } if ((arr1[1][1] == arr1[2][0]) && (arr1[1][1] == '0') && (arr1[0][2] == ' ')) { arr1[0][2] = '0'; break; } for (i = 0; i < row; i++) { if ((arr1[i][0] == arr1[i][1]) && (arr1[i][1] == 'X') && (arr1[i][2]) == ' ') { arr1[i][2] = '0'; goto END; } else if ((arr1[i][1] == arr1[i][2]) && (arr1[i][2] == 'X') && (arr1[i][0]) == ' ') { arr1[i][0] = '0'; goto END; } else if ((arr1[i][0] == arr1[i][2]) && (arr1[i][2] == 'X') && (arr1[i][1]) == ' ') { arr1[i][1] = '0'; goto END; } } for (i = 0; i < col; i++) { if ((arr1[0][i] == arr1[1][i]) && (arr1[1][i] == 'X') && (arr1[2][i]) == ' ') { arr1[2][i] = '0'; goto END; } else if ((arr1[1][i] == arr1[2][i]) && (arr1[2][i] == 'X') && (arr1[0][i]) == ' ') { arr1[0][i] = '0'; goto END; } else if ((arr1[0][i] == arr1[2][i]) && (arr1[2][i] == 'X') && (arr1[2][i]) == ' ') { arr1[1][i] = '0'; goto END; } } if ((arr1[0][0] == arr1[1][1]) && (arr1[1][1] == 'X') && (arr1[2][2] == ' ')) { arr1[2][2] = '0'; break; } if ((arr1[1][1] == arr1[2][2]) && (arr1[1][1] == 'X') && (arr1[0][0] == ' ')) { arr1[0][0] = '0'; break; } if ((arr1[0][0] == arr1[2][2]) && (arr1[2][2] == 'X') && (arr1[1][1] == ' ')) { arr1[1][1] = '0'; break; } if ((arr1[0][2] == arr1[1][1]) && (arr1[1][1] == 'X') && (arr1[2][0] == ' ')) { arr1[2][0] = '0'; break; } if ((arr1[0][2] == arr1[2][0]) && (arr1[2][0] == 'X') && (arr1[1][1] == ' ')) { arr1[1][1] = '0'; break; } if ((arr1[1][1] == arr1[2][0]) && (arr1[1][1] == 'X') && (arr1[0][2] == ' ')) { arr1[0][2] = '0'; break; } while (1) { int x = rand() % row; int y = rand() % col; if (arr1[x][y] == ' ') { arr1[x][y] = '0'; break; } } END: break; }} void init_board(char arr1[COLS][ROWS],int col,int row){ memset(arr1, ' ', sizeof(arr1[0][0])*row*col);} static int is_full(char arr1[ROWS][COLS], int row, int col){ int i = 0; int j = 0; for (i = 0; i < row; i++) { for (j = 0; j < col; j++) { if (arr1[i][j] == ' ') return 0; } } return 1; } char check_win(char arr1[ROWS][COLS],int row,int col) { int i = 0; for (i = 0; i < row; i++) { if ((arr1[i][0] == arr1[i][1]) &&(arr1[i][1] == arr1[i][2]) && (arr1[i][1] != ' ')) { return arr1[i][2]; } } for (i = 0; i < col; i++) { if ((arr1[0][i] == arr1[1][i]) && (arr1[1][i] == arr1[2][i]) && (arr1[1][i] != ' ')) { return arr1[1][i]; } } if ((arr1[0][0] == arr1[1][1]) && (arr1[1][1] == arr1[2][2]) && (arr1[1][1] != ' ')) { return arr1[1][1]; } if ( (arr1[0][2] == arr1[1][1]) && (arr1[1][1] == arr1[2][0])&& (arr1[2][0] != ' ')) { return arr1[1][1]; } if(is_full(arr1, row, col)) { return 'q'; } return ' '; }
Test.c文件
#define _CRT_SECURE_NO_WARNINGS 1 #include"game.h"void mnue(){ printf("\n"); printf("\t\t\t\t\t***********欢乐三子棋***********\n"); printf("\t\t\t\t\t* *\n"); printf("\t\t\t\t\t* *\n"); printf("\t\t\t\t\t* *\n"); printf("\t\t\t\t\t* 1.开始 0.退出 *\n"); printf("\t\t\t\t\t* *\n"); printf("\t\t\t\t\t* *\n"); printf("\t\t\t\t\t* *\n"); printf("\t\t\t\t\t********************************\n"); }void play_game(){ int ret = 0; char arr[ROWS][COLS] = { 0 }; init_board(arr, ROWS, COLS); display_board(arr, ROWS, COLS); while(1) { player_move(arr, ROWS, COLS); display_board(arr, ROWS, COLS); ret = check_win(arr, ROWS, COLS); if (ret != ' ') break; printf("电脑输入:>\n"); computer_move(arr, ROWS, COLS); display_board(arr, ROWS, COLS); ret = check_win(arr, ROWS, COLS); if (ret != ' ') break; } if (ret == 'X') { printf("玩家赢!\n"); } else if (ret == '0') { printf("电脑赢!\n"); } else { printf("平局!\n"); } }int main(){ int input = 0; srand((unsigned int)time(NULL)); do { mnue(); printf("请输入你的选择:>"); scanf("%d",&input); switch(input) { case 1: play_game(); break; case 0: break; default: break; } }while(input); return 0;}
阅读全文
0 0
- 【C语言】简单实现三子棋
- c语言简单实现三子棋
- c语言编程实现简单三子棋游戏
- c语言实现简单的三子棋
- c语言简单实现三子棋(五子棋)
- 用c语言实现简单三子棋游戏
- 用c语言简单实现三子棋游戏
- C语言三子棋的简单实现
- C语言实现简单的三子棋小游戏
- c语言编程实现简单三子棋游戏
- 简单五子棋----C语言实现
- C语言实现简单单链表
- C语言简单实现五子棋
- C语言简单实现接口
- c语言简单实现 扫雷
- C语言实现简单通讯录
- c语言简单实现队列
- c语言实现简单通讯录
- 高等概率论(10月10日周二)
- 集合的继承体系
- TCP/IP协议简介(二)
- vim底行模式命令
- JMS(二) 简单介绍和基本的安装
- c语言简单实现三子棋
- Oracle中的dual详解
- 单词排序
- 分布式系统架构
- Oracle创建用户
- HDU 5023 A Corrupt Mayor's Performance Art (线段树 位运算)
- 软件生命周期各阶段的测试工作
- flash和js通过什么类如何交互
- Android eclipse报错an error has occurred.see the log file