game.h

#pragma once#define  ROW  3
#define  COL  3void menu();
void  game();
void printboard(char board[ROW][COL], int row, int col);
void  boardinit(char board[ROW][COL], int row, int col);//棋盘初始化
int judge_winner(char board[ROW][COL]);
void computermove(char board[ROW][COL]);//电脑落子
void playermove(char board[ROW][COL]);//玩家落子
int blance_judge(char board[ROW][COL]);//平局判定

game.c

#define  _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
#include"game.h"
#include<stdlib.h>void menu()
{printf("**********  1.play   0.exit *********\n");
}
void printboard(char board[ROW][COL],int row,int col)
{int i = 0;int j = 0;for (i = 0;i < row;i++){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");}}
}
void  boardinit(char board[ROW][COL], int row, int col)//棋盘初始化
{int i = 0;int j = 0;for (i = 0;i < row;i++){for (j = 0;j < col;j++){board[i][j] = ' ';}}
}
int judge_winner(char board[ROW][COL])
{int i = 0;for (i = 0;i < ROW; i++){if (board[i][0] == '*' && board[i][1] == '*' && board[i][2] == '*')return 0;else if (board[0][i] == '*' && board[1][i] == '*' && board[2][i] == '*')return 0;}if(board[0][0] == '*' && board[1][1] == '*' && board[2][2] == '*')return 0;else if (board[2][0] == '*' && board[1][1] == '*' && board[0][2] == '*')return 0;for (i = 0;i < ROW; i++){if (board[i][0] == '#' && board[i][1] == '#' && board[i][2] == '#')return 1;else if (board[0][i] == '#' && board[1][i] == '#' && board[2][i] == '#')return 1;}if (board[0][0] == '#' && board[1][1] == '#' && board[2][2] == '#')return 1;else if (board[2][0] == '#' && board[1][1] == '#' && board[0][2] == '#')return 1;return -1;
}void computermove(char board[ROW][COL])//电脑落子
{int x = 0;int y = 0;do{x = rand() % ROW;y = rand() % COL;if (board[x][y] == ' '){board[x][y] = '*';break;}} while (1);
}
void playermove(char board[ROW][COL])//玩家落子
{int x = 0;int y = 0;do{printf("请输入落子位置->");scanf("%d %d",&x,&y);if (board[(x-1)][(y-1)] == ' '){board[(x-1)][(y-1)] = '#';break;}printf("位置错误,重新输入\n");} while (1);
}int blance_judge(char board[ROW][COL])//平局判定
{int count = 0;int i = 0;int j = 0;for (i = 0;i < ROW;i++){for (j = 0;j < COL;j++){if (board[i][j] == ' ')count++;}}return count;
}
void game()
{int winner = 0;char chessboard[ROW][COL] = { ' ' };boardinit(chessboard, ROW, COL);printboard(chessboard, ROW, COL);do{computermove(chessboard);printboard(chessboard, ROW, COL);winner = judge_winner(chessboard);if (winner == 0){printf("电脑胜利\n");break;}if (blance_judge(chessboard) == 0){printf("平局\n");break;}playermove(chessboard);winner = judge_winner(chessboard);if (winner == 1){printboard(chessboard, ROW, COL);printf("玩家胜利\n");break;}if (blance_judge(chessboard) == 0){printf("平局\n");break;}} while (1);
}

main.c

#define  _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
#include"game.h"
#include<stdlib.h>
#include<time.h>int main()
{int input=0;srand((unsigned int)time(NULL));menu();scanf("%d", &input);switch (input){case 0:return 0;break;case 1:game();break;default:printf("输入错误,请重新输入");break;}return 0;
}

一个简单的三子棋游戏相关推荐

  1. 【C语言】通过C语言实现简单的三子棋

    [C语言]通过C语言实现简单的三子棋 文章目录 [C语言]通过C语言实现简单的三子棋 前言 一.本次小小小小项目前提 二.游戏简易菜单 1.菜单打印 2.游戏菜单的逻辑执行 三.三子棋游戏 1.初始化 ...

  2. 《c语言小游戏》入门级三子棋游戏(机器人加强版)

    目录 打印界面 初始化数组的值 玩家下棋 判断是否胜利 电脑下棋 今天为大家带来的是一款非常简单的小游戏"三子棋" 首先规则很简单,一行或者一列或者正负对角线都为同子就赢了,管你听 ...

  3. C语言的简单运用——三子棋

    前言 学习新知识固然重要,但如何运用所学的知识解决生活中的问题更为重要.只会学而不会用,何异于纸上谈兵.那么就让我们来看看如何用C语言来实现一个简单的三子棋吧! 目录 前言 一点建议 一.游戏菜单 1 ...

  4. 【C语言】简单实现三子棋(井字棋)小游戏

    背景 C语言学习过程中会有很多有趣的实践小程序需要大家编写,这里带给大家一个常见的三子棋小游戏的代码.如果有不足之处,还望指出,感谢浏览. 框架 这里给刚开始学习或接触C语言的小伙伴分享一点我个人的经 ...

  5. 如何实现简单的三子棋小游戏(改两个数就可以变为五子棋)

    首先我们创建一个新项目,新项目中添加两个源文件,一个用来放置该游戏所需的所有函数(game.c),另一个放置主函数来测试(test.c),所有的函数可以包含在新创建的头文件里(game.h),这样在主 ...

  6. c语言小游戏 三子棋,C语言实现简单的三子棋小游戏

    学习完数组就能用C语言写出的简单小游戏: 编译器使用的为VS2013 代码分为三个部分 1.头文件 game.h 2.源文件 game.c 用来存放游戏中所有的函数 3.源文件 test.c 用来存放 ...

  7. c语言编程实现简单三子棋游戏

    分别创建test.c   game.c 两个源文件,以及game.h头文件   这里的三子棋游戏是指棋盘为3*3,玩家与电脑之间的对决,先将各自的棋下为一排(横/竖/斜)者获胜,电脑所    下位置是 ...

  8. 使用c语言实现三子棋游戏

    下面简介如何使用c语言的基础语法实现三子游戏的底层逻辑: 首先是菜单模块 使用switch语句进入游戏模块 前置交互完成,开始进入游戏函数. 第一部分棋盘创建,使用二维数组实现. a.初始化棋盘 为什 ...

  9. 如何用C语言来实现【三子棋游戏】

    目录 一.前言 二.思维导图 三.思路分析 四.运行结果 五.算法细节 1.游戏相关的测试 2.游戏函数的声明 3.游戏函数的实现 (1)初始化棋盘的函数 (2)打印棋盘的函数 (3)玩家下棋的函数 ...

最新文章

  1. Flask----SQLAlchemy
  2. 使用DotNetCharting控件生成报表统计图总结
  3. PyTorch基础-使用LSTM神经网络实现手写数据集识别-08
  4. python如何限制字符串长度_Python uuid4,如何限制唯一字符的长度 - python
  5. mfc在运行的时候为什么没有实例化_Redis(7)——持久化【一文了解】
  6. Problem D. Nothing is Impossible
  7. 虚拟化管理软件比较(Eucalyptus, OpenNebula, OpenStack, OpenQRM, XenServer, Oracle VM, CloudStack, ConVirt)
  8. python3d旋转相册,用HTML+CSS代码制作3D旋转相册
  9. 实现监控摄像头RTSP视频流-Web端人脸识别-ffmpeg+websocket+jsmpeg方法总结
  10. 最小二乘法——高斯-马尔可夫定理的证明,无偏估计、求系数的方差
  11. 中国新型显示产业竞争格局与发展规模预测报告2022版
  12. Netlogo仿真初步学习总结
  13. Mac连接腾讯云服务器
  14. 在ipad任意界面都可以写字_用iPad (含pencil)作医学生的学习工具使用技巧分享第三集...
  15. 陕西美食羊肉泡馍,舌尖上的美感
  16. docker启动es报错:failed to obtain node locks...
  17. 弗洛伊德算法注意项 floyd
  18. laravel用户详情及封禁和启用用户api
  19. 二叉树空指针个数的理解
  20. 小朵机器人安卓叫什么_小朵智能机器人app最新官网版

热门文章

  1. 全球近90%的电影院现已对外开放;日本千叶将在东京奥运期间推出虚拟旅游 | 美通社头条...
  2. 【点云处理之论文狂读前沿版6】Surface Representation for Point Clouds
  3. Hive第二代客户端远程连接
  4. 使用Android Studio 日常小问题
  5. PRD:抖音APP产品需求文档
  6. 三菱四节传送带控制梯形图_三菱plc控制传送带三级 编程 fx2n 模拟四节传送带控制实验三菱...
  7. Python语音识别,让人工智能给你读读书,你是想听——萝莉音?御姐音?大叔音?正太音?这些任你选择哦~~~
  8. VR室内装修设计给客户不一样体验和效果
  9. 英音与美音的区别【转】
  10. 安装vue-cli报错,提示版本已弃用