五子棋.docx

上传人:b****4 文档编号:27032692 上传时间:2023-06-25 格式:DOCX 页数:20 大小:83.98KB
下载 相关 举报
五子棋.docx_第1页
第1页 / 共20页
五子棋.docx_第2页
第2页 / 共20页
五子棋.docx_第3页
第3页 / 共20页
五子棋.docx_第4页
第4页 / 共20页
五子棋.docx_第5页
第5页 / 共20页
点击查看更多>>
下载资源
资源描述

五子棋.docx

《五子棋.docx》由会员分享,可在线阅读,更多相关《五子棋.docx(20页珍藏版)》请在冰豆网上搜索。

五子棋.docx

五子棋

#include"stdafx.h"

#include"Snake.h"

#include"mmsystem.h"

#include

#include

#pragmacomment(lib,"winmm.lib")

#include

/////////////////////////////////窗口句柄声明////////////////////////////////

HWNDhWnd;

/////////////////////////////////界面控件句柄声明////////////////////////////////

HWNDhSpeed,hScor

e,hLong;

/////////////////////////////////位图声明////////////////////////////////

HBITMAPbmp[3],ButtonBmp[3],ziBmp[5];

/////////////////////////////////蛇头坐标声明////////////////////////////////

intHeadX,HeadY;

/////////////////////////////////前进方向声明////////////////////////////////

intDirection;

enum{

left=0,

right,

down,

up,

};

/////////////////////////////////前进速度////////////////////////////////

intx=400;

/////////////////////////////////游戏开始及标志声明////////////////////////////////

boolStart=false;

voidGameStart();

/////////////////////////////////建立数组地图////////////////////////////////

#defineXMax30

#defineYMax19

intmap[XMax][YMax];

/////////////////////////////////蛇身节点数和最大蛇身长度//////////////////////////////

intLong=4;

intLongBF;

#defineMaxLong100

/////////////////////////////////建立贪食蛇对象////////////////////////////////

Snakea[MaxLong];

std:

:

mapSHE;

/////////////////////////////////消息回调处理////////////////////////////////

LRESULTCALLBACKGameProc(HWND,UINT,WPARAM,LPARAM);

/////////////////////////////////计时器////////////////////////////////

inttime=0;

/////////////////////////////////食物数量及坐标////////////////////////////////

intfood=1;

intFoodX=15;

intFoodY=8;

/////////////////////////////////界面变量、界面刷新函数////////////////////////////////

voidshuaxin();

charScore[10];

charSpeed[10];

charLongc[10];

//////////////////////////////////////////////////////////////////////////////////////////

intAPIENTRYWinMain(HINSTANCEhInstance,

HINSTANCEhPrevInstance,

LPSTRlpCmdLine,

intnCmdShow)

{

MSGmsg;

WNDCLASSEXwcex;

wcex.cbSize=sizeof(WNDCLASSEX);

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.hbrBackground=(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,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,NULL,hInstance,NULL);

hLong=CreateWindow("STATIC",NULL,ES_READONLY|WS_CHILD|WS_VISIBLE,901,185,112,25,hWnd,NULL,hInstance,NULL);

shuaxin();

bmp[0]=(HBITMAP)LoadImage(NULL,"bmp//背景.bmp",IMAGE_BITMAP,30,30,LR_LOADFROMFILE);

bmp[1]=(HBITMAP)LoadImage(NULL,"bmp//方块(红).bmp",IMAGE_BITMAP,30,30,LR_LOADFROMFILE);

bmp[2]=(HBITMAP)LoadImage(NULL,"bmp//方块(紫).bmp",IMAGE_BITMAP,30,30,LR_LOADFROMFILE);

ButtonBmp[0]=(HBITMAP)LoadImage(NULL,"bmp//按钮.bmp",IMAGE_BITMAP,100,42,LR_LOADFROMFILE);

ButtonBmp[1]=(HBITMAP)LoadImage(NULL,"bmp//按钮1.bmp",IMAGE_BITMAP,100,42,LR_LOADFROMFILE);

ButtonBmp[2]=(HBITMAP)LoadImage(NULL,"bmp//界面.bmp",IMAGE_BITMAP,120,597,LR_LOADFROMFILE);

ziBmp[0]=(HBITMAP)LoadImage(NULL,"bmp//小.bmp",IMAGE_BITMAP,31,29,LR_LOADFROMFILE);

ziBmp[1]=(HBITMAP)LoadImage(NULL,"bmp//剑.bmp",IMAGE_BITMAP,31,29,LR_LOADFROMFILE);

ziBmp[2]=(HBITMAP)LoadImage(NULL,"bmp//作.bmp",IMAGE_BITMAP,31,29,LR_LOADFROMFILE);

ziBmp[3]=(HBITMAP)LoadImage(NULL,"bmp//品.bmp",IMAGE_BITMAP,31,29,LR_LOADFROMFILE);

ziBmp[4]=(HBITMAP)LoadImage(NULL,"bmp//界面底.bmp",IMAGE_BITMAP,120,329,LR_LOADFROMFILE);

GameStart();

HDChdc,mdc;

hdc=:

:

GetDC(hWnd);

mdc=:

:

CreateCompatibleDC(hdc);

:

:

SelectObject(mdc,ButtonBmp[0]);

:

:

BitBlt(hdc,910,30,146,42,mdc,0,0,SRCCOPY);

:

:

SelectObject(mdc,ButtonBmp[2]);

:

:

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);

}

}

