我之前給別人寫過壹個打地鼠的小遊戲,就是用鼠標操作的。發給妳參考下。代碼很簡單。
主要函數我在下方說明了,但更多信息妳必須自己百度看,壹言兩語說不完。
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;
}