當前位置:編程學習大全網 - 編程語言 - C語言鼠標操作

C語言鼠標操作

我之前給別人寫過壹個打地鼠的小遊戲,就是用鼠標操作的。發給妳參考下。代碼很簡單。

主要函數我在下方說明了,但更多信息妳必須自己百度看,壹言兩語說不完。

SetConsoleCursorPosition函數可以定位光標位置,也就是文字內容顯示的起點。

ReadConsoleInput(HANDLE hConsoleInput,*INPUT_RECORD lpBuffer,DWORD nLength,

DWORD lpNumberOfEventsRead)函數可以獲取鼠標的操作信息。

調用過上面函數後,lpBuffer由於是傳址,所以其地址裏的值就包含了鼠標信息。

lpBuffer.EventType == MOUSE_EVENT //判斷是鼠標事件

lpBuffer.Event.MouseEvent.dwButtonState == FROM_LEFT_1ST_BUTTON_PRESSED//判斷是鼠標左鍵點擊

兩個判斷壹起就是鼠標左鍵點擊的判斷,其他事件參數妳可以自己網上找。

#include?<stdio.h>

#include?<stdlib.h>

#include?<windows.h>

#include?<conio.h>

#include?<time.h>

#include?<string.h>

#include?<malloc.h>

#define?gSizek?30//區域大小寬度

#define?gSizeg?20//區域大小高度

#define?gBegin?3//活動區域起始行

int?main()

{

int?t=0,s0,s1,i,j,count=0,fen=0,row=0,clo=0;

char?gameA[gSizeg][gSizek+1],fSave[10]={0};

SetConsoleTitle("打地鼠");

HANDLE?hInput?=?GetStdHandle(STD_INPUT_HANDLE);?//?獲取標準輸入設備句柄

INPUT_RECORD?inRec;

DWORD?res;

COORD?p0;

p0.X=0;

p0.Y=0;

srand(time(0));

s0=?time(NULL);

strcpy(gameA[0],"GAME");

strcpy(gameA[1],"未命中次數:0,計分:000000");

for(i=gBegin-1;i<gSizeg;i++)

{

for(j=0;j<gSizek+1;j++)

{

if(i>gBegin-1?&&?i<gSizeg-1?&&?j>0?&&?j<gSizek-1)

gameA[i][j]='?';

else

gameA[i][j]=4;

if(j==gSizek)

gameA[i][j]=0;

}

}

for(i=0;i<gSizeg;i++)

printf("%s\n",gameA[i]);

while?(1)

{

if(t>=3)

{

if(row>0?&&?clo>0)

gameA[row][clo]='?';

row=rand()%(gSizeg-1);

clo=rand()%(gSizek-1);

s0=?time(NULL);

SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE),p0);

if(row<3)

row=4;

if(clo<1)

clo=1;

gameA[row][clo]=2;

for(i=0;i<gSizeg;i++)

{

//gameA[i][gSizeg+1]=0;

printf("%s\n",gameA[i]);

}

}

if(count==3)

{

p0.X=10;

p0.Y=8;

SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE),p0);

printf("GAME?OVER!");

break;

}

s1=?time(NULL);

t=s1-s0;

ReadConsoleInput(hInput,?&inRec,?1,?&res);

if?(inRec.EventType?==?MOUSE_EVENT?&&?inRec.Event.MouseEvent.dwButtonState?==?FROM_LEFT_1ST_BUTTON_PRESSED)?//鼠標左鍵

{

if(inRec.Event.MouseEvent.dwMousePosition.X==clo?&&?inRec.Event.MouseEvent.dwMousePosition.Y==row)

{

if(fen==0)

fen=1;

if(fen>999999)

fen=999999;

else

fen=fen*2;

sprintf(fSave,"%06d",fen);

gameA[1][18]=0;

strcat(gameA[1],fSave);

}

else

{

count++;

fen=0;

gameA[1][11]=count+'0';

}

t=4;

}

}

while(1);

return?0;

}

  • 上一篇:六種聲音傳感器價格介紹
  • 下一篇:C程序求解
  • copyright 2024編程學習大全網