【C语言】三子棋(经典解法+一览图)
文章目录
- 什么是三子棋?
- 三子棋需要掌握到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()函数的实现:
创建二维数组
初始化全为空格
打印棋盘
While(1)
{
玩家下棋
判断输赢
展示棋盘电脑下棋
判断输赢
展示棋盘
}
加油呀!
【C语言】三子棋(经典解法+一览图)相关推荐
- 程序员成长之旅——C语言三子棋
程序员成长之旅--C语言三子棋 简易介绍三子棋 三子棋编程过程 三子棋代码总览 game.h game.c test.c 简易介绍三子棋 进行了这么多天的c语言学习,今天给大家讲一下三子棋是如何用c语 ...
- C语言-三子棋游戏的实现
C语言-三子棋游戏的实现 目录 C语言-三子棋游戏的实现 游戏背景介绍 游戏实现思路 test模块 menu模块 **game模块** init_board(初始化棋盘) print_board(打印 ...
- C语言三子棋,五子棋,n子棋的代码实现
C语言三子棋,五子棋,n子棋的代码实现 这里以五子棋为例,来说明开发过程 开发思路 菜单打印 棋盘的打印 棋子的打印 电脑下棋(随机数) 判断输赢 代码整合 注意事项 这里以五子棋为例,来说明开发过程 ...
- C语言三子棋游戏进阶版详解(包括多子棋)
目录 一,总体思路介绍 二,具体思路的实现 1.初始化游戏界面 2.初始化棋盘 3.打印棋盘 4.玩家移动 5.电脑移动 6.判断输赢 三,源码展示 game.h game.c test.c 一,总体 ...
- C语言三子棋(九宫棋)游戏
分析需求 制作菜单进入或退出游戏 实现棋盘和落子的显示 玩家落子 判断是否获胜 判断是否和棋 代码实现 1.制作菜单进入或退出游戏 void menu() {printf("1.开始游戏\n ...
- c语言 三子棋详细解析 (零基础也能看懂)附源码 c语言小游戏
代码运行结果如下 代码实现 test.c(测试游戏的逻辑) game.h(关于游戏相关的函数声明符号声明)头文件包含的 game.c游戏相关函数的实现 test.c 游戏如何玩 希望游戏玩完一把还可以 ...
- C语言三子棋游戏的编程实现
程序界面实现如图所示的人与电脑互动的三子棋游戏 文件模块 test.c 测试三子棋游戏 game.h 游戏的函数声明(头文件) game.c 游戏函数的实现 代码模块 初始化棋盘 (每个位置初始为空格 ...
- C语言—三子棋小游戏解析
一.问题描述 三子棋是一种民间传统游戏,又叫九宫棋.圈圈叉叉.一条龙.井字棋.田字棋.对角棋等.将正方形对角线连起来,相对两边依次摆上三个双方棋子,只要将自己的三个棋子走成一条线,对方就算输了.但是, ...
- 【19】C语言 | 三子棋
目录 1.三子棋设置三个文件中 2.数组传参的两种方法 3.三子棋代码 [game.h文件的代码] [game.c的代码] [ test.c的代码] 1.三子棋设置三个文件中 test.c 测试游戏的 ...
最新文章
- php获取citypicker的值,城市选择city-picker
- ubuntu9.10上安装jdk5
- Selenium+python --获取百度联想词
- 【Python】Python视频制作工具Manim入门,基础形状详细介绍
- POJ 2251 Dungeon Master(三维BFS求最短路径)
- boost::math::statistics相关用法的测试程序
- ZendStudio-v6.0注册机
- linux suse 安装redis,suse 配置redis远程访问
- 【教你一招】30分钟考完广开所有科目,广开期末考试网页如何多开?
- *【CodeForces - 1088 ABC】套题比赛,A水题B模拟C构造D交互
- 5b计算机联锁系统_力控科技油库调度管理系统应用案例
- mysql5.6.39的安装_如何安装MySQL Community Server 5.6.39
- mysql 编辑数据库内容_详解mysql数据库增删改操作
- 中国团队首次夺冠FPS游戏AI竞赛VizDoom,清华腾讯AI联手
- C++:表达式求值(四则运算)实现
- Topaz Adjust AI Mac
- HDU4699Editor
- 极验验证——滑块拼图验证码
- DINO 自监督算法简介
- android 方向传感器
热门文章
- 外贸网站的SEO优化该怎么做?
- canvas合并两张图片--前端
- STM32中HAL库与标准库的区别
- USB TYPE-C转HDMI+ PD快充 + USB3.0扩展坞设计|Type-c to HDMI USB3.1 带PD3.0快充扩展坞设计电路|USB-C转HDMI带PD多功能拓展坞设计方法
- python findwindow函数_win32gui.Findwindow(parm1,parm2)查找窗口的句柄方法
- 基于Matlab车牌自动识别
- 杭州哪一家青少年编程教育机构比较好?
- 解决ios下拍照自动旋转问题
- ssm基于角色访问控制的文件共享系统毕业设计源码161821
- 哔哩哔哩 机器人历险记_里约大冒险2(2014)