【㵘】如何用c++打小恐龙

· · 个人记录

关于这个问题嘛……

思路

先给链接给没玩过的人(应该OIer都玩过吧

小恐龙链接:chrome://dino (请打开Chrome浏览器导航栏输入)

这是一款像素游戏,所以我们自然能想到用屏幕RGB值获取当前小恐龙离障碍物多远;

说人话,我们不停地获取小恐龙前方一点处的颜色,若那个颜色==障碍物的颜色就让它跳一下。

具体怎么获取屏幕前一点颜色,怎么操作键盘,感兴趣的可以自己去查,我这里就不详细介绍

废话不多说,直接上源码


#include <Windows.h>
#include<cstdio>
#pragma comment (lib, "User32.lib")
//如果屏幕前的你用的是devc++等请编译时手动加入" -lgdi32 "命令,不然会报错(听说vc++不用)
int r,g,b;
int main(void){
    Sleep(5000);
    freopen("log.qaq","w",stdout);
    for(int i=1;i<=600;i++){
        HWND hWnd = ::GetDesktopWindow();
        HDC hdc = ::GetDC(hWnd);
        // HDC hdc = ::GetDC(NULL);
        int x=353,y=443;//353 443,这是定下的点获取屏幕RGB,请将Chrome全屏或按自己需求调
        COLORREF pixel=::GetPixel(hdc,x,y);
        if (pixel != CLR_INVALID) {
            int red = GetRValue(pixel);
            int green = GetGValue(pixel);
            int blue = GetBValue(pixel);
            r=red;
            g=green;
            b=blue;
            printf("R=%d G=%d B=%d\n",red,green,blue);
        } else {
        printf("outside");
        }
        if(r==83&&b==83&&g==83){
            keybd_event(32,0,0,0);
            keybd_event(32,0,KEYEVENTF_KEYUP,0);
        }
        Sleep(20);
    }
    //system("PAUSE");
    return 0;
}```