C语言-设置控制台信息

news2024/11/26 0:41:02

Win_API

Win_API是Windows应用程序接口(Windows Application Programming Interface)的缩写,它是一组函数、系统服务和程序接口,允许开发者在微软Windows操作系统上创建应用程序。Win32 API 是Windows API的一个主要部分,它为Windows应用程序提供了一系列的函数调用,这些函数可以用来执行各种任务,比如创建和管理窗口、处理用户输入、绘制图形、访问文件系统、网络通信等。


Win32 API 是Windows操作系统的一个核心组件,它为C和C++等编程语言提供了丰富的接口,使得开发者能够利用这些接口来控制和管理Windows操作系统的各个方面。通过调用这些API函数,开发者可以轻松地实现与操作系统相关的复杂功能,而无需关心底层操作系统的具体实现细节。


Win32 API 包括了数千个函数,涵盖了从基本的数据类型和宏定义到复杂的窗口管理和用户界面设计的各个方面。这些API函数被组织成不同的库,如Kernel32.dll、User32.dll、Gdi32.dll等,每个库都包含了与特定功能相关的函数。开发者可以在应用程序中动态地加载这些库,并调用相应的API函数来实现所需的功能。


Win32 API 是Windows平台上软件开发的基础,几乎所有的Windows应用程序都会直接或间接地使用Win32 API。因此,对于Windows平台上的软件开发者来说,了解和掌握Win32 API 是非常重要的。

Windows这个多作业系统除了协调应用程序的执行、分配内存、管理资源之外,它同时也是一个很大
的服务中心,调用这个服务中心的各种服务(每一种服务就是一个函数),可以帮应用程序达到开启
视窗、描绘图形、使用周边设备等目的,由于这些函数服务的对象是应用程序(Application),所以便
称之为ApplicationProgrammingInterface,简称API函数。WIN32_API也就是Microsoft Windows
32位平台的应用程序编程接口

编译器界面窗口的设置

这里使用的是vs编译器

首先我们需要改变属性

这里说明一下,不管你是让windows决定,还是windows控制价台主机,这里都是可以的,

只要不是windows终端就可以

因为不同电脑有些让windows决定产生的效果和windows终端的效果是一样的,所以我们可以使用windows控制台主机,我这里选择的就是windows控制台主机

这里和电脑有点关系,不用担心

设置控制台的大小

设置控制台的程序的大小,我们可以使用windows命令,来控制编译器,只需要进行调用就可以

mode con cols=100 lines=30

`mode con cols=100 lines=30` 是一个在DOS和Windows命令提示符(cmd.exe)中使用的命令,用于设置命令行窗口的大小。这个命令的作用是将命令行窗口的宽度和高度分别设置为100列和30行。
- `mode` 是命令行工具,用于配置系统设备的工作模式。
- `con` 指的是控制台(console),也就是命令行窗口。
- `cols=100` 指定命令行窗口的宽度为100个字符。
- `lines=30` 指定命令行窗口的高度为30行。
在Windows操作系统中,你可以通过打开命令提示符(cmd)并输入这个命令来改变窗口的大小。这个命令对于需要更多空间来查看文本输出或者进行文本操作的场合非常有用。

这里我们打开cmd演示一下

可以看到原本的大小

设置之后的大小,为了对比明显,我特地搞得小一点

system 

那么在编译器里面如果调用?并且设置控制台大小
我们只需要使用一个函数

语法格式

在C语言中,system 函数是一个库函数,用于执行宿主系统上的命令。这个函数声明在 stdlib.h 头文件中。它的原型如下:

int system(const char *command);

当你调用 system 函数时,它会将传递给它的字符串作为命令传给命令处理器(在Unix-like系统上是shell,在Windows上是cmd.exe),然后执行这个命令。函数的返回值依赖于具体的实现,但通常情况下,如果命令执行成功,它会返回0;如果执行失败,则会返回一个非零值。

此时我们也就是调用成功并且成功设置控制台大小了

如图

设置控制台的名字

设置控制台的名字也很简单,也一个cmd的使用

title + 名字

在编译器里面进行调用

封装一个控制台的函数

//设置控制台的相关属性
void set_Information()
{
	system("mode con cols=120 lines=35");
	system("title 贪吃蛇");
}

隐藏光标的属性 

目的

在编写贪吃蛇这样的文本模式游戏时,隐藏光标是一个常用的技巧,目的是为了提高用户体验和游戏的视觉表现。隐藏光标的属性目的主要包括以下几点:
1. **改善视觉效果**:

光标在屏幕上闪烁可能会分散玩家的注意力,尤其是在移动快速的贪吃蛇游戏中。隐藏光标可以让玩家更专注于游戏本身,而不是被光标干扰。


