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

[c语言日寄]精英怪:三子棋(tic-tac-toe)3命慢通[附免费源码]

哈喽盆友们,今天带来《c语言》游戏中[三子棋boss]速通教程!我们的目标是一边编写博文,一边快速用c语言实现三子棋游戏。准备好瓜子,我们计时开始!在这里插入图片描述

前期规划

在速通中,我们必须要有清晰的前期规划,我选用了一下框架

int main() {//棋盘return 0;
}
//初始UI
//游玩显示模块
//用户操作模块
//胜利判定模块
//结算界面

初始UI

初始UI是最为简单的部分之一,我们可以在此快速输出,为接下来的算法腾出时间。
我们使用printf函数直接实现可视化UI,然后使用scanf读取用户的操作。

	int num = 0;printf("-----------------------\n");printf("  欢迎来到三子棋游戏!\n");printf("   # 1.开始游戏\n");printf("   # 2.退出游戏\n");printf("-----------------------\n");printf("请输入操作序号:");scanf_s("%d", &num);

使用switch函数进行分流,并且添加上一个简单的输入检测:

	again:int num = 0;printf("-----------------------\n");printf("  欢迎来到三子棋游戏!\n");printf("   # 1.开始游戏\n");printf("   # 2.退出游戏\n");printf("-----------------------\n");printf("请输入操作序号:");scanf_s("%d", &num);switch (num) {case 1:return 1;case 2:return -1;default:system("cls");printf("#无效的操作符输入\n");goto again;//通过goto实现快速构建循环。}

配合return,函数的声明为:int UI();
在主函数中通过if语句引用UI,并且实现退出选项。

UI函数到此为止。完整代码如下:

#include<stdio.h>
#include<windows.h>int UI();int main() {//展示UIif (UI() == -1)return 0;//棋盘return 0;
}//初始UIint UI() {again:int num = 0;printf("-----------------------\n");printf("  欢迎来到三子棋游戏!\n");printf("   # 1.开始游戏\n");printf("   # 2.退出游戏\n");printf("-----------------------\n");printf("请输入操作序号:");scanf_s("%d", &num);switch (num) {case 1:return 1;case 2:return -1;default:system("cls");printf("#无效的操作符输入\n");goto again;}}
//游玩显示模块
//用户操作模块
//胜利判定模块
//结算界面

具体的效果如下:
在这里插入图片描述

此时的时间为:在这里插入图片描述

棋盘

清理了小兵之后,boss战才开始打响:
我们需要构建三子棋的棋盘。

为了方便判定,我将33的棋盘嵌入55的数组中。

	//棋盘int chess[5][5];memset(chess, 0, sizeof(int) * 25);//棋盘初始化

通过string.h头文件中memset函数,我们完成了对棋盘的初始化。

游玩显示模块

此时,boss血条已经下降了四分之一,boss进入红温阶段。
我们需要建立一个函数输出游玩时的界面。
这是一个双人游戏,所以棋盘有3种状态:空白,X棋子,O棋子。
我用0代表空格,用1代表X棋子,用2代表O棋子。

建立print_under函数实现对单个格子的可视化:

void print_under(int*arr ,int i, int j) {if (*(arr + i * 3 + j) == 0)printf("·\t");else if (*(arr + i * 3 + j) == 1)printf("X\t");else if (*(arr + i * 3 + j) == 2)printf("O\t");else printf("Error\t");return;
}

通过vision函数实现棋盘整体的输出:

//游玩显示模块
void vision(int* arr) {system("cls");printf("-----------------------\n");for (int i = 1; i < 4; i++) {for (int j = 1; j < 4; j++) {print_under(arr,i, j);}printf("\n");}printf("-----------------------");}

效果如下
在这里插入图片描述

不过,我在此时发现一个bug,就是在UI()函数中,goto语句将变量定义包涵进去了,这样会导致变量的重定义,这吓了我一身冷汗,急忙改了回来:

