贪吃蛇简易代码Word下载.docx
- 文档编号:22348554
- 上传时间:2023-02-03
- 格式:DOCX
- 页数:17
- 大小:16.92KB
贪吃蛇简易代码Word下载.docx
《贪吃蛇简易代码Word下载.docx》由会员分享,可在线阅读,更多相关《贪吃蛇简易代码Word下载.docx(17页珍藏版)》请在冰豆网上搜索。
/////////////////////////////////////////////////////////////////////////////////////
charg_ClassName[20]="
ClassName"
;
LRESULTCALLBACKWndProc(HWNDhwnd,UINTnMsg,WPARAMwParam,LPARAMlParam);
HBITMAPhBitMap;
intCALLBACKWinMain(HINSTANCEhInstance,
HINSTANCEhPreInstance,
LPSTRpCmdLine,
intnCmdShow)
HBRUSHhBrush=CreateSolidBrush(RGB(100,100,410));
HICONhIcon=LoadIcon(hInstance,MAKEINTRESOURCE(IDI_wnd_icon));
HICONhIconsm=LoadIcon(hInstance,MAKEINTRESOURCE(IDI_wnd_iconsm));
hBitMap=LoadBitmap(hInstance,MAKEINTRESOURCE(IDB_wdnbitmap));
//设计类
WNDCLASSEXwndClass;
wndClass.cbClsExtra=NULL;
wndClass.cbSize=sizeof(wndClass);
wndClass.cbWndExtra=NULL;
wndClass.hbrBackground=hBrush;
wndClass.hCursor=LoadCursor(hInstance,IDC_ARROW);
wndClass.hIcon=hIcon;
wndClass.hIconSm=hIconsm;
wndClass.hInstance=hInstance;
wndClass.lpfnWndProc=WndProc;
wndClass.lpszClassName=g_ClassName;
wndClass.style=CS_HREDRAW|CS_VREDRAW;
wndClass.lpszMenuName=NULL;
//注册
if(!
RegisterClassEx(&
wndClass))
{
MessageBox(NULL,"
注册失败"
"
消息"
MB_OK);
}
//创建
HWNDhwnd=CreateWindow(g_ClassName,
"
贪吃蛇"
WS_OVERLAPPEDWINDOW,
200,
50,
600+16,
600+38,
NULL,
hInstance,
NULL);
hwnd)
创建失败!
"
//显示
ShowWindow(hwnd,nCmdShow);
//消息循环
MSGmsg;
while(GetMessage(&
msg,NULL,0,0))
TranslateMessage(&
msg);
//翻译
DispatchMessage(&
//回调函数
return0;
}
HDCdc=NULL;
Bean*pBean=NULL;
Snake*pSnake=NULL;
intVK=VK_RIGHT;
LRESULTCALLBACKWndProc(HWNDhwnd,UINTnMsg,WPARAMwParam,LPARAMlParam)
switch(nMsg)
caseWM_CREATE:
CreateSnake(&
pSnake);
//创建蛇
CreateBean(&
pBean,pSnake);
dc=GetDC(hwnd);
break;
caseWM_KEYDOWN:
{
switch(wParam)
{
caseVK_RETURN:
//按下后就开始
SetTimer(hwnd,1,150,NULL);
break;
caseVK_UP:
VK=VK_UP;
caseVK_DOWN:
VK=VK_DOWN;
caseVK_LEFT:
VK=VK_LEFT;
caseVK_RIGHT:
VK=VK_RIGHT;
case'
'
:
KillTimer(hwnd,1);
}
break;
}
caseWM_TIMER:
/*创建背景*/
RECTrect;
GetWindowRect(hwnd,&
rect);
HDChmeDc=CreateCompatibleDC(dc);
SelectObject(hmeDc,hBitMap);
StretchBlt(dc,0,0,rect.right-rect.left,rect.bottom-rect.top,hmeDc,0,0,500,600,SRCCOPY);
DeleteDC(hmeDc);
/*背景创建结束*/
//各种函数
if(CanDie(pSnake))
MessageBox(NULL,"
笨蛋,撞到自己身上,我死啦!
if(CanEatBean(pSnake,pBean))
SnakeGrowUp(pSnake);
DeleteBean(&
pBean);
CreateBean(&
SnakeRun(&
else
ShowSnake(pSnake);
ShowBean(pBean);
caseWM_PAINT:
//显示蛇
//显示豆
break;
caseWM_CLOSE:
deleteAll(&
DeleteBean(&
DestroyWindow(hwnd);
caseWM_DESTROY:
ReleaseDC(hwnd,dc);
PostQuitMessage(0);
caseWM_QUIT:
returnDefWindowProc(hwnd,nMsg,wParam,lParam);
/////////////////////////////////函数///////////////////////////////////////////////////////////
//创建蛇CreateSnake()
voidCreateSnake(Snake**pSnake)
Snake*u=NULL,
*w=NULL;
inti=3;
//开始的蛇有三截
intx=0;
//蛇头的初始位置
inty=0;
//蛇尾的初始位置
while(i--)
u=(Snake*)malloc(sizeof(Snake));
u->
pNext=NULL;
x=x;
y=y;
x+=20;
if(NULL==*pSnake)
*pSnake=u;
else
w->
pNext=u;
w=u;
/*蛇的三届创建完毕*/
//创建豆
voidCreateBean(Bean**pBean,Snake*pSnake)
Snake*ji;
//随机的位置x坐标
//随机的位置y坐标
srand(time(NULL));
x=((unsigned)rand()%29)*20;
y=((unsigned)rand()%29)*20;
ji=pSnake;
while(pSnake)
if((x==pSnake->
x)&
&
(y==pSnake->
y))
x=((unsigned)rand()%29)*20;
y=((unsigned)rand()%29)*20;
pSnake=ji;
pSnake=pSnake->
pNext;
Bean*u;
u=(Bean*)malloc(sizeof(Bean));
u->
*pBean=u;
//删掉全部蛇
voiddeleteAll(Snake**pSnake)
Snake*del;
while(*pSnake)
del=*pSnake;
(*pSnake)=(*pSnake)->
free(del);
//删掉豆
voidDeleteBean(Bean**pBean)
free(*pBean);
*pBean=NULL;
//显示蛇
voidShowSnake(Snake*pSnake)
while(pSnake)
Rectangle(dc,pSnake->
x,pSnake->
y,pSnake->
x+20,pSnake->
y+20);
//显示豆
voidShowBean(Bean*pBean)
Rectangle(dc,pBean->
x,pBean->
y,pBean->
x+20,pBean->
//贪吃蛇移动
voidSnakeRun(Snake**pSnake)
Snake*ji,//记录变化的蛇头
*round;
//循环遍历
intx,//蛇头的当前位置x坐标
y;
//蛇头的当前位置y坐标
ji=*pSnake;
round=*pSnake;
while(round->
pNext)
round=round->
x=round->
x;
y=round->
y;
switch(VK)
caseVK_UP:
if(y==0)
y=600;
y-=20;
caseVK_DOWN:
if(y==600)
y=0;
y+=20;
caseVK_LEFT:
if(x==0)
x=600;
x-=20;
caseVK_RIGHT:
if(x==600)
x=0;
*pSnake=(*pSnake)->
ji->
round->
pNext=ji;
//下一步能吃到豆吗?
返回1吃到
intCanEatBean(Snake*pSnake,Bean*pBean)
while(pSnake->
if((pSnake->
x==pBean->
x)&
(pSnake->
y==pBean->
y))
return1;
//长大
voidSnakeGrowUp(Snake*pSnake)
Snake*u;
u=(Snake*)malloc(sizeof(Snake));
x=pBean->
y=pBean->
while(pSnake->
pSnake->
//蛇会死吗返回1会死
intCanDie(Snake*pSnake)
Snake*ji=NULL;
intx=0,
y=0;
x=pSnake->
y=pSnake->
while(ji->
if((x==ji->
(y==ji->
return1;
ji=ji->
WelcomeTo
Download!
!
欢迎您的下载,资料仅供参考!
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 贪吃 简易 代码