2. **避免混淆**:

在文本模式下,光标可能会与游戏中的字符混淆,尤其是当光标与游戏中的蛇或食物的字符颜色相同时。隐藏光标可以避免这种混淆,确保游戏的清晰度。


3. **保持游戏界面的整洁**:

贪吃蛇游戏通常有一个简洁的游戏界面,光标的存在可能会破坏这种简洁性。隐藏光标有助于保持游戏界面的整洁和统一。


4. **技术限制**:

在某些情况下,显示光标可能会影响游戏的刷新速度或响应时间。隐藏光标可以减少这种技术限制的影响,使得游戏运行更加流畅。


在C语言或其他编程语言中,通常会使用特定的系统调用来隐藏光标。例如,在Windows操作系统的命令行界面中,可以使用 `CONSOLE_CURSOR_INFO` 结构和 `GetConsoleCursorInfo` 和 `SetConsoleCursorInfo` 函数来隐藏或显示光标。在Linux或Unix系统中,可以使用终端控制序列来隐藏光标,例如在C语言中可以使用 `printf("\e[?25l")` 来隐藏光标,使用 `printf("\e[?25h")` 来显示光标。
隐藏光标是一个简单的步骤,但它可以提高贪吃蛇这类文本模式游戏的总体质量和玩家的游戏体验。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1660129.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【题解】非对称之美(规律)

https://ac.nowcoder.com/acm/problem/214851 #include <iostream> #include <string> using namespace std; string s; int n; int fun() {// 1. 判断是否全都是相同字符bool flag false;for (int i 1; i < n; i) {if (s[i] ! s[0]){flag true;break;}}if…

【小白的大模型之路】基础篇:Transformer细节

基础篇&#xff1a;Transformer 引言模型基础架构原论文架构图EmbeddingPostional EncodingMulti-Head AttentionLayerNormEncoderDecoder其他 引言 此文作者本身对transformer有一些基础的了解,此处主要用于记录一些关于transformer模型的细节部分用于进一步理解其具体的实现机…

ros 学习记录(二)URDF小车运动控制

URDF小车运动控制 准备工作创建 robot_xacro.launch 接上文&#xff0c;想用键盘控制小车在Gazebo中移动。 准备工作 名称版本ROSNoeticGazebo11.11.0 创建 robot_xacro.launch 通过运行这个launch文件&#xff0c;可以启动Gazebo仿真环境&#xff0c;并在仿真环境中加载和…

使用 Express 框架构建的 Node.js web 应用程序

使用 Express 框架构建的 Node.js web 应用程序 ├── config │ └── config.js ├── middlewares │ └── errorHandler.js ├── routes │ ├── index.js │ ├── postRoutes.js │ └── userRoutes.js ├── .env ├── .gitignore ├── app.js ├…

语言基础 /CC++ 可变参函数设计与实践,必须要指定可变参数的个数?YES

文章目录 概述语法符号 ...变参函数的强制参数没必要指定变参首元素自以为是&#xff0c;找到了不定义变参个数的方法函数 printf 和 vprintf 隐式的指明了变参个数宏函数 va_arg 透析小节 概述 本文重点分析论证了&#xff0c;在可变参函数参数表中指定变参个数的必要性&…

7个VS Code大模型AI插件,编程如虎添翼

大家好&#xff0c;在编程领域&#xff0c;效率和速度是项目成功的核心要素。对于开发者来说&#xff0c;拥有合适的工具可以在复杂的编程任务中游刃有余。 VS Code 插件正是这样一种强大的辅助&#xff0c;能够帮助提升工作效率&#xff0c;让开发者在面对编程挑战时更加从容…

java入门1.1.1版本

前言&#xff1a; 上面的内容是1.0.0~1.1的内容总结 秉持着先做再定义的理念&#xff0c;这里会带着大家先体验一下类与对象 第一步&#xff1a;新建一个java文件 鼠标右键 → 新建 → 文本文档 → 右键 → 点击重名 → 全选 → hello.java 第二步&#xff1a;用笔记本打开 …

自动控制原理学习--平衡小车的控制算法(三)

上一节PID的simulin仿真&#xff0c;这一节用LQR 一、模型 二、LQR LQR属于现代控制理论的一个很重要的点&#xff0c;这里推荐B站的【Advanced控制理论】课程&#xff08;up主DR_CAN&#xff09;&#xff0c;讲得很好&#xff0c;这里引用了他视频里讲LQR的ppt。 LQR属于lo…

rngd: Error writing /dev/tpm0

检查数据库时发现messages中一直有rngd报错&#xff0c;rngd一直未配置&#xff0c;直接关闭了 /var/log/messages-20240414:Apr 11 04:59:49 hydb2 rngd: Error writing /dev/tpm0 /var/log/messages-20240414:Apr 12 07:31:39 hydb2 rngd: Error writing /dev/tpm0 /var/log…

