C语言游戏必备:光标定位与颜色设置的实现方法_C 语言

喜欢编写游戏的朋友们,你们有福了,这个资料足以让你玩转WINDOWS和Linux下的光标定位以及颜色,enjoy it。

一、WINDOWS:
1.光标定位函数:

复制代码 代码如下:

#include <windows.h>
#include <conio.h>
/****** 光标移到指定位置 ********************************/
void gotoxy(HANDLE hOut, int x, int y)
{
      COORD pos;
      pos.X = x;             //横坐标
      pos.Y = y;            //纵坐标
      SetConsoleCursorPosition(hOut, pos);
}
HANDLE hOut = GetStdHandle(STD_OUTPUT_HANDLE);//定义显示器句柄变量
gotoxy(hOut,20,30);         //光标定位在坐标(20,30)

2.颜色控制:
2.1函数实现

复制代码 代码如下:

/******设置文本为绿色 ********************************************/
void Set_TextColor_Green (void)
{   
      HANDLE Handle = GetStdHandle(STD_OUTPUT_HANDLE);
      SetConsoleTextAttribute(Handle, FOREGROUND_INTENSITY | FOREGROUND_GREEN);
}

2.2 system
system("color 0D");//设置文本为粉红色
注:1.0-15为16种颜色。
         2.0D中0为背景颜色,D为字体颜色。
3.清屏
system("cls");

二、Linux:
在linux/unix的字符界面下,可以利用一些控制符来定位显示位置、控制颜色、清屏等。
printf("\033[47;31mhello world\033[5m");
47是字背景颜色, 31是字体的颜色, hello world是字符串. 后面的\033[5m是控制码.
颜色代码:
QUOTE:
字背景颜色范围: 40--49                 字颜色: 30--39
        40:黑                          30:黑
        41:红                          31:红
        42:绿                          32:绿
        43:黄                          33:黄
        44:蓝                          34:蓝
        45:紫                          35:紫
        46:深绿                        36:深绿
        47:白色                        37:白色
ANSI控制码:
QUOTE:
  \033[0m 关闭所有属性
  \033[1m 设置高亮度
  \03[4m 下划线
  \033[5m 闪烁
  \033[7m 反显
  \033[8m 消隐
  \033[30m  --  \033[37m 设置前景色
  \033[40m  --  \033[47m 设置背景色
  \033[nA 光标上移n行
  \03[nB 光标下移n行
  \033[nC 光标右移n行
  \033[nD 光标左移n行
  \033[y;xH设置光标位置
  \033[2J 清屏
  \033[K 清除从光标到行尾的内容
  \033[s 保存光标位置
  \033[u 恢复光标位置
  \033[?25l 隐藏光标
  \33[?25h 显示光标

时间: 2024-08-29 11:57:57

C语言游戏必备:光标定位与颜色设置的实现方法_C 语言的相关文章

C语言将24小时制转换为12小时制的方法_C 语言

本文实例讲述了C语言将24小时制转换为12小时制的方法.分享给大家供大家参考.具体实现方法如下: /* * 24小时制转换为12小时制 */ #include <stdio.h> int main() { int n, m; printf("Enter a 24-hour time:"); scanf_s("%d:%d",&n,&m); if (n < 0) { printf("Error1!\n"); syst

C语言使用libZPlay录制声音并写到文件的方法_C 语言

本文实例讲述了C语言使用libZPlay录制声音并写到文件的方法.分享给大家供大家参考.具体实现方法如下: /** * Record samples from line-in and save to out.mp3 * */ #define WIN32_LEAN_AND_MEAN #include <windows.h> #include <olectl.h> #include <ole2.h> #include <stdio.h> #include <

C语言实现清空指定文件夹中所有文件的方法_C 语言

本文实例讲述了C语言实现清空指定文件夹中所有文件的方法.分享给大家供大家参考.具体分析如下: 最近笔者在做一个有关计算机视觉的项目,需要对提前的视频帧进行实验,当数据量很大且文件夹中的子文件夹和文件很多时,手工删除这些文件不现实,笔者今天写了一个程序,通过机器自动删除所有相关文件,十分快速,删除时间几乎可以不计. 代码如下,仅供参考. #include "iostream.h" //代码如需调试,只需将改成""即可 #include "string.h&q

深入分析为Visual Assist设置快捷键的方法_C 语言

Visual Assist(以下称VA)是一款非常棒的Visual Studio插件工具,特别是在VS2005中,提供了很多很好用的 辅助功能.如下图的"Create Implementation",就很方便. 但是每次都要点鼠标,是不是太烦呢? 如果能设置一个快捷键就好了.探索了一番, 找到了设置快捷键的方法,分享给大家.方法如下: Visual Studio 的"Tops"→"Customize"选项. (中文版: 工具→定制) 在"

详解C语言求两个数的最大公约数及最小公倍数的方法_C 语言

求两个正整数的最大公约数       思路:这是一个很基本的问题,最常见的就是两种方法,辗转相除法和辗转相减法.通式分别为 f(x, y) = f(y, x%y), f(x, y) = f(y, x - y) (x >=y > 0).根据通式写出算法不难,这里就不给出了.这里给出<编程之美>上的算法,主要是为了减少迭代的次数.      对于x和y,如果y = k * y1, x= k * x1,那么f(x, y) = k * f(x1, y1).另外,如果x = p * x1,假

C语言中将日期和时间以字符串格式输出的方法_C 语言

ctime()函数:头文件: #include <time.h> 定义函数: char *ctime(const time_t *timep); 函数说明:ctime()将参数timep 所指的time_t 结构中的信息转换成真实世界所使用的时间日期表示方法,然后将结果以字符串形态返回.此函数已经由时区转换成当地时间,字符串格式为"Wed Jun 30 21 :49 :08 1993\n". 注意:若再调用相关的时间日期函数,此字符串可能会被破坏. 返回值:返回一字符串表示

排列和组合算法的实现方法_C语言经典案例_C 语言

排列和组合算法是考查递归的常见算法,这两种算法能用递归简洁地实现. 本人在经过多次摸索和思考之后,总结如下,以供参考. 程序代码如下: #include <stdio.h> #include <stdlib.h> char array[] = "abcd"; #define N 4 #define M 3 int queue[N] = {0}; int top = 0; int flag[N] = {0}; void perm(int s, int n) { i

C语言入门的一些基本资源推荐和程序语法概览_C 语言

为什么要学习C语言? 为什么要学习.使用C语言?为什么要学习一个可能比自己都岁数大的编程语言? 选择一门编程语言,"为什么而学"这个目的是最重要的,目的不明确就没法学好.这也是为什么很多学生朋友在大学里必修C语言却觉得没学明白的原因.因为学习的目的不明确,学习当然也没有动力.还有一个原因是C语言是工程实践性很强的语言,它不是来自某个研究所某个大学学院,而是实实在在从项目需要中产生,伴随着Unix的兴起而流行,语义简明清晰,功能强大而不臃肿,简洁而又不过分简单,实在是居家旅行工作学习必备

在C语言编程中设置和获取代码组数的方法_C 语言

C语言setgroups()函数:设置组代码函数头文件: #include <grp.h> 定义函数: int setgroups(size_t size, const gid_t * list); 函数说明:setgroups()用来将list 数组中所标明的组加入到目前进程的组设置中. 参数size 为list()的gid_t 数目, 最大值为NGROUP(32). 返回值:设置成功则返回0, 如有错误则返回-1. 错误代码: EFAULT:参数list 数组地址不合法. EPERM:权限