//原式
int UI() {again:int num = 0;//原来的定义放在again标签前printf("-----------------------\n");
//改后
int UI() {int num = 0;//转移到标签外面again:printf("-----------------------\n");

很好,此时我们成功完成了这个模块。
用时:
在这里插入图片描述

用户操作模块

boss血量剩下50%,boss进入第二阶段!!boss放大招了!我们必须挺过这里!

建立op()函数,引入user变量实现玩家1和玩家2的区分。
用scanf读取用户操作,并且设立输入检查:

void op(int* arr, int user) {int i, j;again1:if (user % 2 == 0) {printf("玩家1:请输入落子位置");scanf_s("%d%d", &i, &j);if (i < 4 && i > 0)if (j < 4 && j > 0)if (*(arr + 3 * i + j) == 0)*(arr + 3 * i + j) = 1;else { printf("#无效的操作:你似乎下在了已经有棋子的地方哦\n");goto again1; }else { printf("#无效的操作:你似乎下到了界外诶\n");goto again1; }else { printf("#无效的操作:你似乎下到了界外诶\n");goto again1; }}if (user % 2 == 1) {printf("玩家2:请输入落子位置");scanf_s("%d%d", &i, &j);if (i < 4 && i > 0)if (j < 4 && j > 0)if (*(arr + 3 * i + j) == 0)*(arr + 3 * i + j) = 2;else { printf("#无效的操作:你似乎下在了已经有棋子的地方哦\n");goto again1; }else {printf("#无效的操作:你似乎下到了界外诶\n");goto again1; }else { printf("#无效的操作:你似乎下到了界外诶\n");goto again1; }}}

此时,我还对游玩显示模块进行了优化

void vision(int* arr) {system("cls");printf("----------------------------\n");printf("\t1\t2\t3\n");for (int i = 1; i < 4; i++) {printf("%d\t", i);for (int j = 1; j < 4; j++) {print_under(arr,i, j);}printf("\n");}printf("----------------------------\n");}

效果
此时的效果:
在这里插入图片描述

此时,我一共花费了以下时间:(显示问题:真实的时间为图示的时间加上1个小时)在这里插入图片描述

胜利判定

此时boss血量见底,让我们来一段漂亮的斩杀把!
完成胜利判定模块:


// 胜利判定模块
int victory(int* arr, int user) {int player = (user % 2 == 0) ? 1 : 2;// 横向判定for (int i = 1; i < 4; i++) {if (*(arr + i * 3 + 1) == player && *(arr + i * 3 + 2) == player && *(arr + i * 3 + 3) == player) {return player;}}// 纵向判定for (int j = 1; j < 4; j++) {if (*(arr + 1 * 3 + j) == player && *(arr + 2 * 3 + j) == player && *(arr + 3 * 3 + j) == player) {return player;}}// 左斜线判定if (*(arr + 1 * 3 + 1) == player && *(arr + 2 * 3 + 2) == player && *(arr + 3 * 3 + 3) == player) {return player;}// 右侧斜线判定if (*(arr + 1 * 3 + 3) == player && *(arr + 2 * 3 + 2) == player && *(arr + 3 * 3 + 1) == player) {return player;}return 0;
}

经历了痛苦的改bug,
我终于意识到,原来数组只要3*3就好了TAT,于是我默默的把标题的1命速通改为3命速通(悲)。
那么用时多久呢?在这里插入图片描述

没错,两个半小时!(计时器忽略了小时计数)
一位破防的靓仔把标题的1命速通改为3命慢通……

嘿嘿

虽然速通失败,但是博主其实很有实力的!
关注博主,总有一天我会证明给你看(OvO)~

相关文章:

[c语言日寄]精英怪:三子棋(tic-tac-toe)3命慢通[附免费源码]

哈喽盆友们&#xff0c;今天带来《c语言》游戏中[三子棋boss]速通教程&#xff01;我们的目标是一边编写博文&#xff0c;一边快速用c语言实现三子棋游戏。准备好瓜子&#xff0c;我们计时开始&#xff01; 前期规划 在速通中&#xff0c;我们必须要有清晰的前期规划&#xf…...

【Rust自学】12.1. 接收命令行参数

12.1.0. 写在正文之前 第12章要做一个实例的项目——一个命令行程序。这个程序是一个grep(Global Regular Expression Print)&#xff0c;是一个全局正则搜索和输出的工具。它的功能是在指定的文件中搜索出指定的文字。 这个项目分为这么几步&#xff1a; 接收命令行参数&am…...

Qt应用之MDI(多文档设计)

qt creator 版本6.8.0 MinGW 64bit 由此模块可以扩展成设计一个qt文本编辑器。 界面如下 部分功能展示如下 新建文件 打开文件 mdi模式、级联模式和平铺模式 界面和程序构建过程。 1.如图所需.cpp和.h文件 2.mainwindow.ui和tformdoc.ui界面布局如下 不懂什么是Action如何…...

使用FFmpeg和Python将短视频转换为GIF的使用指南

使用FFmpeg和Python将短视频转换为GIF的使用指南 在数字时代&#xff0c;GIF动图已成为表达情感和分享幽默的重要媒介。无论是社交媒体上的搞笑片段还是创意项目中的视觉效果&#xff0c;GIF都能迅速抓住观众的注意力。然而&#xff0c;很多人不知道如何将短视频转换为GIF。本…...

Qt 各版本选择

嵌入式推荐用 Qt4.8&#xff0c;打包的程序小&#xff1a;Qt4.8.7是Qt4的终结版本&#xff0c;是Qt4系列版本中最稳定最经典的 最后支持xp系统的长期支持版本&#xff1a;Qt5.6.3&#xff1b;Qt5.7.0是最后支持xp系统的非长期支持版本。 最后提供mysql数据库插件的版本&#xf…...

Web基础-分层解耦

思考&#xff1a;什么是耦合&#xff1f;什么是内聚&#xff1f;软件设计原则是什么&#xff1f; 耦合&#xff1a;衡量软件中各个层 / 各个模块的依赖关联程度。 内聚&#xff1a;软件中各个功能模块内部的功能联系。 软件设计原则&#xff1a;高内聚低耦合。 那我们该如何实现…...

G1原理—8.如何优化G1中的YGC

大纲 1.5千QPS的数据报表系统发生性能抖动的优化(停顿时间太小导致新生代上不去) 2.由于产生大量大对象导致系统吞吐量降低的优化(大对象太多频繁Mixed GC) 3.YGC其他相关参数优化之TLAB参数优化 4.YGC其他相关参数优化之RSet、PLAB和大对象的处理优化 1.5千QPS的数据报表系…...

Hugging Face 的 Trainer类用法

一、使用方法 Hugging Face 的 Trainer 类是一个高级API&#xff0c;用于简化训练、评估和预测的流程。以下是如何使用 Trainer 类的基本步骤&#xff1a; 1. 导入必要的类和函数 首先&#xff0c;您需要导入 Trainer 类以及其他可能需要的类或函数。 from transformers im…...

RabbitMQ前置概念

文章目录 1.AMQP协议是什么&#xff1f;2.rabbitmq端口介绍3.消息队列的作用和使用场景4.rabbitmq工作原理5.整体架构核心概念6.使用7.消费者消息推送限制&#xff08;work模型&#xff09;8.fanout交换机9.Direct交换机10.Topic交换机&#xff08;推荐&#xff09;11.声明队列…...

IDEA2023版中TODO的使用

介绍&#xff1a;TODO其实本质上还是注释&#xff0c;只不过加上了TODO这几个字符&#xff0c;可以让使用者快速找到。 注意&#xff1a;在类、接口等文件中&#xff0c;注释是使用// 即&#xff1a;// TODO 注释内容 在配置文件中&#xff0c;注释是使用# 即&#xff1a;# TO…...

(STM32笔记)十二、DMA的基础知识与用法 第二部分

我用的是正点的STM32F103来进行学习&#xff0c;板子和教程是野火的指南者。 之后的这个系列笔记开头未标明的话&#xff0c;用的也是这个板子和教程。 DMA的基础知识与用法 二、DMA传输设置1、数据来源与数据去向外设到存储器存储器到外设存储器到存储器 2、每次传输大小3、传…...

windows系统“GameInputRedist.dll”文件丢失或错误导致游戏运行异常如何解决?windows系统DLL文件修复方法

GameInputRedist.dll是存放在windows系统中的一个重要dll文件&#xff0c;缺少它可能会造成部分游戏不能正常运行。当你的电脑弹出提示“无法找到GameInputRedist.dll”或“计算机缺少GameInputRedist.dll”等错误问题&#xff0c;请不用担心&#xff0c;我们将深入解析DLL文件…...

使用分割 Mask 和 K-means 聚类获取天空的颜色

引言 在计算机视觉领域&#xff0c;获取天空的颜色是一个常见任务&#xff0c;广泛应用于天气分析、环境感知和图像增强等场景。本篇博客将介绍如何通过已知的天空区域 Mask 提取天空像素&#xff0c;并使用 K-means 聚类分析天空颜色&#xff0c;最终根据颜色占比查表得到主导…...

UML系列之Rational Rose笔记四:时序图(顺序图_序列图)

时序图有很多画法&#xff0c;这基本上能算rose里面要求最乱的一种图了&#xff1b;有些人的需求是BCE模式&#xff0c;这是正常规范点的&#xff0c;有些人就不需要&#xff0c;有些需要用数据库交互&#xff0c;有些不需要&#xff1b;没有一个较为统一的需求&#xff1b;在此…...

nginx反向代理http 和 https(案例)

说明&#xff1a;在香港开了一台虚拟机&#xff0c;主要用于将来自国外访问的80和443代理到大陆IDC机房 (1) 定义80和443的upstream 211.155.82.174 是keepalive中VIP对应的公网IP&#xff08;在国内访问www.playyx.com解析到211.155.82.174&#xff09; upstream new_server…...

Dify应用-工作流

目录 DIFY 工作流参考 DIFY 工作流 2025-1-15 老规矩感谢参考文章的作者,避免走弯路。 2025-1-15 方便容易上手 在dify的一个桌面上,添加多个节点来完成一个任务。 每个工作流必须有一个开始和结束节点。 节点之间用线连接即可。 每个节点可以有输入和输出 输出类型有,字符串,…...

装备制造业:建立项目“四算”管理:以合同为源头,以项目为手段实现合同的测算、预算、核算与决算的管控体系

尊敬的各位管理层&#xff1a; 大家好&#xff01;作为装备制造业的 CFO&#xff0c;我今天要向大家汇报的是如何建立项目“四算”管理&#xff0c;即以合同为源头&#xff0c;以项目为手段实现合同的测算、预算、核算与决算的管控体系。在当前市场竞争激烈、成本压力不断增大…...

Centos7将/dev/mapper/centos-home磁盘空间转移到/dev/mapper/centos-root

1、查看存储 df -h文件系统 容量 已用 可用 已用% 挂载点 devtmpfs 126G 0 126G 0% /dev tmpfs 126G 0 126G 0% /dev/shm tmpfs 126G 19M 126G 1% /run tmpfs …...

docker 部署 MantisBT

1. docker 安装MantisBT docker pull vimagick/mantisbt:latest 2.先运行实例&#xff0c;复制配置文件 docker run -p 8084:80 --name mantisbt -d vimagick/mantisbt:latest 3. 复制所需要配置文件到本地路径 docker cp mantisbt:/var/www/html/config/config_inc.php.…...

【Vue - Element 】实现表单输入框的远程搜索功能

需求 表单是一个常见的元素&#xff0c;而在表单中&#xff0c;常常需要用户从大量的数据中选择一个或多个选项。 为了提高用户体验&#xff0c;提供远程搜索功能可以帮助用户快速找到所需的选项&#xff0c;而不是从冗长的下拉列表中手动查找。 以该需求为例&#xff0c;我…...

学习华为熵减:激发组织活力(系列之三)

目录 为什么学习华为&#xff1f; 学习华为什么&#xff1f; 一、势&#xff1a;顺势而为&#xff0c;在风口上猪都会飞起来。 二、道&#xff1a;就是认识和利用规律层面&#xff0c;文化和制度创新就是企业经营之道。 三、法&#xff1a;就是一套价值管理的变革方法论。…...

多种vue前端框架介绍

学如逆水行舟&#xff0c;不进则退。 在现今的软件开发领域&#xff0c;Vue.js凭借其高效、灵活和易于上手的特性&#xff0c;成为了前端开发的热门选择。对于需要快速搭建企业级后台管理系统的开发者而言&#xff0c;使用现成的Vue后台管理系统模板无疑是一个明智之举。 本文…...

C语言重点回顾(持续更新中~)

个人见解&#xff0c;有异议可以留言~ 第一讲&#xff1a;初识C语言 目录 1.编译和链接 2.main函数 3.库函数 4.关键字 5.字符和字符串 6.转义字符 1.编译和链接 初始的C语言源代码是一个文本文件&#xff0c;要想将一个文本文件变成一个执行文件&#xff0c;需要经过编…...

Navicat Premium 原生支持阿里云 PolarDB 数据库

近日&#xff0c;我司旗下的 Navicat Premium 软件通过了阿里云 PolarDB 数据库产品生态集成认证&#xff0c;这标志着 Navicat 通过原生技术全面实现了对秒级弹性、高性价比、稳定可靠的PolarDB 数据库三大引擎&#xff08;PolarDB MySQL版、PolarDB PostgreSQL版和 PolarDB f…...

青少年编程与数学 02-006 前端开发框架VUE 25课题、UI数据

青少年编程与数学 02-006 前端开发框架VUE 25课题、UI数据 一、UI数据二、Element Plus处理响应式数据三、Vuetify处理响应式数据 课题摘要:本文探讨了UI数据在用户界面中的重要性和处理方法。UI数据包括展示数据、用户输入、状态数据等&#xff0c;对用户体验和应用交互性有直…...

用css和html制作太极图

目录 css相关参数介绍 边距 边框 伪元素选择器 太极图案例实现、 代码 效果 css相关参数介绍 边距 <!DOCTYPE html> <html><head><meta charset"utf-8"><title></title><style>*{margin: 0;padding: 0;}div{width: …...

软件测试入门—功能需求分析:以一个旅游管理系统为例

在软件测试的旅程中&#xff0c;功能需求分析是测试人员构建高质量测试用例的基础&#xff0c;它确保软件的各项功能都能按照预期正常运行。接下来&#xff0c;我们将以一个旅游管理系统为例&#xff0c;详细阐述如何进行功能需求分析&#xff0c;帮助大家更清晰地掌握这一重要…...

深度解析Linux中关于操作系统的知识点

操作系统概述与核心概念 任何计算机系统都包含一个基本的程序集合&#xff0c;成为操作系统OS 操作系统是一款进行软硬件管理的软件 操作系统包括&#xff1a; 内核&#xff08;进程管理&#xff0c;内存管理&#xff0c;驱动管理&#xff09; 其他程序&#xff08;例如数据…...

【深度学习】关键技术-激活函数(Activation Functions)

激活函数&#xff08;Activation Functions&#xff09; 激活函数是神经网络的重要组成部分&#xff0c;它的作用是将神经元的输入信号映射到输出信号&#xff0c;同时引入非线性特性&#xff0c;使神经网络能够处理复杂问题。以下是常见激活函数的种类、公式、图形特点及其应…...

分布式ID的实现方案

1. 什么是分布式ID ​ 对于低访问量的系统来说&#xff0c;无需对数据库进行分库分表&#xff0c;单库单表完全可以应对&#xff0c;但是随着系统访问量的上升&#xff0c;单表单库的访问压力逐渐增大&#xff0c;这时候就需要采用分库分表的方案&#xff0c;来缓解压力。 ​…...

电脑有两张网卡,如何实现同时访问外网和内网?

要是想让一台电脑用两张网卡&#xff0c;既能访问外网又能访问内网&#xff0c;那可以通过设置网络路由还有网卡的 IP 地址来达成。 检查一下网卡的连接 得保证电脑的两张网卡分别连到外网和内网的网络设备上&#xff0c;像路由器或者交换机啥的。 给网卡配上不一样的 IP 地…...

Linux 查看内存命令

目录 1. free 2. vmstat 3. top 4. htop 5. /proc/meminfo 1. free free命令是最常用的查看内存使用情况的命令。它显示系统的总内存、已使用内存、空闲内存和交换内存的总量。 free -h -h 选项&#xff1a;以易读的格式&#xff08;如GB、MB&#xff09;显示内存大小。…...

无法联网怎么在docker中安装Ribbitmq

如果无法连接互联网&#xff0c;无法在Docker中安装RabbitMQ。但是&#xff0c;您可以使用本地镜像或者手动下载RabbitMQ的Docker镜像并进行安装。 以下是使用本地镜像的步骤&#xff1a; 从可以上网的计算机上拉取RabbitMQ的官方Docker镜像&#xff1a; docker pull rabbitmq:…...

Spring Boot 定时任务搭建及Quartz对比详解

前言&#xff1a; 之前在帮别人搭建定时任务时 被问到为什么不用 Quartz 反而使用 SpringBoot 定时任务 以下是 SpringBoot 定时任务 的使用情况 大家可参考具体情况选择使用 1. 概述&#xff1a; Spring Boot 定时器是基于 Spring Framework 的 Task Scheduling 模块实现的…...

集中式架构vs分布式架构

一、集中式架构 如何准确理解集中式架构 1. 集中式架构的定义 集中式架构是一种将系统的所有计算、存储、数据处理和控制逻辑集中在一个或少数几个节点上运行的架构模式。这些中央节点&#xff08;服务器或主机&#xff09;作为系统的核心&#xff0c;负责处理所有用户请求和…...

中国数字安全产业年度报告(2024)

数字安全是指&#xff0c;在全球数字化背景下&#xff0c;合理控制个人、组织、国家在各种活动中面临的数字风险&#xff0c;保障数字社会可持续发展的政策法规、管理措施、技术方法等安全手段的总和。 数字安全领域可从三个方面对应新质生产力的三大内涵:一是基于大型语言模型…...

Python Wi-Fi密码测试工具

Python Wi-Fi测试工具 相关资源文件已经打包成EXE文件&#xff0c;可双击直接运行程序&#xff0c;且文章末尾已附上相关源码&#xff0c;以供大家学习交流&#xff0c;博主主页还有更多Python相关程序案例&#xff0c;秉着开源精神的想法&#xff0c;望大家喜欢&#xff0c;点…...

深入探讨DICOM医学影像中的MPPS服务及其具体实现

深入探讨DICOM医学影像中的MPPS服务及其具体实现 1. 引言 在医疗影像的管理和传输过程中&#xff0c;DICOM&#xff08;数字影像和通信医学&#xff09;标准发挥着至关重要的作用。除了DICOM影像的存储和传输&#xff08;如影像存储SCP和影像传输SCP&#xff09;&#xff0c;…...

【Rust自学】12.3. 重构 Pt.1:改善模块化

12.3.0. 写在正文之前 第12章要做一个实例的项目——一个命令行程序。这个程序是一个grep(Global Regular Expression Print)&#xff0c;是一个全局正则搜索和输出的工具。它的功能是在指定的文件中搜索出指定的文字。 这个项目分为这么几步&#xff1a; 接收命令行参数读取…...

Cosmos:英伟达发布世界基础模型,为机器人及自动驾驶开发加速!

1. 简介 在2025年消费电子展&#xff08;CES&#xff09;上&#xff0c;NVIDIA发布了全新的Cosmos平台&#xff0c;旨在加速物理人工智能&#xff08;AI&#xff09;系统的开发&#xff0c;尤其是自主驾驶车辆和机器人。该平台集成了生成式世界基础模型&#xff08;WFM&#x…...

【Docker】保姆级 docker 容器部署 MySQL 及 Navicat 远程连接

&#x1f970;&#x1f970;&#x1f970;来都来了&#xff0c;不妨点个关注叭&#xff01; &#x1f449;博客主页&#xff1a;欢迎各位大佬!&#x1f448; 文章目录 1. docker 容器部署 MySQL1.1 拉取mysql镜像1.2 启动容器1.3 进入容器1.4 使用 root 用户登录 2. Navicat 连…...

Java IDEA中Gutter Icons图标的含义

前些天发现了一个蛮有意思的人工智能学习网站,8个字形容一下"通俗易懂&#xff0c;风趣幽默"&#xff0c;感觉非常有意思,忍不住分享一下给大家。 &#x1f449;点击跳转到教程 前言&#xff1a; 很多人刚开始用IDEA来学习编程&#xff0c;会发现下面这些图标。 但是…...

Broker收到消息之后如何存储

1.前言 此文章是在儒猿课程中的学习笔记&#xff0c;感兴趣的想看原来的课程可以去咨询儒猿课堂《从0开始带你成为RocketMQ高手》&#xff0c;我本人觉得这个作者还是不错&#xff0c;都是从场景来进行分析&#xff0c;感觉还是挺适合我这种小白的。这块主要都是我自己的学习笔…...

RuoYi框架上传图片或文件到阿里云OSS详细教程

为了提供一个更加详细的教程&#xff0c;我们将深入探讨每个步骤&#xff0c;并添加一些额外的细节和最佳实践建议。以下是关于如何在Ruoyi框架中集成阿里云OSS实现文件上传功能的详尽指南。 详细教程 环境准备 注册阿里云账号&#xff1a;访问阿里云官网并创建一个账户。创…...

【论文笔记】SmileSplat:稀疏视角+pose-free+泛化

还是一篇基于dust3r的稀疏视角重建工作&#xff0c;作者联合优化了相机内外参与GS模型&#xff0c;实验结果表明优于noposplat。 abstract 在本文中&#xff0c;提出了一种新颖的可泛化高斯方法 SmileSplat&#xff0c;可以对无约束&#xff08;未标定相机的&#xff09;稀疏多…...

python实现收到一封邮件时自动触发执行读取邮件内容及后续操作

要实现收到一封邮件时自动触发执行 getEmailData()&#xff0c;可以结合定时任务或实时事件监控机制来实现。以下是两种常用的方法&#xff1a; 方法 1&#xff1a;轮询方式&#xff08;定时检测&#xff09; 使用 schedule 或 time.sleep 循环定期检测收件箱&#xff1a; i…...

【Vim Masterclass 笔记12】S06L26 + L27:Vim 文本的搜索、查找及替换同步练习(含点评课)

文章目录 S06L26 Exercise 07 - Search, Find, and Replace1 训练目标2 操作指令2.1. 打开 search-practice.txt 文件2.2. 同一行内的搜索练习2.3. 当前文件内的搜索练习2.4. 单词搜索练习2.5. 全局替换练习 3 退出 Vim S06L27 同步练习点评课 写在前面 Vim 的文本检索、查找与…...

YOLOv11 OBB 任务介绍与数据集构建要求及训练脚本使用指南

YOLO&#xff08;You Only Look Once&#xff09;是一个高效且广泛应用于目标检测任务的深度学习框架。在目标检测任务中&#xff0c;传统的边界框&#xff08;AABB&#xff09;通过四个参数来定义目标的位置信息&#xff1a;中心坐标、宽度、高度以及目标的旋转角度。然而&…...

Leecode刷题C语言之超过阈值的最小操作数②

执行结果:通过 执行用时和内存消耗如下&#xff1a; // 最小堆的节点结构体 typedef struct {long long* heap;int size;int capacity; } MinHeap;// 初始化最小堆 MinHeap* createMinHeap(int capacity) {MinHeap* minHeap (MinHeap*)malloc(sizeof(MinHeap));minHeap->s…...

【Linux】11.Linux基础开发工具使用(4)

文章目录 3. Linux调试器-gdb使用3.1 背景3.2 下载安装3.3 使用gdb查询3.4 开始使用 3. Linux调试器-gdb使用 3.1 背景 程序的发布方式有两种&#xff0c;debug模式和release模式 Linux gcc/g出来的二进制程序&#xff0c;默认是release模式 要使用gdb调试&#xff0c;必须…...