[微信小程序] 入门笔记2-自定义一个显示组件

[微信小程序] 入门笔记2-自定义一个显示组件 0. 准备工程 新建一个工程,删除清空app的内容和其余文件夹.然后自己新建pages和components创建1个空组件和1个空页面. 设定 view 组件的默认样式,使其自动居中靠上,符合习惯.在app.wxss内定义,作用做个工程. /**app.wxss**/ /* 所…

Screeps工程化之配置化

目录 前言一、抽取配置项二、读取配置项 前言 Screeps中所有代码都会在一个tick&#xff08;游戏内的世间&#xff09;内执行完成&#xff0c;想要做到代码的高度复用&#xff0c;和隔离各个房间creep的行为就需要将部分代码进行配置化&#xff0c;本文仅为作者本人的游戏思路…

一文读懂开源大数据OLAP

企业需要从海量数据中提取有价值的信息&#xff0c;以支持决策制定和提高运营效率&#xff0c;数据已成为企业最宝贵的资产之一。OLAP&#xff08;在线分析处理&#xff09;技术&#xff0c;作为数据仓库解决方案的核心组成部分&#xff0c;提供了一种强大的工具&#xff0c;帮…

python爬虫入门(所有演示代码,均有逐行分析!)

爬虫的初学者们&#xff0c;只看这一篇就够了&#xff0c;看到就是赚到&#xff01; 目录 1.爬虫简介 2.版本及库的要求 3.爬虫的框架 4.HTML简介 5.爬虫库及演示 &#xff08;1&#xff09;requests库&#xff08;网页下载器&#xff09; &#xff08;2&#xff09;Beau…

Verilog复习(三)| Verilog语言基础

四种基本的逻辑值 0&#xff1a;逻辑0或“假”1&#xff1a;逻辑1或“真”x&#xff1a;未知z&#xff1a;高阻 三类常量 整型数&#xff1a;简单的十进制格式&#xff0c;基数格式&#xff08;5’O37&#xff0c;4’B1x_01&#xff09; 格式&#xff1a; <size><’b…

AI中转站计费平台系统源码一站式解决方案安装说明

AI中转站计费平台系统源码一站式解决方案安装说明 功能 | Features AI 联网功能 AI online searching service 多账户均衡负载 Multi-account load balancing HTTP2 Stream 实时响应功能 HTTP2 Stream real-time response function 节流和鉴权体系 Throttling and authenticati…

PCB打标机3段翻板和2段翻板的区别

随着电子技术的发展&#xff0c;电子产品的更新换代速度越来越快&#xff0c;对PCB打标机的需求也越来越大。PCB打标机是一种用于在PCB板上刻划文字、图案、条形码等信息的设备&#xff0c;广泛应用于FPC、LED灯、电源板等领域。其中&#xff0c;3段翻板和2段翻板是两种常见的P…

DBCHM 数据库 CHM 文档生成工具

介绍 DBCHM 是一款数据库文档生成工具&#xff01; 该工具从最初支持chm文档格式开始&#xff0c;通过开源&#xff0c;集思广益&#xff0c;不断改进&#xff0c;又陆续支持word、excel、pdf、html、xml、markdown等文档格式的导出。 支持的数据库 SqlServerMySQLOraclePos…

Java入门基础学习笔记2——JDK的选择下载安装

搭建Java的开发环境&#xff1a; Java的产品叫JDK&#xff08;Java Development Kit&#xff1a; Java开发者工具包&#xff09;&#xff0c;必须安装JDK才能使用Java。 JDK的发展史&#xff1a; LTS&#xff1a;Long-term Support&#xff1a;长期支持版。指的Java会对这些版…

3. 多层感知机算法和异或门的 Python 实现

前面介绍过感知机算法和一些简单的 Python 实践&#xff0c;这些都是单层实现&#xff0c;感知机还可以通过叠加层来构建多层感知机。 2. 感知机算法和简单 Python 实现-CSDN博客 1. 多层感知机介绍 单层感知机只能表示线性空间&#xff0c;多层感知机就可以表示非线性空间。…

TCP是如何实现可靠传输的 UDP面向报文 TCP面向字节流是什么意思 TCP和UDP分别适用于什么场合

UDP是用户数据报协议&#xff0c;它是一种无连接的传输层协议&#xff0c;它面向报文&#xff0c;也就是说&#xff0c;UDP对应用层交下来的报文&#xff0c;在添加UDP头之后直接发送出去&#xff0c;不会对数据进行拆分和合并。因此&#xff0c;UDP传输的数据单位是报文&#…