• jQuery火箭图标返回顶部代码


    代码:

      1 #include<Windows.h>
      2 #include<d3d9.h>
      3 #include<d3dx9.h>
      4 #include<Xinput.h>
      5 #include<time.h>
      6 #include<iostream>
      7 using namespace std;
      8 #pragma comment(lib,"d3d9.lib")
      9 #pragma comment(lib,"d3dx9.lib")
     10 #pragma comment(lib,"xinput.lib")
     11 const string APPTITLE = "XInput Test Program";
     12 const int SCREENW = 1024;
     13 const int SCREENH = 768;
     14 LPDIRECT3D9 d3d = NULL;
     15 LPDIRECT3DDEVICE9 d3ddev = NULL;
     16 bool gameover = false;
     17 #define KEY_DOWN(vk_code) ((GetAsyncKeyState(vk_code) & 0x8000) ? 1 : 0)
     18 
     19 bool XInput_Init(int contNum = 0)
     20 {
     21     XINPUT_CAPABILITIES caps;
     22     ZeroMemory(&caps, sizeof(XINPUT_CAPABILITIES));
     23     XInputGetCapabilities(contNum, XINPUT_FLAG_GAMEPAD, &caps);
     24     if (caps.Type != XINPUT_DEVTYPE_GAMEPAD)
     25         return FALSE;
     26     return TRUE;
     27 }
     28 
     29 void XInput_Vibrate(int contNum = 0, int left = 65535, int right = 65535)
     30 {
     31     XINPUT_VIBRATION vibration;
     32     ZeroMemory(&vibration, sizeof(XINPUT_VIBRATION));
     33     vibration.wLeftMotorSpeed = left;
     34     vibration.wRightMotorSpeed = right;
     35     XInputSetState(contNum, &vibration);
     36 }
     37 
     38 void XInput_Update()
     39 {
     40     XINPUT_STATE state;
     41     string message = "";
     42     for (int i = 0; i < 4; i++)
     43     {
     44         ZeroMemory(&state, sizeof(XINPUT_STATE));
     45         message = "";
     46         DWORD result = XInputGetState(1, &state);
     47         if (result == 0)
     48         {
     49             if (state.Gamepad.bLeftTrigger)
     50                 message = "Left Trigger";
     51             else if (state.Gamepad.bRightTrigger)
     52                 message = "Right Trigger";
     53             else if (state.Gamepad.sThumbLX < -10000 || state.Gamepad.sThumbLX>10000)
     54                 message = "Left Thumb Stick";
     55             else if (state.Gamepad.sThumbRX < -10000 || state.Gamepad.sThumbRX>10000)
     56                 message = "Right Thumb Stick";
     57             else if (state.Gamepad.wButtons&XINPUT_GAMEPAD_DPAD_UP)
     58                 message = "DPAD Up";
     59             else if (state.Gamepad.wButtons&XINPUT_GAMEPAD_DPAD_DOWN)
     60                 message = "DPAD Down";
     61             else if (state.Gamepad.wButtons&XINPUT_GAMEPAD_DPAD_LEFT)
     62                 message = "DPAD Left";
     63             else if (state.Gamepad.wButtons&XINPUT_GAMEPAD_DPAD_RIGHT)
     64                 message = "DPAD Right";
     65             else if (state.Gamepad.wButtons&XINPUT_GAMEPAD_START)
     66                 message = "Start Button";
     67             else if (state.Gamepad.wButtons&XINPUT_GAMEPAD_LEFT_THUMB)
     68                 message = "Left Thumb";
     69             else if (state.Gamepad.wButtons&XINPUT_GAMEPAD_RIGHT_THUMB)
     70                 message = "Right Thumb";
     71             else if (state.Gamepad.wButtons&XINPUT_GAMEPAD_LEFT_SHOULDER)
     72                 message = "Left Shoulder";
     73             else if (state.Gamepad.wButtons&XINPUT_GAMEPAD_RIGHT_SHOULDER)
     74                 message = "Right Shoulder";
     75             else if (state.Gamepad.wButtons&XINPUT_GAMEPAD_A)
     76             {
     77                 XInput_Vibrate(0, 65535, 65535);
     78                 message = "A Button";
     79             }
     80             else if (state.Gamepad.wButtons&XINPUT_GAMEPAD_B)
     81             {
     82                 XInput_Vibrate(0, 0, 0);
     83                 message = "B Button";
     84             }
     85             else if (state.Gamepad.wButtons&XINPUT_GAMEPAD_X)
     86                 message = "X Button";
     87             else if (state.Gamepad.wButtons&XINPUT_GAMEPAD_Y)
     88                 message = "X Button";
     89             else if (state.Gamepad.wButtons&XINPUT_GAMEPAD_BACK)
     90                 gameover = true;
     91             if (message.length() > 0)
     92                 MessageBox(0, message.c_str(), "Controler", 0);
     93         }
     94         else {
     95 
     96         }
     97     }
     98 }
     99 
    100 bool Game_Init(HWND hwnd)
    101 {
    102     d3d = Direct3DCreate9(D3D_SDK_VERSION);
    103     if (d3d == NULL)
    104     {
    105         MessageBox(hwnd, "Error initializing Direct3D", "ERROR", MB_OK);
    106         return FALSE;
    107     }
    108     D3DPRESENT_PARAMETERS d3dpp;
    109     ZeroMemory(&d3dpp, sizeof(d3dpp));
    110     d3dpp.Windowed = TRUE;
    111     d3dpp.SwapEffect = D3DSWAPEFFECT_DISCARD;
    112     d3dpp.BackBufferFormat = D3DFMT_X8R8G8B8;
    113     d3dpp.BackBufferCount = 1;
    114     d3dpp.BackBufferWidth = SCREENW;
    115     d3dpp.BackBufferHeight = SCREENH;
    116     d3dpp.hDeviceWindow = hwnd;
    117     d3d->CreateDevice(D3DADAPTER_DEFAULT, D3DDEVTYPE_HAL, hwnd, D3DCREATE_SOFTWARE_VERTEXPROCESSING, &d3dpp, &d3ddev);
    118     if (d3ddev == NULL)
    119     {
    120         MessageBox(hwnd, "Error creating Direct3D device", "Error", MB_OK);
    121         return FALSE;
    122     }
    123     if (!d3ddev)
    124     {
    125         MessageBox(hwnd, "Error creating Direct3D device", "ERROR", MB_OK);
    126         return FALSE;
    127     }
    128     XInput_Init();
    129     return TRUE;
    130 }
    131 
    132 void Game_Run(HWND hwnd)
    133 {
    134     if (!d3ddev)
    135         return;
    136     d3ddev->Clear(0, NULL, D3DCLEAR_TARGET, D3DCOLOR_XRGB(0, 0, 150), 1.0f, 0);
    137     if (d3ddev->BeginScene())
    138     {
    139         d3ddev->EndScene();
    140         d3ddev->Present(NULL, NULL, NULL, NULL);
    141     }
    142     if (KEY_DOWN(VK_ESCAPE))
    143         PostMessage(hwnd, WM_DESTROY, 0, 0);
    144     XInput_Update();
    145 }
    146 
    147 void Game_End(HWND hwnd)
    148 {
    149     if (d3ddev) d3ddev->Release();
    150     if (d3d) d3d->Release();
    151 }
    152 
    153 LRESULT WINAPI WinProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam)
    154 {
    155     switch (msg)
    156     {
    157     case WM_DESTROY:
    158         gameover = true;
    159         break;
    160     }
    161     return DefWindowProc(hWnd, msg, wParam, lParam);
    162 }
    163 
    164 int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow)
    165 {
    166     WNDCLASSEX wc;
    167     MSG msg;
    168     wc.cbSize = sizeof(WNDCLASSEX);
    169     wc.lpfnWndProc = (WNDPROC)WinProc;
    170     wc.style = 0;
    171     wc.cbClsExtra = 0;
    172     wc.cbWndExtra = 0;
    173     wc.hIcon = NULL;
    174     wc.hIconSm = NULL;
    175     wc.hInstance = hInstance;
    176     wc.lpszMenuName = NULL;
    177     wc.hCursor = LoadCursor(NULL, IDC_ARROW);
    178     wc.hbrBackground = (HBRUSH)GetStockObject(WHITE_BRUSH);
    179     wc.lpszClassName = "MainWindowClass";
    180     if (!RegisterClassEx(&wc))
    181         return FALSE;
    182     HWND hwnd = CreateWindow("MainWindowClass", APPTITLE.c_str(), WS_OVERLAPPEDWINDOW, CW_USEDEFAULT, CW_USEDEFAULT, SCREENW, SCREENH, (HWND)NULL, (HMENU)NULL,
    183         hInstance, (LPVOID)NULL);
    184     if (hwnd == 0)
    185         return 0;
    186     ShowWindow(hwnd, nCmdShow);
    187     UpdateWindow(hwnd);
    188     if (!Game_Init(hwnd))
    189         return 0;
    190     while (!gameover)
    191     {
    192         if (PeekMessage(&msg, NULL, 0, 0, PM_REMOVE))
    193         {
    194             TranslateMessage(&msg);
    195             DispatchMessage(&msg);
    196         }
    197         Game_Run(hwnd);
    198     }
    199     Game_End(hwnd);
    200     return msg.wParam;
    201 }

    结果(运行后按下手柄的键位会在红框框中出现相应的提示,博主穷所以就没买手柄,哈哈):

  • 相关阅读:
    SQL Server 数据库定时自动备份
    SQL SERVER 2012设置自动备份数据库
    SyncNavigator 数据库同步软件怎么用?
    SyncNavigator下载|SyncNavigator数据库同步软件 v8.4.1
    关于数据同步的几种实现
    课堂练习-找水王:
    软件工程第十四周总结
    Alpha版(内部测试版)发布
    软件工程第十三周总结
    意见评论汇总
  • 原文地址:https://www.cnblogs.com/Trojan00/p/9550735.html
Copyright © 2020-2023  润新知