//****************************//
//CQU 2010级 计算机 信安2 GCM //
// 功能简单,可在此基础上完善 //
//****************************//
#include <windows.h>
#include <time.h>
#include <mmsystem.h>
LRESULT CALLBACK WndProc (HWND, UINT, WPARAM, LPARAM) ;
int WINAPI WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance,
PSTR szCmdLine, int iCmdShow)
{
static TCHAR szAppName[] = TEXT ("MoleAttack") ;
HWND hwnd ;
MSG msg ;
WNDCLASS wndclass ;
wndclass.style = CS_HREDRAW | CS_VREDRAW;
wndclass.lpfnWndProc = WndProc ;
wndclass.cbClsExtra = 0 ;
wndclass.cbWndExtra = 0 ;
wndclass.hInstance = hInstance ;
wndclass.hIcon = LoadIcon (hInstance, MAKEINTRESOURCE(155)) ;
wndclass.hCursor = LoadCursor (hInstance, MAKEINTRESOURCE(140)) ;
wndclass.hbrBackground = (HBRUSH) GetStockObject (WHITE_BRUSH);
wndclass.lpszMenuName = NULL ;
wndclass.lpszClassName = szAppName ;
if (!RegisterClass (&wndclass))
{
MessageBox (NULL, TEXT ("This program requires Windows NT!"),
szAppName, MB_ICONERROR) ;
return 0 ;
}
hwnd = CreateWindow (szAppName, // window class name
TEXT ("MoleAttack"), // window caption
WS_OVERLAPPEDWINDOW, // window style
CW_USEDEFAULT, // initial x position
CW_USEDEFAULT, // initial y position
1069, // initial x size
801, // initial y size设置为背景图片大小
NULL, // parent window handle
NULL, // window menu handle
hInstance, // program instance handle
NULL) ; // creation parameters
ShowWindow (hwnd, iCmdShow) ;
UpdateWindow (hwnd) ;
while (GetMessage (&msg, NULL, 0, 0))
{
TranslateMessage (&msg) ;
DispatchMessage (&msg) ;
}
return msg.wParam ;
}
int judgeHit(int x,int y){
int result=0;
if(x>=140&&x<=312&&y>=355&&y<=572)
result=1;
if(x>=430&&x<=602&&y>=365&&y<=582)
result=2;
if(x>=713&&x<=885&&y>=367&&y<=584)
result=3;
if(x>=80&&x<=252&&y>=170&&y<=387)
result=4;
if(x>=300&&x<472&&y>=165&&y<=382)
result=5;
if(x>=500&&x<=672&&y>=168&&y<=385)
result=6;
if(x>=710&&x<=882&&y>=161&&y<=378)
result=7;
if(x>=88&&x<=188&&y>=53&&y<=179)
result=8;
if(x>=260&&x<=360&&y>=49&&y<=175)
result=9;
if(x>=445&&x<=545&&y>=62&&y<=188)
result=10;
if(x>=625&&x<=725&&y>=55&&y<=181)
result=11;
if(x>=808&&x<=908&&y>=54&&y<=180)
result=12;
return result;
}
LRESULT CALLBACK WndProc (HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
{
HDC hdc ;
PAINTSTRUCT ps ;
RECT rect ;
static HBITMAP hbmp,hgameOver;
static HBITMAP hmole1,hmole2,hmole1Mask,hmole2Mask,hmole1_1,hmole1_1Mask,hmole2_1,hmole2_1Mask;//老鼠图片
BITMAP bmp,mole,mole_1;
HDC hdcMem,hdcMemMask;
int cxMole,cyMole,cxMole_1,cyMole_1;
static HCURSOR hcursor,hcursor2;
static HINSTANCE hInstance;
static POINT pt; //鼠标位置
static int k=0;//随机数
static int hit=0;//击中哪只老鼠
static int moleShow=0;//判断哪只老鼠出现
static int status=0;//打击状态,击中为“good”
static int missNum=0;//miss数
static int hitNum=0;//击中数
static int showTimes=0;//老鼠出现次数
static int score=0;//分数,即为击中数
static int level=1;//级别数
static BOOLEAN levelUp=false;//是否升级
TCHAR szBuffer[10];
static HPEN hPen;
static HBRUSH hBrush;
switch (message)
{
case WM_CREATE:
hdc=GetDC(hwnd);
hInstance=((LPCREATESTRUCT)lParam)->hInstance;
PlaySound("E:\\VS2010\\MoleAttack\\MoleAttack\\MoleAttack\\Debug\\mainmusic.wav",NULL,SND_FILENAME|SND_ASYNC|SND_LOOP);
hbmp=LoadBitmap(hInstance,MAKEINTRESOURCE(100));
hmole1=LoadBitmap(hInstance,MAKEINTRESOURCE(101));
hmole2=LoadBitmap(hInstance,MAKEINTRESOURCE(102));
hmole1Mask=LoadBitmap(hInstance,MAKEINTRESOURCE(103));
hmole2Mask=LoadBitmap(hInstance,MAKEINTRESOURCE(104));
hmole1_1=LoadBitmap(hInstance,MAKEINTRESOURCE(105));
hmole1_1Mask=LoadBitmap(hInstance,MAKEINTRESOURCE(106));
hmole2_1=LoadBitmap(hInstance,MAKEINTRESOURCE(107));
hmole2_1Mask=LoadBitmap(hInstance,MAKEINTRESOURCE(108));
hcursor=LoadCursor(hInstance,MAKEINTRESOURCE(140));
hcursor2=LoadCursor(hInstance,MAKEINTRESOURCE(141));
SetTimer(hwnd,1,1500,NULL);
hPen=CreatePen(PS_SOLID,2,RGB(255,0,0));
hBrush=CreateSolidBrush(RGB(255,0,0));
hgameOver=LoadBitmap(hInstance,MAKEINTRESOURCE(109));
ReleaseDC(hwnd,hdc);
return 0 ;
case WM_TIMER:
hit=0;
status=0;
k=0;
showTimes++;
missNum=showTimes-hitNum-1;
srand((unsigned)time( NULL ));
k=rand()%12+1;
moleShow=k;
InvalidateRect(hwnd,NULL,false);
return 0;
case WM_MOUSEMOVE:
pt.x=LOWORD(lParam);
pt.y=HIWORD(lParam);
SetCursor(hcursor);
return 0;
case WM_LBUTTONDOWN:
SetCursor(hcursor2);
hit=judgeHit(pt.x,pt.y);
if(hit>0&&hit==moleShow){
status=1;
hitNum++;
score=hitNum;
if(score%11==0&&score>0){
level++;
levelUp=true;
SetTimer(hwnd,1,1500-level*200,NULL);
}
InvalidateRect(hwnd,NULL,false);
}
return 0;
case WM_LBUTTONUP:
SetCursor(hcursor);
return 0;
case WM_PAINT:
hdc = BeginPaint(hwnd, &ps);
GetClientRect(hwnd,&rect);
SetBkMode(hdc,TRANSPARENT); //设置背景透明
hdcMem = CreateCompatibleDC(hdc);
hdcMemMask=CreateCompatibleDC(hdc);
GetObject(hbmp, sizeof(BITMAP), &bmp);
GetObject(hmole1,sizeof(BITMAP),&mole);
GetObject(hmole2,sizeof(BITMAP),&mole);
GetObject(hmole1_1,sizeof(BITMAP),&mole_1);
cxMole=mole.bmWidth;
cyMole=mole.bmHeight;
cxMole_1=mole_1.bmWidth;
cyMole_1=mole_1.bmHeight;
SelectObject(hdcMem, hbmp);
StretchBlt(hdc, 0, 0, rect.right, rect.bottom, hdcMem, 0, 0, bmp.bmWidth, bmp.bmHeight,SRCCOPY);//背景
if(k<8&&k>0&&hit==0){
SelectObject(hdcMem, hmole1);
SelectObject(hdcMemMask,hmole1Mask);
}
else if(k>7&&k<13&&hit==0){
SelectObject(hdcMem, hmole1_1);
SelectObject(hdcMemMask,hmole1_1Mask);
}
if(hit<8&&hit>0){
SelectObject(hdcMem, hmole2);
SelectObject(hdcMemMask,hmole2Mask);
}
else if(hit>7&&hit<13){
SelectObject(hdcMem, hmole2_1);
SelectObject(hdcMemMask,hmole2_1Mask);
}
switch(k){
case 1:
BitBlt(hdc,140,355,cxMole,cyMole,hdcMemMask,0,0,0x220326);
BitBlt(hdc,140,355,cxMole,cyMole,hdcMem,0,0,SRCPAINT);
break;
case 2:
BitBlt(hdc,430,365,cxMole,cyMole,hdcMemMask,0,0,0x220326);
BitBlt(hdc,430,365,cxMole,cyMole,hdcMem,0,0,SRCPAINT);
break;
case 3:
BitBlt(hdc,713,367,cxMole,cyMole,hdcMemMask,0,0,0x220326);
BitBlt(hdc,713,367,cxMole,cyMole,hdcMem,0,0,SRCPAINT);
break;
case 4:
BitBlt(hdc,80,170,cxMole,cyMole,hdcMemMask,0,0,0x220326);
BitBlt(hdc,80,170,cxMole,cyMole,hdcMem,0,0,SRCPAINT);
break;
case 5:
BitBlt(hdc,300,165,cxMole,cyMole,hdcMemMask,0,0,0x220326);
BitBlt(hdc,300,165,cxMole,cyMole,hdcMem,0,0,SRCPAINT);
break;
case 6:
BitBlt(hdc,500,168,cxMole,cyMole,hdcMemMask,0,0,0x220326);
没有合适的资源?快使用搜索试试~ 我知道了~
Windows编程打地鼠游戏
共63个文件
tlog:16个
bmp:10个
wav:4个
4星 · 超过85%的资源 需积分: 10 12 下载量 51 浏览量
2013-01-06
01:03:09
上传
评论 1
收藏 22.63MB RAR 举报
温馨提示
Windows编程中实现打地鼠游戏____GCM
资源推荐
资源详情
资源评论
收起资源包目录
Windows编程打地鼠游戏.rar (63个子文件)
MoleAttack
MoleAttack
MoleAttack.suo 13KB
MoleAttack
MoleAttack.aps 8.12MB
MoleAttack.vcxproj.filters 4KB
MoleAttack.vcxproj.user 143B
MoleAttack.rc 5KB
resource.h 908B
MoleAttack.vcxproj 5KB
Debug
vc100.idb 443KB
CL.write.1.tlog 718B
ham0_1.cur 250KB
CL.read.1.tlog 23KB
MoleAttack.ico 60KB
hit_music.wav 17KB
mt.read.1.tlog 1KB
rc.write.1.tlog 250B
mainmusic.wav 9.71MB
MoleAttack.lastbuildstate 59B
MoleAttack.vcxprojResolveAssemblyReference.cache 707B
rc.read.1.tlog 4KB
bk.bmp 3.27MB
ham1.cur 126KB
mole1Mask.bmp 146KB
ham0.cur 126KB
图文编辑器.exe.intermediate.manifest 381B
mt.command.1.tlog 908B
MoleAttack.write.1.tlog 0B
cl.command.1.tlog 1KB
link-cvtres.read.1.tlog 2B
gameover.bmp 3.27MB
mole1_1.bmp 49KB
mole1_1Mask.bmp 49KB
mole2Mask.bmp 155KB
MoleAttack.obj 46KB
levelup.wav 124KB
link.write.1.tlog 1KB
MoleAttack.exe.intermediate.manifest 381B
图文编辑器.lastbuildstate 59B
mole2_1.bmp 40KB
link-cvtres.write.1.tlog 2B
overgame.wav 284KB
link.command.1.tlog 4KB
rc.command.1.tlog 444B
link.read.1.tlog 5KB
ham1_1.cur 250KB
mt.write.1.tlog 550B
MoleAttack.log 2KB
mole2_1Mask.bmp 40KB
Main.obj 35KB
图文编辑器.write.1.tlog 0B
mole2.bmp 155KB
MoleAttack.res 8.09MB
mole1.bmp 146KB
vc100.pdb 108KB
MoleAttack.cpp 10KB
MoleAttack.sln 897B
ipch
moleattack-c26c9c05
moleattack-bf03d3d1.ipch 30.81MB
Debug
MoleAttack.pdb 507KB
图文编辑器.ilk 371KB
MoleAttack.ilk 419KB
MoleAttack.exe 8.13MB
图文编辑器.pdb 435KB
图文编辑器.exe 33KB
MoleAttack.sdf 25.64MB
共 63 条
- 1
资源评论
- yongbin_com2014-11-29就是有些小问题需要改正,其他的都不错
gao-cm
- 粉丝: 19
- 资源: 15
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功