• 【杂文】一些好玩的函数


    【杂文】一些好玩的函数


    之前闲得无聊用 (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
    ",(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!
    ");
        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);
    
  • 相关阅读:
    Oracle跟踪生成及Tkprof分析性能实战(附实战Demo)系列一
    sqlserver查看锁及解锁
    ETL利器Kettle实战应用解析系列二 【应用场景和实战DEMO下载】
    利用反射从程序集dll中动态调用方法(附demo下载)
    ETL利器Kettle实战应用解析系列三 【ETL后台进程执行配置方式】
    分享一款Web压力测试工具Pylot
    stark组件前戏之以上知识点整合应用示例
    rbac组件权限分配
    rbac组件权限分配之权限批量操作
    stark组件开发之自动生成URL
  • 原文地址:https://www.cnblogs.com/Xing-Ling/p/10929936.html
Copyright © 2020-2023  润新知