vc推箱子c语言代码,CIW版推箱子 (原创,VC++实现)

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼

ReadMapFile();

AboutMe();

return TRUE;

}

LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)

{

HDC hdc;

switch (message)

{

case WM_KEYDOWN:

if(wParam == VK_ESCAPE)

{

SendMessage(hWnd, WM_COMMAND, 0, (LPARAM)hRestartBtn);

}

hdc = GetDC(hWnd);

man.GameLoop(map, wParam);

if(man.IsWin(map ))

{

man.m_direction = VK_DOWN;

man.m_numOfMove = 0;

InvalidateRect(hWnd, NULL, true);

paint.WinPaint( hdc);

PlaySound (TEXT ("Sound//Win.WAV"), NULL, SND_FILENAME | SND_ASYNC) ;

Sleep(2000);

int index = SendMessage(hMapList, CB_GETCURSEL, 0, 0);

int allIndex= SendMessage(hMapList, CB_GETCOUNT, 0, 0);

if( index + 1 

{

char selFileName[100];

char mapName[100];

SendMessage(hMapList, CB_GETLBTEXT, index + 1, (LPARAM) (LPCSTR)selFileName);

sprintf(mapName, "map\\%s", selFileName);

map.ReadMap(  mapName );

man.GetXAndYOfMan(map);

SetFocus(hWnd);

SendMessage(hMapList, CB_SETCURSEL, index + 1, (LPARAM) (LPCSTR)selFileName);

}

else if(index + 1 == allIndex)

{

char selFileName[100];

char mapName[100];

SendMessage(hMapList, CB_SETCURSEL, 0, (LPARAM) (LPCSTR)selFileName);

SendMessage(hMapList, CB_GETLBTEXT, 0, (LPARAM) (LPCSTR)selFileName);

sprintf(mapName, "map\\%s", selFileName);

map.ReadMap(  mapName );

man.GetXAndYOfMan(map);

SetFocus(hWnd);

}

else

{

man.Restart(map);

man.GetXAndYOfMan(map);

SetFocus(hWnd);

}

}

ReleaseDC(hWnd,hdc);

break;

case WM_DESTROY:

PostQuitMessage(0);

break;

case WM_COMMAND:

if((HWND) lParam == hRestartBtn)

{

if(MessageBox(hWnd, "真的要重新开始吗?", "提示", MB_YESNO) ==IDYES)

{

InvalidateRect(hWnd, NULL, true);

man.Restart(map);

man.GetXAndYOfMan(map);

SetFocus(hWnd);

}

}

if((HWND) lParam == hPreviousBtn)

{

man.Previous(map);

SetFocus(hWnd);

}

if((HWND) lParam ==hOpenMapBtn)

{

int index = SendMessage(hMapList, CB_GETCURSEL, 0, 0);

if( index != -1 )

{

char selFileName[100];

char mapName[100];

memset(mapName, 0, 100);

SendMessage(hMapList, CB_GETLBTEXT, index, (LPARAM) (LPCSTR)selFileName);

sprintf(mapName, "map\\%s", selFileName);

map.ReadMap(  mapName );

SendMessage(hWnd, WM_COMMAND, 0, (LPARAM)hRestartBtn);

SetFocus(hWnd);

}

}

if((HWND) lParam ==hOpenMapEditBtn)

{

if(WinExec("推箱子地图制作.exe", SW_SHOW) == ERROR_FILE_NOT_FOUND  )

{

MessageBox(hWnd, "找不到地图编辑器,请确认和本程序在同个目录.", "错误提示", MB_OK | MB_ICONERROR);

}

}

if((HWND) lParam ==hDeleteMapBtn)

{

if(MessageBox(hWnd, "真的要删除当前选择的这个地图吗?", "提示", MB_YESNO ) ==IDYES)

{

DeleteMapFile();

SetFocus(hWnd);

}

}

if( HIWORD(wParam) == CBN_SELCHANGE ||  HIWORD(wParam) ==CBN_KILLFOCUS)

{

SetFocus(hWnd);

}

if( HIWORD(wParam) ==CBN_SETFOCUS)

{

ReadMapFile();

}

break;

case WM_RBUTTONDOWN:

man.Previous(map);

break;

case WM_CLOSE:

if(MessageBox(hWnd, "真的要退出游戏吗?", "提示", MB_YESNO ) ==IDYES)

{

ExitProcess(0);

}

break;

default:

return DefWindowProc(hWnd, message, wParam, lParam);

}

return 0;

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值