1、五子棋#include stdafx.h #include Snake.h #include mmsystem.h #include #include #pragma comment(lib,winmm.lib) #include / 窗口句柄声明 / HWND hWnd; / 界面控件句柄声明 / HWND hSpeed,hScore,hLong; / 位图声明 / HBITMAP bmp3,ButtonBmp3,ziBmp5; / 蛇头坐标声明 /int HeadX,HeadY; / 前进方向声明 / int Direction; enum left=0, right, down, up,
2、 ; / 前进速度 / int x=400; / 游戏开始及标志声明 / bool Start=false; void GameStart(); / 建立数组地图 / #define XMax 30 #define YMax 19 int mapXMaxYMax; / 蛇身节点数和最大蛇身长度/ int Long=4; int LongBF; #define MaxLong 100 / 建立贪食蛇对象 / Snake aMaxLong; std:map SHE; / 消息回调处理 / LRESULT CALLBACK GameProc(HWND, UINT, WPARAM, LPARAM);
3、/ 计时器 / int time=0; / 食物数量及坐标 / int food=1; int FoodX=15; int FoodY=8; / 界面变量、界面刷新函数 / void shuaxin(); char Score10; char Speed10; char Longc10; / int APIENTRY WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow) MSG msg; WNDCLASSEX wcex; wcex.cbSize = sizeof(WNDCLASS
4、EX); wcex.style = CS_HREDRAW | CS_VREDRAW; wcex.lpfnWndProc = (WNDPROC)GameProc; wcex.cbClsExtra = 0; wcex.cbWndExtra = 0; wcex.hInstance = hInstance; wcex.hIcon = LoadIcon(hInstance,IDI_MYICON); wcex.hIconSm = LoadIcon(hInstance,IDI_MYICON); wcex.hCursor = LoadCursor(hInstance,IDI_MYCUR); wcex.hbrB
5、ackground = (HBRUSH)(COLOR_MENUTEXT); wcex.lpszMenuName = NULL; wcex.lpszClassName = lujian; wcex.hIconSm = NULL; RegisterClassEx(&wcex); hWnd=CreateWindow( lujian, 贪食蛇 *小剑制作*, WS_MINIMIZEBOX|WS_SYSMENU, CW_USEDEFAULT, 0, CW_USEDEFAULT, 0, NULL, NULL, wcex.hInstance, NULL ); /MoveWindow(hWnd,100,100
6、,1080,596,true); MoveWindow(hWnd,0,100,1020,597,true); ShowWindow(hWnd,nCmdShow); UpdateWindow(hWnd); hScore=CreateWindow(STATIC, NULL, ES_READONLY|WS_CHILD | WS_VISIBLE,901,120,112,25,hWnd,NULL,hInstance, NULL); hSpeed=CreateWindow(STATIC, NULL, ES_READONLY|WS_CHILD | WS_VISIBLE,901,248,112,25,hWnd
7、,NULL,hInstance, NULL); hLong=CreateWindow(STATIC, NULL, ES_READONLY|WS_CHILD | WS_VISIBLE,901,185,112,25,hWnd,NULL,hInstance, NULL); shuaxin(); bmp0=(HBITMAP)LoadImage(NULL,bmp/背景.bmp,IMAGE_BITMAP,30,30,LR_LOADFROMFILE); bmp1=(HBITMAP)LoadImage(NULL,bmp/方块(红).bmp,IMAGE_BITMAP,30,30,LR_LOADFROMFILE)
8、;bmp2=(HBITMAP)LoadImage(NULL,bmp/方块(紫).bmp,IMAGE_BITMAP,30,30,LR_LOADFROMFILE);ButtonBmp0=(HBITMAP)LoadImage(NULL,bmp/按钮.bmp,IMAGE_BITMAP,100,42,LR_LOADFROMFILE); ButtonBmp1=(HBITMAP)LoadImage(NULL,bmp/按钮1.bmp,IMAGE_BITMAP,100,42,LR_LOADFROMFILE); ButtonBmp2=(HBITMAP)LoadImage(NULL,bmp/界面.bmp,IMAGE
9、_BITMAP,120,597,LR_LOADFROMFILE); ziBmp0=(HBITMAP)LoadImage(NULL,bmp/小.bmp,IMAGE_BITMAP,31,29,LR_LOADFROMFILE); ziBmp1=(HBITMAP)LoadImage(NULL,bmp/剑.bmp,IMAGE_BITMAP,31,29,LR_LOADFROMFILE); ziBmp2=(HBITMAP)LoadImage(NULL,bmp/作.bmp,IMAGE_BITMAP,31,29,LR_LOADFROMFILE); ziBmp3=(HBITMAP)LoadImage(NULL,b
10、mp/品.bmp,IMAGE_BITMAP,31,29,LR_LOADFROMFILE); ziBmp4=(HBITMAP)LoadImage(NULL,bmp/界面底.bmp,IMAGE_BITMAP,120,329,LR_LOADFROMFILE); GameStart(); HDC hdc,mdc; hdc = :GetDC(hWnd); mdc = :CreateCompatibleDC(hdc); :SelectObject(mdc,ButtonBmp0); :BitBlt(hdc, 910,30, 146, 42, mdc, 0, 0, SRCCOPY); :SelectObjec
11、t(mdc,ButtonBmp2); :BitBlt(hdc, 900,0, 120, 597, mdc, 0, 0, SRCCOPY); :ReleaseDC(hWnd, hdc); :DeleteObject(mdc); while(true) if(PeekMessage( &msg, NULL, 0,0 ,PM_REMOVE) TranslateMessage( &msg ); DispatchMessage( &msg ); return msg.wParam; void shuaxin() sprintf(Score,%d分,Long-4); SetWindowText(hScor
12、e,Score); sprintf(Speed,%d,Long-3); SetWindowText(hSpeed,Speed); sprintf(Longc,%d节,Long); SetWindowText(hLong,Longc); void GameStart() HDC hdc,mdc; hdc = :GetDC(hWnd); mdc = :CreateCompatibleDC(hdc); :SelectObject(mdc,bmp0); for(int i=0;iXMax;i+) for(int j=0;jYMax;j+) mapij=0; :BitBlt(hdc, i*30,j*30
13、, 30, 30, mdc, 0, 0, SRCCOPY); :SelectObject(mdc,bmp1); :BitBlt(hdc, 0,0, 30, 30, mdc, 0, 0, SRCCOPY); :BitBlt(hdc, 30,0, 30, 30, mdc, 0, 0, SRCCOPY); :BitBlt(hdc, 2*30,0, 30, 30, mdc, 0, 0, SRCCOPY); :BitBlt(hdc, 3*30,0, 30, 30, mdc, 0, 0, SRCCOPY); :SelectObject(mdc,bmp2); :BitBlt(hdc, 15*30,8*30,
14、 30, 30, mdc, 0, 0, SRCCOPY); :ReleaseDC(hWnd, hdc); :DeleteObject(mdc); map00=1; map10=1; map20=1; map30=1; map158=2; Direction=right; HeadX=3; HeadY=0; for(i=0;i=0;i-) SHEi+1.SnakeX=SHEi.SnakeX; SHEi+1.SnakeY=SHEi.SnakeY; SHE0.SnakeX=HeadX; SHE0.SnakeY=HeadY; LRESULT CALLBACK GameProc(HWND hWnd, U
15、INT message, WPARAM wParam, LPARAM lParam) HDC hdc,mdc; hdc = :GetDC(hWnd); mdc = :CreateCompatibleDC(hdc); switch (message) case WM_KEYDOWN: if(wParam=VK_DOWN) if(Direction!=up) Direction=down; if(wParam=VK_LEFT) if(Direction!=right) Direction=left; if(wParam=VK_RIGHT) if(Direction!=left) Direction
16、=right; if(wParam=VK_UP) if(Direction!=down) Direction=up; break; case WM_LBUTTONDOWN: if(LOWORD(lParam)910 & LOWORD(lParam)30 &HIWORD(lParam)910 & LOWORD(lParam)30 &HIWORD(lParam)76) HDC hdc,mdc; hdc = :GetDC(hWnd); mdc = :CreateCompatibleDC(hdc); :SelectObject(mdc,ButtonBmp1); :BitBlt(hdc, 910,30,
17、 146, 42, mdc, 0, 0, SRCCOPY); :ReleaseDC(hWnd, hdc); :DeleteObject(mdc); else HDC hdc,mdc; hdc = :GetDC(hWnd); mdc = :CreateCompatibleDC(hdc); :SelectObject(mdc,ButtonBmp0); :BitBlt(hdc, 910,30, 146, 42, mdc, 0, 0, SRCCOPY); :ReleaseDC(hWnd, hdc); :DeleteObject(mdc); break; case WM_DESTROY: PostQui
18、tMessage(0); break; case WM_CLOSE: ExitProcess(0); break; case WM_CREATE: SetTimer(hWnd,1,x, NULL); break; case WM_TIMER: :SelectObject(mdc,ziBmp4); :BitBlt(hdc,900,270, 129, 329, mdc, 0, 0, SRCCOPY); for(int i=0;i4;i+) int xx; xx=900+rand()%90; int yy; yy=280+rand()%220; :SelectObject(mdc,ziBmpi);
19、:BitBlt(hdc, xx,yy, 31, 29, mdc, 0, 0, SRCCOPY); if(Start) LongBF=Long; time+; if(food=0) loop3: time=0; FoodX=rand()%30; FoodY=rand()%19; if(mapFoodXFoodY=0) mapFoodXFoodY=2; food+; else goto loop3; if(time%40=0) if(food=1) mapFoodXFoodY=0; food-; loop1: FoodX=rand()%30; FoodY=rand()%19; if(mapFood
20、XFoodY=0) mapFoodXFoodY=2; food+; else goto loop1; else loop2: FoodX=rand()%30; FoodY=rand()%19; if(mapFoodXFoodY=0) mapFoodXFoodY=2; food+; else goto loop2; switch(Direction) case right: if(HeadX+1)*30=0) if(mapHeadX-1HeadY=1) Start=false; PlaySound(sound/碰撞.wav,NULL,SND_FILENAME| SND_ASYNC); Messa
21、geBox(0,悟空怎么搞的?师傅不是叫你别乱撞自己么?,撞墙罗,MB_OK); break; if(mapHeadX-1HeadY=2) Long+; food-; shuaxin(); if(Long-LongBF=1) x-=10; SetTimer(hWnd,1,x, NULL); PlaySound(sound/转换.wav,NULL,SND_FILENAME); map-HeadXHeadY=1; LastGo(); else Start=false; PlaySound(sound/碰撞.wav,NULL,SND_FILENAME| SND_ASYNC); MessageBox(0,悟空怎么搞的?师傅不是叫你别乱撞墙么?,撞墙罗,MB_OK); break; case down: if(HeadY+1)*30570) if(mapHeadXHeadY+1=1) Start=false; PlaySound(sound/碰撞.wav,NULL,SND_FILENAME| SND_ASYNC); MessageBox(0,悟空怎么搞的?师傅不是叫你别乱撞自己么?,撞墙罗,MB_OK); break; if(mapHeadXHeadY+1=2) Long+; food-
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1