当前位置: 首页 > news >正文

C语言:-三子棋游戏代码:分支-循环-数组-函数集合

思路分析:

1、写菜单

2、菜单之后进入游戏的操作

3、写函数 实现游戏

        3.1、初始化棋盘函数,使数组元素都为空格

        3.2、打印棋盘 棋盘的大概样子

        3.3、玩家出棋

                3.3.1、限制玩家要下的坐标位置

                3.3.2、判断玩家要下的位置是否由棋子

        3.4、电脑出棋

                3.4.1、用随机数 让电脑随机生成坐标

        3.5、判断玩家和电脑谁赢了

代码实现

game.h文件

#ifndef _GAME_H
#define _GAME_H
#include <stdio.h>
#include <time.h>
#include <string.h>
#include <stdlib.h>#define ROW 3
#define COL 3
//函数说明
void Initboard(char board[ROW][COL], int row, int col);
void Displayboard(char board[ROW][COL], int row, int col);
void playermove(char board[ROW][COL], int row, int col);
void ct_move(char board[ROW][COL], int row, int col);
char Iswin(char board[ROW][COL], int row, int col);
#endif

game.c--游戏算法实现

#include "game.h"
//初始化数组为 空格
void Initboard(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] = ' ';}}
}//展示棋盘
void Displayboard(char board[ROW][COL], int row, int col)
{int i;for (int i = 0; i < row; i++){int j;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 playermove(char board[ROW][COL], int row, int col)
{int x, y;printf("玩家走->:\n");//不到停止条件 一致循环while (1){printf("请输入要下的坐标:\n");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("该坐标被占用!");}}else{printf("坐标非法,请重新输入");}}
}//电脑出棋
void ct_move(char board[ROW][COL], int row, int col)
{int x, y;printf("电脑走->:\n");//用sand函数 使电脑生成0-2的随机数x = rand() % row;y = rand() % col;while (1){if (board[x][y] == ' '){board[x][y] = '#';break;}}
}//看棋盘是否下满了
int isfull(char board[ROW][COL], int row, int col)
{int i ,j;for(i = 0;i < row;i++){for(j = 0;j < col;j++){//如果数组元素中还有 空格 那就返回 0if(board[i][j] == ' '){return 0;}            }}return 1;
}//看玩家和电脑谁赢了
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 board[i][0];}}//竖相等for (i = 0; i < col; i++){if (board[0][i] == board[1][i] && board[1][i] == board[2][i] && board[1][i] != ' '){return board[i][0];}}//从左到右 对角线相等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];}//棋盘满了返回 1  再返回 q  平局if(1 == isfull(board,ROW,COL)){return 'q';}//如果以上条件都不满足,返回 'c' 表示游戏继续进行。return 'c';
}

test.c---测试文件

#include "game.h"
// 菜单栏
void menu()
{printf("=========================\n");printf("=========================\n");printf("========三子棋1.0=========\n");printf("===1 开始游戏==0 退出游戏==\n");printf("=========================\n");
}
// 游戏的算法实现
void game()
{char ret;// 数组-存放棋盘信息char board[ROW][COL] = {0};// 初始化棋盘 使所有元素为空格Initboard(board, ROW, COL);// 打印棋盘Displayboard(board, ROW, COL);while (1){// 玩家下棋playermove(board, ROW, COL);// 下完再打印一次棋盘Displayboard(board, ROW, COL);// 判断玩家是否赢了ret = Iswin(board, ROW, COL);if (ret != 'c'){break;}// 电脑下棋ct_move(board, ROW, COL);Displayboard(board, ROW, COL);// 判断电脑是否赢了ret = Iswin(board, ROW, COL);/**   *玩家赢*    #电脑赢*    c继续游戏*    q平局*/// 如果ret 不等于 c 不继续游戏 那就break 退出游戏if (ret != 'c'){break;}}if (ret == '*'){printf("玩家赢了\n");}else if (ret == '#'){printf("电脑赢了\n");}else if (ret == 'q'){printf("平局\n");}
}void test()
{menu();int input;do{printf("请选择:\n 1-> 开始游戏    0-> 退出游戏\n");scanf("%d", &input);switch (input){case 1:printf("game start!\n");game();break;case 0:printf("game over!\n");break;default:printf("无效选项,请重新选择");break;}} while (input);
}
int main(int argc, char const *argv[])
{// 随机函数srand(time(NULL));test();return 0;
}

效果展示

相关文章:

C语言:-三子棋游戏代码:分支-循环-数组-函数集合

思路分析&#xff1a; 1、写菜单 2、菜单之后进入游戏的操作 3、写函数 实现游戏 3.1、初始化棋盘函数&#xff0c;使数组元素都为空格 3.2、打印棋盘 棋盘的大概样子 3.3、玩家出棋 3.3.1、限制玩家要下的坐标位置 3.3.2、判断玩家要下的位置是否由棋子 3.4、电脑出棋 3.4.1、…...

“AI智慧化服务系统:未来生活的智能管家

在当今快速发展的科技时代&#xff0c;人工智能&#xff08;AI&#xff09;正以前所未有的速度改变着我们的生活。AI智慧化服务系统作为这一变革的前沿技术&#xff0c;正在逐渐成为我们未来生活的智能管家。它们不仅提高了服务效率&#xff0c;还为我们带来了更加个性化和便捷…...

python管理工具:conda部署+使用

python管理工具&#xff1a;conda部署使用 一、安装部署 1、 下载 - 官网下载&#xff1a; https://repo.anaconda.com/archive/index.html - wget方式&#xff1a; wget -c https://repo.anaconda.com/archive/Anaconda3-2023.03-1-Linux-x86_64.sh2、 安装 在conda文件的…...

minio https配置

minio启动时候指定数据目录,配置文件&#xff0c;密钥文件目录&#xff0c;环境文件 1.创建minio用户,专门用于服务启动的 groupadd -r minio-user useradd -M -r -g minio-user minio-user 2.在当前用户目录下创建minio目录&#xff0c;存储minio相关文件 mkdir minio 在mini…...

SpringMVC——原理简介

狂神SSM笔记 DispatcherServlet——SpringMVC 的核心 SpringMVC 围绕DispatcherServlet设计。 DispatcherServlet的作用是将请求分发到不同的处理器&#xff08;即不同的Servlet&#xff09;。根据请求的url&#xff0c;分配到对应的Servlet接口。 当发起请求时被前置的控制…...

Ubuntu18.04 解决 libc.so.6: version `GLIBC_2.28‘ not found

Glibc&#xff08;GNU C Library&#xff09;是 GNU 系统及其衍生系统如 Linux 操作系统中实现 C 语言标准库的核心组件。升级 Glibc 是一个非常谨慎的操作&#xff0c;因为它与系统的许多关键功能和服务密切相关。Ubuntu 18.04 默认安装的 Glibc 版本为 2.27&#xff0c;但某些…...

Notepad++移除所有空格

1.打开Notepad。 2.打开你想要编辑的文件。 3.按下 Ctrl H 打开查找和替换对话框&#xff0c;并选择 “正则表达式”。 4.在 “查找目标” 框中输入 \s。 5.在 “替换为” 框中留空&#xff0c;不填写任何内容。 6.点击 “全部替换” 按钮。...

Android BottomNavigationView不加icon使text垂直居中,完美解决。

这个问题网上千篇一律的设置iconsize为0&#xff0c;labale固定什么的&#xff0c;都没有效果。我的这个基本上所有人用都会有效果。 问题解决之前的效果&#xff1a;垂直方向&#xff0c;文本不居中&#xff0c;看着很难受 问题解决之后&#xff1a;舒服多了 其实很简单&…...

如何使用 `forEach` 遍历数组?

数组遍历相关问题&#xff1a;如何使用 forEach 遍历数组&#xff1f; 在 JavaScript 中&#xff0c;遍历数组是一个常见且必要的操作。数组提供了多种方法来进行遍历&#xff0c;其中 forEach 是一种非常方便且常用的方法。它可以轻松地对数组中的每个元素执行回调函数。理解…...

Go语言之路————条件控制:if、for、switch

Go语言之路————if、for、switch 前言ifforswitchgoto和label 前言 我是一名多年Java开发人员&#xff0c;因为工作需要现在要学习go语言&#xff0c;Go语言之路是一个系列&#xff0c;记录着我从0开始接触Go&#xff0c;到后面能正常完成工作上的业务开发的过程&#xff0…...

OpenAI推出首个AI Agent!日常事项自动化处理!

2025 年1月15日&#xff0c;OpenAI 正式宣布推出一项名为Tasks的测试版功能 。 该功能可以根据你的需求内容和时间实现自动化处理。比方说&#xff0c;你可以设置每天早晨 7 点获取天气预报&#xff0c;或定时提醒遛狗等日常事项。 看到这里&#xff0c;有没有一种熟悉的感觉&a…...

Go语言的编程范式

Go语言的编程范式 引言 Go语言&#xff0c;又称为Golang&#xff0c;由Google于2007年开发并于2009年开放源代码。Go语言被设计成一种简洁、高效且适用于多核计算和网络编程的语言。其独特的并发模型、静态类型系统以及高效的性能&#xff0c;使其在现代软件开发中逐渐获得了…...

如何在 Rocky Linux 上安装极狐GitLab?

本文分享如何在 Rocky Linux 操作系统上安装极狐GitLab。 相关资料 极狐GitLab 在各种操作系统下的安装指南官网文档 前提条件 一个安装了 Rocky Linux 操作系统的云服务器 可以查看 /etc/os-release 中的信息&#xff0c;确认操作系统信息&#xff1a; NAME"Rocky …...

数据库(MySQL)练习

数据库&#xff08;MySQL&#xff09;练习 一、练习1.15练习1.16练习 二、注意事项2.1 第四天 一、练习 1.15练习 win11安装配置MySQL超详细教程: https://baijiahao.baidu.com/s?id1786910666566008458&wfrspider&forpc 准备工作&#xff1a; mysql -uroot -p #以…...

Mac上安装Label Studio

在Mac上安装Anaconda并随后安装Label Studio&#xff0c;可以按照以下步骤进行&#xff1a; 1. 在Mac上安装Anaconda 首先&#xff0c;你需要从Anaconda的官方网站下载适用于Mac的安装程序。访问Anaconda官网&#xff0c;点击“Download Anaconda”按钮&#xff0c;选择适合M…...

【airtest】自动化入门教程Poco元素定位

1. 前言 本文将详细讲解Poco控件定位的各种方式&#xff0c;利用这些方法可以帮助我们编写出目标控件的定位脚本。我们在IDE录制的poco脚本&#xff0c;常见的都是类似 poco(“star_single”).click()这样的脚本&#xff0c;其中 poco(“star_single”) 这块就属于Poco控件定位…...

【爬虫】某某查cookie逆向

代码仅供技术人员进行学习和研究使用&#xff0c;请勿将其用于非法用途或以任何方式窃取第三方数据。使用该代码产生的所有风险均由用户自行承担&#xff0c;作者不对用户因使用该代码而造成的任何损失或损害承担任何责任。 加密参数 加密参数主要是cookie&#xff0c;其中只有…...

【进程与线程】进程的状态

在操作系统中&#xff0c;进程是执行中的程序实例。进程在其生命周期中会经历不同的状态&#xff0c;操作系统根据进程的执行情况和资源调度&#xff0c;将进程划分为多个状态。 这些状态帮助操作系统更加高效地管理 CPU 和系统资源。 进程的状态&#xff1a;就绪态&#xff0…...

阻塞赋值和非阻塞赋值

理论学习 阻塞赋值 用 表示 &#xff0c;这种对应的电路结构常常与触发器没有关系&#xff0c;只与输入电平的变化有关系。可以将阻塞赋值的操作看作只有一个步骤的操作&#xff0c;即将计算赋值符号的右边赋值给左边&#xff0c;在未执行完之前&#…...

Maven在Win10上的安装教程

诸神缄默不语-个人CSDN博文目录 这个文件可以跟我要&#xff0c;也可以从官网下载&#xff1a; 第一步&#xff1a;解压文件 第二步&#xff1a;设置环境变量 在系统变量处点击新建&#xff0c;输入变量名MAVEN_HOME&#xff0c;变量值为解压路径&#xff1a; 在系统变…...

攻防世界_SQL注入

inget 尝试万能钥匙。 输入?id1or11# supersqli 1.找注入点 输入框 2.判断字符型&#xff0c;数字型 输入1 and 11 和1 and 12&#xff0c;发现两次提交后页面一样&#xff0c;判断出为字符型注入 3.判断闭合符号 输入1&#xff0c;回显正常 输入1&#xff0c;报错 加上…...

Ruby语言的数据结构

Ruby语言的数据结构详解 Ruby是一种动态、面向对象的编程语言&#xff0c;因其简洁优雅的语法而受到开发者的喜爱。在Ruby中&#xff0c;数据结构是构建和管理数据的一种方式&#xff0c;不同的数据结构适用于不同的场景。本文将详细探讨Ruby中的几种主要数据结构&#xff0c;…...

Jmeter配置服务代理器 Proxy(二)

1.创建脚本记录器 2.配置&#xff1a;Jmeter代理、端口、记录目标等 3.配置谷歌浏览器代理 浏览器配置代理的详细教程可参考&#xff1a;使用whistle代理-CSDN博客 4.启动Jmeter记录器 点击ok后弹出这个界面&#xff0c;生成了证书&#xff1a; 5.给浏览器安装Jmeter代理的证书…...

Spring Boot 中实现 WebSocket 的方式

在 Spring Boot 中实现 WebSocket 的方式主要有以下几种,每种方式适用于不同的场景和需求: 1. 基于 Spring WebSocket 的实现 特点: 原生支持 WebSocket,基于 Spring 提供的 API。使用 WebSocketConfigurer 和 WebSocketHandler 配置端点和消息处理逻辑。可以通过拦截器访…...

C语言初阶习题【29】杨氏矩阵

1. 题目描述——杨氏矩阵 有一个数字矩阵&#xff0c;矩阵的每行从左到右是递增的&#xff0c;矩阵从上到下是递增的&#xff0c;请编写程序在这样的矩阵中查找某个数字是否存在。 要求&#xff1a;时间复杂度小于O(N); 2. 思路 3. 代码实现1 #include<stdio.h>void fin…...

[操作系统] 深入理解操作系统的概念及定位

概念 任何计算机系统都包含⼀个基本的程序集合&#xff0c;称为操作系统(OS)。 其核心功能如图片所示&#xff0c;包括&#xff1a; 内核 (Kernel)&#xff1a; 内核是操作系统的核心部分&#xff0c;被认为是狭义上的操作系统&#xff0c;直接与硬件打交道。负责进程管理、内…...

Java中对list数据进行手动分页(可直接复用版)

1.获取list列表数据 // 这边用的mybatisplus查询的sql。条件自己组装 List<实体类> result baseMapper.getPageData(lambdaQuery); 2.计算总记录数 // 计算总记录数 int totalRecords result.size(); 3.创建分页对象&#xff0c;并塞入结果值 // 创建分页对象 IPa…...

【HarmonyOS NEXT】鸿蒙跳转华为应用市场目标APP下载页

【HarmonyOS NEXT】鸿蒙跳转华为应用市场目标APP下载页 一、问题背景&#xff1a; 如今&#xff0c;大家都离不开各种手机应用。随着鸿蒙系统用户越来越多&#xff0c;大家都希望能在鸿蒙设备上快速找到想用的 APP。华为应用市场里有海量的 APP&#xff0c;但之前从鸿蒙设备进…...

《研发管理 APQP 软件系统》——汽车电子行业的应用收益分析

全星研发管理 APQP 软件系统在汽车电子行业的应用收益分析 在汽车电子行业&#xff0c;技术革新迅猛&#xff0c;市场竞争激烈。《全星研发管理 APQP 软件系统》的应用&#xff0c;为企业带来了革命性的变化&#xff0c;诸多收益使其成为行业发展的关键驱动力。 《全星研发管理…...

【IDEA 2024】学习笔记--文件选项卡

在我们项目的开发过程中&#xff0c;由于项目涉及的类过多&#xff0c;以至于我们会打开很多的窗口。使用IDEA默认的配置&#xff0c;个人觉得十分不便。 目录 一、设置多个文件选项卡按照文件字母顺序排列 二、设置多个文件选项卡分行显示 一、设置多个文件选项卡按照文件字…...

wordpress qq互联插件/网站收录平台

Redux 这里介绍下我对Redux的理解&#xff0c;不涉及如何使用Redux。 Redux 官网介绍&#xff1a; A predictable state container for JavaScript apps.&#xff08;一个可预测的状态容器for js 应用&#xff09; 可以看出最亮眼的就是可预测&#xff0c;是个啥呢&#xff1f;…...

网站建设要实现的目标/营销型网站建设要点

2014.1.6晚上8点准时开的课 本期培训一共八节&#xff0c;前三堂免费&#xff0c;后面的课程需要付费才可以观看。 本节内容&#xff1a; 实现皮肤自定义样式的修改 css相关理论&#xff1b; 重写官方样式&#xff0c;美化app&#xff0c;手把手教你如何查看官方样式及修改样式…...

python做的网站如何部署/站长工具百度

MacDroid for mac版是一款帮助用户在mac安卓手机数据传输助手&#xff0c;由于 Mac OS X 本身并不支持 MTP 协议&#xff0c;所以通过 USB 将 Android 设备连接到 Mac 电脑上是无法识别的&#xff0c;更别说读取里面的文件了&#xff0c;需要用到MacDroid版了&#xff0c;帮你轻…...

网站优化推广平台/最新做做网站

用android studio编写2-4个数的简易四则运算&#xff0c;首先新建一个安卓工程&#xff0c;进行页面布局 代码如下&#xff1a; JAVA代码&#xff1a; 运行结果展示&#xff1a; 这个程序进行除法预算时显示不出小数点&#xff0c;并且实现运算的方法过于繁琐…...

软件ui设计软件/刷关键词排名seo

其实就是一个学员问SQL Server 是否能存放的于NAS&#xff08;UAC 的路径下&#xff09;。 官方的回答简略版本为&#xff1a;可以&#xff0c;需要满足一些强制性的硬件要求。但需要考虑一系列的性能的问题。 http://support.microsoft.com/kb/304261/zh-cn转载于:https://www…...

专题页是什么/泰州seo外包公司

本系列笔记主要是回顾了一下PHP中和日期操作相关的函数在PHP中设置时区有三种方法&#xff1a;1、直接在php的配置文件中修改以mac系统为例&#xff0c;我使用的是mamp pro 集成环境&#xff0c;所以我就说明了一下如何修改这种环境下的配置文件。a) 打开终端&#xff0c;输入 …...