文章目录

  • 什么是三子棋?
  • 三子棋需要掌握到C语言的哪个地方?
  • 如何实现三子棋?
    • 1.头文件(函数声明)
    • 2.game.c(函数实现)
    • 3.text.c(三子棋的测试)
  • 三子棋代码的总览思路
    • 三子棋总览如下,即game()函数的实现:

什么是三子棋?

三子棋就是在3*3的棋盘中,双方进行围堵和想法,有一方先达到连着3颗棋子就算胜利;

三子棋需要掌握到C语言的哪个地方?

据笔者完成三子棋的过程来看,三子棋只需要掌握到二维数组即可。

如何实现三子棋?

1.头文件(函数声明)

#include<stdio.h>
#include<time.h>
#include<stdlib.h>#define ROW 3
#define COL 3void menu();void Init_board(char board[ROW][COL],int row,int col);//初始化数组为空格void display_board(char board[ROW][COL],int row, int col);//展示数组void Player(char board[ROW][COL], int row, int col);//玩家下棋void Computer(char board[ROW][COL],int row,int col);//电脑下棋char Iswin(char board[ROW][COL],int row,int col);//判断输赢

2.game.c(函数实现)

#define _CRT_SECURE_NO_WARNINGS 1#include"game.h"void menu()
{printf("*****************************\n");printf("********1.play   ************\n");printf("********0.exit   ************\n");printf("*****************************\n");
}void Init_board(char board[ROW][COL], int row, int col)//初始化数组为空格
{int i, j;for (i = 0; i < row; i++){for (j = 0; j < col; j++){board[i][j] = ' ';}}
}void display_board(char board[ROW][COL], int row, int col)//展示棋盘
{int i, j;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 Player(char board[ROW][COL], int row, int col)//玩家下棋
{int x, y;while (1){printf("玩家下棋:>");scanf("%d%d", &x, &y);//判断合法性if ((x >= 1 && x <= row)&& (y >= 1 && y <= col)){//判断是否已有棋子if (board[x-1][y-1] == ' '){board[x-1][y-1] = '*';break;}else{printf("这个位置已被占用,请重新输入\n");}}else{printf("输入非法,请重新输入:>\n");}}
}void Computer(char board[ROW][COL], int row, int col)//电脑下棋
{printf("电脑下:>\n");int x, y;while (1){x = rand() % row;y = rand() % col;//判断是否已有棋子if (board[x][y] == ' '){board[x][y] = '#';break;}else{;}}
}char  Iswin(char board[ROW][COL], int row, int col)//判断输赢
{//玩家赢int i;for (i = 0; i < row; i++){if (board[i][0] == board[i][1] && board[i][1] == board[i][2] && board[i][1] == '*'){return '*';}if (board[0][i] == board[1][i] && board[1][i] == board[2][i] && board[0][i] == '*'){return '*';}}if (board[0][0] == board[1][1] && board[1][1] == board[2][2] && board[2][2] == '*'){return '*';}if (board[0][2] == board[1][1] && board[1][1] == board[2][0] && board[2][0] == '*'){return '*';}//电脑赢for (i = 0; i < row; i++){if (board[i][0] == board[i][1] && board[i][1] == board[i][2] && board[i][1] == '#'){return '#';}if (board[0][i] == board[1][i] && board[1][i] == board[2][i] && board[0][i] == '#'){return '#';}}if (board[0][0] == board[1][1] && board[1][1] == board[2][2] && board[2][2] == '#'){return '#';}if (board[0][2] == board[1][1] && board[1][1] == board[2][0] && board[2][0] == '#'){return '#';}//平局int flag = 0;for (i = 0; i < row; i++){int j = 0;for (j = 0; j < col; j++){if (board[i][j] == ' ');flag++;}}if (flag == 0){return 'Q';}elsereturn 'C';
}

3.text.c(三子棋的测试)

#define _CRT_SECURE_NO_WARNINGS 1
#include"game.h"void game()
{char ret;char board[ROW][COL] = {"0"};//创建数组Init_board(board, ROW, COL);//初始化数组为空格display_board(board, ROW, COL);//展示棋盘while (1){Player(board, ROW, COL);//玩家下棋ret = Iswin(board, ROW, COL);//判断输赢if (ret != 'C')break;display_board(board, ROW, COL);//打印棋盘Computer(board, ROW, COL);//电脑下棋ret = Iswin(board, ROW, COL);//判断输赢if (ret != 'C')break;display_board(board, ROW, COL);//打印棋盘}if (ret == '*'){printf("玩家赢\n");display_board(board, ROW, COL);//打印棋盘}else if (ret == '#'){printf("电脑赢\n");display_board(board, ROW, COL);//打印棋盘}else{printf("平局\n");display_board(board, ROW, COL);//打印棋盘s}
}
int main()
{int input = 0;srand((unsigned int)time(NULL));//设置时间戳do{menu();printf("请选择:>");scanf("%d", &input);switch (input){case 1:game();break;case 0:printf("游戏结束\n");break;default:printf("输入错误,请重新选择:>");break;}} while (input);return 0;
}

三子棋代码的总览思路

主函数的代码块是基本的套路,知道怎么做即可。
如下:

int main()
{int input = 0;srand((unsigned int)time(NULL));//设置时间戳do{menu();printf("请选择:>");scanf("%d", &input);switch (input){case 1:game();break;case 0:printf("游戏结束\n");break;default:printf("输入错误,请重新选择:>");break;}} while (input);return 0;
}

三子棋总览如下,即game()函数的实现:

  1. 创建二维数组

  2. 初始化全为空格

  3. 打印棋盘

  4. While(1)
    {
    玩家下棋
    判断输赢
    展示棋盘

    电脑下棋
    判断输赢
    展示棋盘
    }

加油呀!

【C语言】三子棋(经典解法+一览图)相关推荐

  1. 程序员成长之旅——C语言三子棋

    程序员成长之旅--C语言三子棋 简易介绍三子棋 三子棋编程过程 三子棋代码总览 game.h game.c test.c 简易介绍三子棋 进行了这么多天的c语言学习,今天给大家讲一下三子棋是如何用c语 ...

  2. C语言-三子棋游戏的实现

    C语言-三子棋游戏的实现 目录 C语言-三子棋游戏的实现 游戏背景介绍 游戏实现思路 test模块 menu模块 **game模块** init_board(初始化棋盘) print_board(打印 ...

  3. C语言三子棋,五子棋,n子棋的代码实现

    C语言三子棋,五子棋,n子棋的代码实现 这里以五子棋为例,来说明开发过程 开发思路 菜单打印 棋盘的打印 棋子的打印 电脑下棋(随机数) 判断输赢 代码整合 注意事项 这里以五子棋为例,来说明开发过程 ...

  4. C语言三子棋游戏进阶版详解(包括多子棋)

    目录 一,总体思路介绍 二,具体思路的实现 1.初始化游戏界面 2.初始化棋盘 3.打印棋盘 4.玩家移动 5.电脑移动 6.判断输赢 三,源码展示 game.h game.c test.c 一,总体 ...

  5. C语言三子棋(九宫棋)游戏

    分析需求 制作菜单进入或退出游戏 实现棋盘和落子的显示 玩家落子 判断是否获胜 判断是否和棋 代码实现 1.制作菜单进入或退出游戏 void menu() {printf("1.开始游戏\n ...

  6. c语言 三子棋详细解析 (零基础也能看懂)附源码 c语言小游戏

    代码运行结果如下 代码实现 test.c(测试游戏的逻辑) game.h(关于游戏相关的函数声明符号声明)头文件包含的 game.c游戏相关函数的实现 test.c 游戏如何玩 希望游戏玩完一把还可以 ...

  7. C语言三子棋游戏的编程实现

    程序界面实现如图所示的人与电脑互动的三子棋游戏 文件模块 test.c 测试三子棋游戏 game.h 游戏的函数声明(头文件) game.c 游戏函数的实现 代码模块 初始化棋盘 (每个位置初始为空格 ...

  8. C语言—三子棋小游戏解析

    一.问题描述 三子棋是一种民间传统游戏,又叫九宫棋.圈圈叉叉.一条龙.井字棋.田字棋.对角棋等.将正方形对角线连起来,相对两边依次摆上三个双方棋子,只要将自己的三个棋子走成一条线,对方就算输了.但是, ...

  9. 【19】C语言 | 三子棋

    目录 1.三子棋设置三个文件中 2.数组传参的两种方法 3.三子棋代码 [game.h文件的代码] [game.c的代码] [ test.c的代码] 1.三子棋设置三个文件中 test.c 测试游戏的 ...

最新文章

  1. php获取citypicker的值,城市选择city-picker
  2. ubuntu9.10上安装jdk5
  3. Selenium+python --获取百度联想词
  4. 【Python】Python视频制作工具Manim入门,基础形状详细介绍
  5. POJ 2251 Dungeon Master(三维BFS求最短路径)
  6. boost::math::statistics相关用法的测试程序
  7. ZendStudio-v6.0注册机
  8. linux suse 安装redis,suse 配置redis远程访问
  9. 【教你一招】30分钟考完广开所有科目,广开期末考试网页如何多开?
  10. *【CodeForces - 1088 ABC】套题比赛,A水题B模拟C构造D交互
  11. 5b计算机联锁系统_力控科技油库调度管理系统应用案例
  12. mysql5.6.39的安装_如何安装MySQL Community Server 5.6.39
  13. mysql 编辑数据库内容_详解mysql数据库增删改操作
  14. 中国团队首次夺冠FPS游戏AI竞赛VizDoom,清华腾讯AI联手
  15. C++:表达式求值(四则运算)实现
  16. Topaz Adjust AI Mac
  17. HDU4699Editor
  18. 极验验证——滑块拼图验证码
  19. DINO 自监督算法简介
  20. android 方向传感器

热门文章

  1. 外贸网站的SEO优化该怎么做?
  2. canvas合并两张图片--前端
  3. STM32中HAL库与标准库的区别
  4. USB TYPE-C转HDMI+ PD快充 + USB3.0扩展坞设计|Type-c to HDMI USB3.1 带PD3.0快充扩展坞设计电路|USB-C转HDMI带PD多功能拓展坞设计方法
  5. python findwindow函数_win32gui.Findwindow(parm1,parm2)查找窗口的句柄方法
  6. 基于Matlab车牌自动识别
  7. 杭州哪一家青少年编程教育机构比较好?
  8. 解决ios下拍照自动旋转问题
  9. ssm基于角色访问控制的文件共享系统毕业设计源码161821
  10. 哔哩哔哩 机器人历险记_里约大冒险2(2014)