十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
我之前给别人写过一个打地鼠的小游戏,就是用鼠标操作的。发给你参考下。代码很简单。
创新互联公司2013年开创至今,是专业互联网技术服务公司,拥有项目网站设计制作、做网站网站策划,项目实施与项目整合能力。我们以让每一个梦想脱颖而出为使命,1280元莱州做网站,已为上家服务,为莱州各地企业和个人服务,联系电话:18982081108
主要函数我在下方说明了,但更多信息你必须自己百度看,一言两语说不完。
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;igSizeg;i++)
{
for(j=0;jgSizek+1;j++)
{
if(igBegin-1 igSizeg-1 j0 jgSizek-1)
gameA[i][j]=' ';
else
gameA[i][j]=4;
if(j==gSizek)
gameA[i][j]=0;
}
}
for(i=0;igSizeg;i++)
printf("%s\n",gameA[i]);
while (1)
{
if(t=3)
{
if(row0 clo0)
gameA[row][clo]=' ';
row=rand()%(gSizeg-1);
clo=rand()%(gSizek-1);
s0= time(NULL);
SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE),p0);
if(row3)
row=4;
if(clo1)
clo=1;
gameA[row][clo]=2;
for(i=0;igSizeg;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(fen999999)
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;
}
#include Windows.h
#include stdio.h
#include process.h
VOID MyPlaySound(LPVOID lp)
{
unsigned FREQUENCY[]={392,392,440,392,523,494,
392,392,440,392,587,523,
392,392,784,659,523,494,440,
698,698,659,523,587,523,
392,392,440,392,523,494,
392,392,440,392,587,523,
392,392,784,659,523,494,440,
698,698,659,523,587,523};
unsigned DELAY[]={375,125,500,500,500,1000,
375,125,500,500,500,1000,
375,125,500,500,500,500,1000,
375,125,500,500,500,1000,
375,125,500,500,500,1000,
375,125,500,500,500,1000,
375,125,500,500,500,500,1000,
375,125,500,500,500,1000};
int CIRCLE;
for(CIRCLE=0;CIRCLE50;CIRCLE++)
{
Beep(FREQUENCY[CIRCLE],DELAY[CIRCLE]);
}
}
VOID MyPrint(LPVOID lp)
{
int i;
char a[10][4]=;
for(i=0;i10;i++)
{
printf("%s",a[i]);
Sleep(500);
}
}
int main()
{
_beginthread(MyPlaySound, 0, NULL);
_beginthread(MyPrint, 0, NULL);
Sleep(20000);
return 0;
}
编译之前记得把项目属性里改成多线程方案的.不然会出错.我是在VS2010下编译的.
control+F:在同一行上将光标向右移动
control+B:在同一行上将光标向左移动
control+P:将光标移动到前一行
control+N:将光标移动到后一行
control+A:将光标移动到本行的行首
control+N:将光标移动到本行的行尾
control+T:将光标两边的字符对调
control+D:删除光标右边的字符
control+k:删除光标所在行光标后面的代码,便于你重写行尾代码
control+L:将光标插点置于窗口正中。
CROOD就是这样的一个玩意:
typedef struct _COORD {
SHORT X;
SHORT Y;
} COORD, *PCOORD;
很明显这个结构可以用来记录坐标
GetStdHandle()函数获得标准输入输出的句柄,参数STD_OUTPUT_HANDLE是个宏,代表标准输出,可以看作显示器
SetConsoleCursorPosition(hout,coord); 看函数名称:设置控制台光标坐标,参数就是设备句柄,坐标,那么把标准输出的句柄传给函数,就可以把光标定位在对应的位置了(左上角位置是0,0然后向左 向下延伸)
下面这段代码可以在屏幕第10行第30列输出"Hello world"
#include windows.h
#include iostream
using namespace std;
int main()
{
HANDLE hout;
COORD coord;
coord.X=30;
coord.Y=10;
hout=GetStdHandle(STD_OUTPUT_HANDLE);
SetConsoleCursorPosition(hout,coord);
cout"Hello world!\n";
return 0;
}
函数名:gotoxy
原型:extern void gotoxy(int x, int y);
用法:#include system.h
功能:将光标移动来到指定自位置
说明:gotoxy(x,y)将光标移动到指定行y和列x。设置光标到文本屏幕的指定位置,其知中参数x,y为文本屏幕的坐标,gotoxy(0,0)将光标移动到屏幕左上角。
扩展资料:
用法举例
#include conio.h
int main(void)
{ /*gotoxy()的用法*/
//clrscr(); //清除文本模式的窗口
gotoxy(2,1);//在文本窗口中设置光标用(列,行)
cprintf("Hello world");//送格式化输出至屏幕
getch();
return 0;
}
参考资料来源:百度百科-gotoxy