【杂文】一些好玩的函数

【杂文】一些好玩的函数


之前闲得无聊用 \(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

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值