【模板整合计划】一些好玩的函数

【模板整合计划】一些好玩的函数



之前闲得无聊用 \(C++\) 写了几个小游戏,在这期间学了一些 \(windows.h\) 里的函数。。。
(以下函数若无特殊说明均需要使用函数库 <\(windows.h\)> 或者万能头 <\(bits\)/\(stdc\)++\(.h\)>)

【 clock ( ) , CLOCKS _ PER _ SEC 】

头文件: <\(ctime\)>

功能: \(clock()\) 是计算从 \(“\) 开启这个程序 \(”\) 到 \(“\) 调用\(clock()\) 函数 \(”\) 时之间的 \(CPU\) 时钟计时单元(\(clock tick\))数,而 \(CLOCKS\) _ \(PER\) _ \(SEC\) 是一个常量,表示一秒钟内 \(CPU\) 运行的时钟周期数。换句话说,如果用前者除以后者就可以得到程序运行时间。
(节选自百度百科

inline void print_time(){
    //注意要用double
    printf("time:%lf\n",(double)clock()/(double)CLOCKS_PER_SEC);
}

【 system(部分)】

节选自百度百科

头文件: <\(cstdlib\)>

\((1)\) \(“shutdown”\)
功能: 关机,重启,注销,休眠。

说明:
指令/代码 效果/含义
\(shutdown\) \(-s\) 关机
\(shutdown\) \(-f\) 强行关闭应用程序
\(shutdown\) \(-l\) 注销当前用户
\(shutdown\) \(-r\) 关机并重启*
\(shutdown\) \(-s\) \(-t\) 时间 设置关机倒计时
\(shutdown\) \(-h\) 休眠

我曾在机房内网聊天软件里发了一张玩贪吃蛇界面的截图,然后将下面这行代码伪装成一个假的贪吃蛇上传了上去,不明真相的好奇宝宝们纷纷点开了它...然后...我被锤了...

//效果/含义:强制关闭应用程序并在0秒后关机
inline void turn_off(){
    system("shutdown -s -f -t 0");
}

\((2)\) \(“pause”\)

功能: 暂停程序并在当前光标处输出\(“\)按任意键以继续\(”\)

system("pause");

\((3)\) \(“cls”\)

功能: 清空 \(cmd\) 窗口里的内容。

system("cls");

\((4)\) \(“color\) ## \(”\)

功能: 改变窗口内前景,背景颜色。具体由两个 \(16\) 进制数决定,第一个参数应用于背景,第二个应用于前景。

参数含义:
\(16\) 进制数 效果/含义 \(16\) 进制数 效果/含义
0 黑色 8 灰色
1 蓝色 9 淡蓝色
2 绿色 A 淡绿色
3 浅绿色 B 淡浅绿色
4 红色 C 淡红色
5 紫色 D 淡紫色
6 黄色 E 淡黄色
7 白色 F 亮白色
//效果/含义:将窗口设为白色背景黑色字体
system("color 70");

在写小游戏时,这些都是关键\((QAQ)\)

【 SetCursorPos ( x , y ) 】

头文件: <\(window.h\)>

功能: 将鼠标指针移至指定位置,若移动成功,则返回 \(1\),否则返回 \(0\)。

想象一下,若用一个 \(while(1)\) 配合 \(rand()\) 来随机移动会是一幅怎样的情形?可以尝试一下。

//效果/含义:随机移动鼠标光标约3秒
srand((int)time(NULL));//关联时间随机函数发射 Biu! Biu! Biu!
inline void move_mouse(){
    int sec=0;
    while(sec<3*200){//定一下时,免得玩得太过停不下来
        SetCursorPos(rand()%1024,rand()%768);//电脑一般只有这么多像素点,也可以自己改模数
        Sleep(1);
        sec++;
    }
}

【 GetAsyncKeyState ( key ) 】

头文件: <\(window.h\)>

功能: 判断指定虚拟键状态,如果指定键被按下,则返回 \(1\),否则返回 \(0\)。

这个就很有意思了,在我写的小游戏中,用这个来移动小人,物体等等。

//效果/含义:如果按下了“上”这个按键,程序暂停2秒并输出“FBI WARNING!”
if(GetAsyncKeyState(VK_UP)){//获取虚拟键使用情况
    printf("FBI WARNING!\n");
    Sleep(2000);
}

事实上把代码中的 \(VK\)_\(UP\) 换成它的对应值 \(38\)也是可行的。
查找按键的虚拟键码和对应值
资源: 虚拟键码表

【 SetConsoleCursorPosition 】

头文件: <\(window.h\)>

功能: 这是一个 \(windows\) \(API\)函数,可以将界面里的光标移至指定位置。注意在 \(cmd\) 窗口里是以左上角定点建立的坐标系,\(x\) 横向向右递增,\(y\) 竖向向下递增。

void gotoxy(int x,int y){
    COORD pos;//这里的pos是一个结构体
    pos.X=x;//横坐标
    pos.Y=y;//纵坐标
    SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE),pos);//移动光标
}

【 cin/cout 加速 】

功能: 众所周知,\(cin/cout\) 跑得非常慢,肯定很多人都被这玩意儿坑过,实际上它是可以用一行代码加速的。

