三子棋小游戏(C语言数组实现)
2021-02-05 20:11
796 查看
一,游戏效果
二,游戏规则
1.输入1进入游戏
2.输入0退出游戏
3.玩家先走
4.玩家落子是选择棋盘的坐标位置
5.电脑是随机落子
6.如果电脑连了三子则提示电脑赢了,选择要不要继续游戏
三,实现游戏的代码思路
先构架游戏整体思路
void game() { char ret = 0; //数组存放棋盘信息 char board[ROW][COL] = { 0 };//二维数组的初始化并没有这么简单 int row = ROW; int col = COL; //1.初始化棋盘 //一定要初始化 InitBoard(board, ROW, COL); //2.打印棋盘 DisplayBoard(board, ROW, COL); //3.玩游戏,开始下棋了 while (1) { //玩家下棋 PlayerMove(board, ROW, COL); DisplayBoard(board, ROW, COL); //判断玩家是否赢了 ret = Iswin(board, ROW, COL); //如果不是游戏继续,那么就直接跳出循环 if (ret != 'D') { break; } //电脑下棋 ComputerMove(board, ROW, COL); DisplayBoard(board, ROW, COL); //判断电脑是否赢了 ret = Iswin(board, ROW, COL); //如果不是游戏继续,那么就直接跳出循环 if (ret != 'D') { break; } } if (ret == 'X') printf("玩家赢了\n"); else if (ret == 'O') printf("电脑赢了\n"); else printf("平局\n"); }
再分步写出相应所需函数
1.菜单函数
void mnue() { printf("-------------------------------\n"); printf("-------------------------------\n"); printf("----1.play 0.exit--------\n"); printf("-------------------------------\n"); printf("-------------------------------\n"); }
2.初始化棋盘函数
//函数的初始化 //将棋盘所有元素都初始化为空格 //空格为不在屏幕上显示其字符的字符(0也是) void InitBoard(char board[ROW][COL], int row, int col) { int i = 0; for (i = 0; i < row; i++) { int j = 0; for (j = 0; j < col; j++) { board[i][j] = ' '; } } }
3.打印棋盘函数
//打印棋盘 void DisplayBoard(char board[ROW][COL], int row, int col) { int i = 0; for (i = 0; i < row; i++) { int j = 0; for (j = 0; j < col; j++) { printf(" %c ", board[i][j]); if (j < col - 1) printf("|"); } printf("\n"); if (i < row - 1) { for (j = 0; j < col; j++) { printf("---"); if (j < col - 1) printf("|"); } printf("\n"); } } }
4.用来存储玩家下棋信息的函数
//玩家下棋 void PlayerMove(char board[ROW][COL], int row, int col) { int x = 0; int y = 0; printf("玩家走\n"); while (1) { printf("请输入要下的坐标:"); scanf("%d%d", &x, &y); if (x >= 1 && y >= 1 && x <= row && y <= col) { if (board[x - 1][y - 1] == ' ') { board[x - 1][y - 1] = 'X'; break; } else printf("该坐标被占用,请重新输入\n"); } else printf("该坐标不存在,请重新输入\n"); } }
5.电脑随机下棋的函数
//电脑随机下棋 void ComputerMove(char board[ROW][COL], int row, int col) { printf("电脑走\n");//三子棋中电脑只要下在空棋盘上即可 int x = 0; int y = 0; while (1) { x = rand() % row;//将电脑走的随机值控制在棋盘中 y = rand() % col; if (x >= 1 && y >= 1 && x <= row && y <= col) { if (board[x - 1][y - 1] == ' ') { board[x - 1][y - 1] = 'O'; break; } } } }
6.判断棋盘是否满了的函数
//返回1,表示棋盘满了 //返回0,表示棋盘还没满 int IsFull(char board[ROW][COL], int row, int col) { int i = 0; for (i = 0; i < row; i++) { int j = 0; for (j = 0; j < col; j++) { if (board[i][j] == ' ') return 0;//没满 } } return 1;//满了 }
7.判断输赢和游戏是否继续的函数
//判断输赢和游戏是否继续 //判断输赢 //4种状态 //1.玩家赢了---'X' //2.电脑赢了---'O' //3.平局----'C' //4.游戏继续---'D' char Iswin(char board[ROW][COL], int row, int col) { int i = 0; //横3行 for (i = 0; i < row; i++) { if (board[i][0] == board[i][1] && board[i][1] == board[i][2] && board[i][1] != ' ') { return board[i][0];//Iswin直接结束 } } //列3行 for (i = 0; i < col; i++) { if (board[0][i] == board[1][i] && board[1][i] == board[2][i] && board[1][i] != ' ') { return board[0][i]; } } //两个对角线 if (board[0][0] == board[1][1] && board[1][1] == board[2][2] && board[1][1] != ' ') return board[1][1]; if (board[0][2] == board[1][1] && board[1][1] == board[2][0] && board[1][1] != ' ') return board[1][1]; //判断是否平局 if (1 == IsFull(board, ROW, COL)) return 'C'; //继续游戏 return 'D'; }
8.主函数控制游戏的进程
int main() { int input = 0; srand((unsigned int)time(NULL));//扩大电脑走的随机值范围 do { mnue(); printf("请输入(0/1):"); scanf("%d", &input); switch (input) { case 1: printf("三子棋游戏开始\n"); game(); break; case 0: printf("退出游戏\n"); break; defout: printf("输入错误,请重新输入\n"); break; } } while (input); return 0; }
四,分文件实现游戏代码
1.game.c源文件实现与game游戏主体有关的函数代码
初始化棋盘函数
打印棋盘函数
用来存储玩家下棋信息的函数
电脑随机下棋的函数
判断棋盘是否满了的函数
判断输赢和游戏是否继续的函数
2.game.h函数的头文件
函数的声明
#define定义的常量
其他所需要的头文件
3.test.c函数
游戏的菜单函数
玩游戏的框架函数
主函数控制游戏的进程
注意:如果函数细节srand函数,rand函数,time函数不明白的回到猜数字游戏的那一次博客中,有详细解说
相关文章推荐
- C语言实现小游戏——三子棋(Three Peices Chess)
- C语言学习笔记(4)-杀人小游戏的指针实现(数组同理)
- C语言—数组的应用:三子棋小游戏
- 小游戏——三子棋(C语言实现)
- C语言实现简单的三子棋小游戏
- 用c语言实现三子棋小游戏
- c语言实现三子棋小游戏
- 用C语言实现三子棋小游戏
- C语言简单实现三子棋小游戏
- 小项目 : C语言实现三子棋小游戏[拓展为多子棋]
- 小游戏 | 井字棋(三子棋)的C语言实现
- 小游戏——三子棋(C语言实现)
- 用C语言实现简单 三子棋(井字棋)小游戏
- C语言实现简单的三子棋小游戏
- C语言实现三子棋小游戏
- C语言实现小游戏---三子棋
- c语言小程序之三子棋小游戏的实现
- 三子棋小游戏!!!(C语言实现)
- C语言实现三子棋小游戏
- 用C语言实现简单的三子棋小游戏