returnmsg.wParam;

}

voidshuaxin()

{

sprintf(Score,"%d分",Long-4);

SetWindowText(hScore,Score);

sprintf(Speed,"%d",Long-3);

SetWindowText(hSpeed,Speed);

sprintf(Longc,"%d节",Long);

SetWindowText(hLong,Longc);

}

voidGameStart()

{

HDChdc,mdc;

hdc=:

:

GetDC(hWnd);

mdc=:

:

CreateCompatibleDC(hdc);

:

:

SelectObject(mdc,bmp[0]);

for(inti=0;i

for(intj=0;j

{

map[i][j]=0;

:

:

BitBlt(hdc,i*30,j*30,30,30,mdc,0,0,SRCCOPY);

}

:

:

SelectObject(mdc,bmp[1]);

:

:

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,bmp[2]);

:

:

BitBlt(hdc,15*30,8*30,30,30,mdc,0,0,SRCCOPY);

:

:

ReleaseDC(hWnd,hdc);

:

:

DeleteObject(mdc);

map[0][0]=1;

map[1][0]=1;

map[2][0]=1;

map[3][0]=1;

map[15][8]=2;

Direction=right;

HeadX=3;

HeadY=0;

for(i=0;i

{

SHE[i]=a[i];

}

SHE[0].SnakeX=3;

SHE[0].SnakeY=0;

SHE[1].SnakeX=2;

SHE[1].SnakeY=0;

SHE[2].SnakeX=1;

SHE[2].SnakeY=0;

SHE[3].SnakeX=0;

SHE[3].SnakeY=0;

Long=4;

shuaxin();

}

voidLastGo()

{

map[SHE[Long-1].SnakeX][SHE[Long-1].SnakeY]=0;

for(inti=Long-2;i>=0;i--)

{

SHE[i+1].SnakeX=SHE[i].SnakeX;

SHE[i+1].SnakeY=SHE[i].SnakeY;

}

SHE[0].SnakeX=HeadX;

SHE[0].SnakeY=HeadY;

}

LRESULTCALLBACKGameProc(HWNDhWnd,UINTmessage,WPARAMwParam,LPARAMlParam)

{

HDChdc,mdc;

hdc=:

:

GetDC(hWnd);

mdc=:

:

CreateCompatibleDC(hdc);

switch(message)

{

caseWM_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=right;

}

if(wParam==VK_UP)

{

if(Direction!

=down)

Direction=up;

}

break;

caseWM_LBUTTONDOWN:

if(LOWORD(lParam)>910&&LOWORD(lParam)<1056&&HIWORD(lParam)>30&&HIWORD(lParam)<76)

{

PlaySound("sound//开始.wav",NULL,SND_FILENAME);

Start=true;

GameStart();

}

break;

caseWM_MOUSEMOVE:

if(LOWORD(lParam)>910&&LOWORD(lParam)<1056&&HIWORD(lParam)>30&&HIWORD(lParam)<76)

{

HDChdc,mdc;

hdc=:

:

GetDC(hWnd);

mdc=:

:

CreateCompatibleDC(hdc);

:

:

SelectObject(mdc,ButtonBmp[1]);

:

:

BitBlt(hdc,910,30,146,42,mdc,0,0,SRCCOPY);

:

:

ReleaseDC(hWnd,hdc);

:

:

DeleteObject(mdc);

}

else

{

HDChdc,mdc;

hdc=:

:

GetDC(hWnd);

mdc=:

:

CreateCompatibleDC(hdc);

:

:

SelectObject(mdc,ButtonBmp[0]);

:

:

BitBlt(hdc,910,30,146,42,mdc,0,0,SRCCOPY);

:

:

ReleaseDC(hWnd,hdc);

:

:

DeleteObject(mdc);

}

break;

caseWM_DESTROY:

PostQuitMessage(0);

break;

caseWM_CLOSE:

ExitProcess(0);

break;

caseWM_CREATE:

SetTimer(hWnd,1,x,NULL);

break;

caseWM_TIMER:

:

:

SelectObject(mdc,ziBmp[4]);

:

:

BitBlt(hdc,900,270,129,329,mdc,0,0,SRCCOPY);

for(inti=0;i<4;i++)

{

intxx;

xx=900+rand()%90;

intyy;

yy=280+rand()%220;

:

:

SelectObject(mdc,ziBmp[i]);

:

:

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(map[FoodX][FoodY]==0)

{

map[FoodX][FoodY]=2;

food++;

}

else

gotoloop3;

}

if(time%40==0)

{

if(food==1)

{

map[FoodX][FoodY]=0;

food--;

loop1:

FoodX=rand()%30;

FoodY=rand()%19;

if(map[FoodX][FoodY]==0)

{

map[FoodX][FoodY]=2;

food++;

}

else

gotoloop1;

}

else

{

loop2:

FoodX=rand()%30;

FoodY=rand()%19;

if(map[FoodX][FoodY]==0)

{

map[FoodX][FoodY]=2;

food++;

}

else

gotoloop2;

}

}

switch(Direction)

{

caseright:

if((HeadX+1)*30<899)

{

if(map[HeadX+1][HeadY]==1)

{

Start=false;

PlaySound("sound//碰撞.wav",NULL,SND_FILENAME|SND_ASYNC);

MessageBox(0,"悟空~~~怎么搞的?

师傅不是叫你别乱撞自己么?

","撞墙罗",MB_OK);

break;

}

if(map[HeadX+1][HeadY]==2)

{

Long++;

food--;

shuaxin();

if(Long-LongBF==1)

{

x-=10;

SetTimer(hWnd,1,x,NULL);

}

}

PlaySound("sound//转换.wav",NULL,SND_FILENAME);

map[++HeadX][HeadY]=1;

LastGo();

}

else

{

Start=false;

PlaySound("sound//碰撞.wav",NULL,SND_FILENAME|SND_ASYNC);

MessageBox(0,"悟空~~~怎么搞的?

师傅不是叫你别乱撞墙么?

","撞墙罗",MB_OK);

}

break;

caseleft:

if((HeadX-1)*30>=0)

{

if(map[HeadX-1][HeadY]==1)

{

Start=false;

PlaySound("sound//碰撞.wav",NULL,SND_FILENAME|SND_ASYNC);

MessageBox(0,"悟空~~~怎么搞的?

师傅不是叫你别乱撞自己么?

","撞墙罗",MB_OK);

break;

}

if(map[HeadX-1][HeadY]==2)

{

Long++;

food--;

shuaxin();

if(Long-LongBF==1)

{

x-=10;

SetTimer(hWnd,1,x,NULL);

}

}

PlaySound("sound//转换.wav",NULL,SND_FILENAME);

map[--HeadX][HeadY]=1;

LastGo();

}

else

{

Start=false;

PlaySound("sound//碰撞.wav",NULL,SND_FILENAME|SND_ASYNC);

MessageBox(0,"悟空~~~怎么搞的?

师傅不是叫你别乱撞墙么?

","撞墙罗",MB_OK);

}

break;

casedown:

if((HeadY+1)*30<570)

{

if(map[HeadX][HeadY+1]==1)

{

Start=false;

PlaySound("sound//碰撞.wav",NULL,SND_FILENAME|SND_ASYNC);

MessageBox(0,"悟空~~~怎么搞的?

师傅不是叫你别乱撞自己么?

","撞墙罗",MB_OK);

break;

}

if(map[HeadX][HeadY+1]==2)

{

Long++;

food-

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高中教育 > 英语

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1