原理: 禁止使用输入输出缓存。

ios::sync_with_stdio(false);

原文地址:https://www.cnblogs.com/Xing-Ling/p/10929936.html

时间: 2024-08-01 15:54:52

【模板整合计划】一些好玩的函数的相关文章

泛型编程与C++标准模板库 : 浅谈sort()排序函数

以前用sort排序的时候,只知道sort函数有如下两种重载方式. template< class RandomIt > void sort( RandomIt first, RandomIt last ); template< class RandomIt, class Compare > void sort( RandomIt first, RandomIt last, Compare comp ); 当时对这些参数也不是很懂,只知道一些简单的用法. 1).比如: 如下代码可以使

在c++ 模板类外写 操作符重载函数,并且是模板类的友元函数

看视频教程说不能在c++ 模板类外写 操作符重载函数,并且是模板类的友元函数 我试了试,可以,放出测试代码: #include <iostream> using namespace std; template<typename T> class A { public: A(T a) { this->a = a; } template<typename T> //加上这句就可以了 friend A<T> operator+(A<T> &

编译器对C++ 11变参模板(Variadic Template)的函数包扩展实现的差异

编译器对C++ 11变参模板(Variadic Template)的函数包扩展实现的差异 题目挺绕口的.C++ 11的好东西不算太多,但变参模板(Variadic Template)肯定是其中耀眼的一颗明星,在C++设计新思维中,你可以看到很多模版的代码为了支持不确定的参数个数,而要重载1个参数到N个模板参数的N个函数.虽然种代码一般也是用会用宏和脚步辅助生成.但我想也没有人愿意看到几千行这种单调的函数.通过这个东东,模板的威力可以爆发. 目前的最新的编译器基本都已经支持Variadic Tem

网站模板开发者计划

互联网既是一个资讯平台,更是一个无限潜力的市场.大家都喜欢在互联网上浏览内容.查看资料,但是有没有想过自己能够在这个平台上发展自己?利用互联网来得到收益?对于没有一技之长.没有任何专业.但是热衷于网络的你,现在有那么一个机会.没错就是全民模板开发者计划.什么是全民模板开发者计划?全民开发者计划有什么优势?怎么样加全民开发者计划? 全民开发者计划是什么? 全民开发者计划,意义就在于让所有人参与到建站宝盒项目的建设中,共同构建宝盒生态圈.利用开发者与需求者之间的互动,弥补开发力量的供不应求,利用全民

Yii框架学习笔记(二)将html前端模板整合到框架中

选择Yii 2.0版本框架的7个理由 http://blog.chedushi.com/archives/8988 刚接触Yii谈一下对Yii框架的看法和感受 http://bbs.csdn.net/topics/390807796 更多内容 百度:yii 前端 http://my.oschina.net/u/1472492/blog/221085 摘要 Yii框架学习笔记(二)将html前端模板整合到框架中 原文地址:http://www.ldsun.com/1309.html 上一节成功将Y

思维导图,流程图模板整合

思维导图与流程图在工作中都是经常使用的,出现频率较高的,有些不会绘制的或者是刚接触这一类的图表形式的都会选择使用模板来完成工作,但是很多朋友却不知道模板在×××,今天要给大家分享的是几款孩子走精美的思维导图,流程图模板整合,需要使用的朋友可以自取进行使用. **模板所在地:迅捷画图 流程图: 1.电商运营流程图 这是一份关于电商运营的流程图,详细的介绍了新用户.老用户未付款状态下的解决方法. 2.<电商物流仓储流程图> 这是一份关于电商物流仓储流程图,详细的概述了电商物流仓储的流程,提高了工作

【史前巨坑】数论模板整合

跪了一下午数论 整理了一下数论模板 这是个史前巨坑,有空慢慢填 #include<iostream> #include<cstdio> #include<cstring> #include<cmath> #include<algorithm> #define MAXN 1000000 using namespace std; bool not_prime[MAXN]; int prime_number[MAXN]; int nu; int fac

如何在 ejs 模板中使用 helper function 外部函数进行特殊处理?

一般我们想要在 ejs 模板中使用外部函数用于特殊的处理,比如:<%= ellipsis(title, 30) %> 通常的做法是: 使用 app.locals 来定义: app.locals.ellipsis = function(str, len) { return str; } // 使用 <%= ellipsis(title, 20) %> 使用 ejs.filters 来定义,详细用法: var ejs = require('ejs'); ejs.filters.elli

SpringBoot2 整合 JSP视图模板 整合 Ueditor富文本编辑器

一般涉及到后台管理系统,就少不了富文本编辑器,这个可以图文视频混排高级工具,笔者通过对比,发现目前市场上最好的三方库还当属百度的 ueditor 近年来 SpringBoot 框架可谓越来越火,可是笔者发现 ueditor 只提供了对于 JSP 的版本,网上能找到很多继承的案列,但是大部分都是修改源码,或者 自己去实现上传文件的接口这使得一些功能不能被使用或者需要花大量的事件去实现上传文件的方法,通过权衡,还是 springboot + jsp + ueditor 的方式最简单 虽然 jsp 不