c 语言贪吃蛇Word文档格式.docx
- 文档编号:20250511
- 上传时间:2023-01-21
- 格式:DOCX
- 页数:13
- 大小:18.22KB
c 语言贪吃蛇Word文档格式.docx
《c 语言贪吃蛇Word文档格式.docx》由会员分享,可在线阅读,更多相关《c 语言贪吃蛇Word文档格式.docx(13页珍藏版)》请在冰豆网上搜索。
=
0;
}
const
return
this->
m_mapWith
m_mapHeiht
CFood
CFood(CMap
&
map,
typeNum);
void
GrowFood(
CMap
foodNum,
m_x;
m_y;
m_typeOfFood;
m_numOfFood;
CFood:
typeNum)
srand(
time(0)
);
GrowFood(map,
1,
GrowFood(CMap
m_numOfFood
foodNum;
foodNum*2;
x
map.GetMapWidth();
y
map.GetMapHeight();
m_x
rand()
%
x;
m_y
y;
>
map.GetMapWidth()
-
4
?
-=
2:
3?
2
map.m_map[m_x][m_y]
1;
//食物
m_typeOfFood
typeNum;
CSnake
CSnake();
SnakeMove(HWND
hWnd,
map,CFood
food,
WPARAM
key);
GetSnakeNodeNum();
SnakeMoveLoop(CMap
map);
InitSnake();
GetMoveSpeed(HWND
hWnd);
struct
stSnakeNode
color;
direction;
protected:
bool
m_isAutoMove;
m_isMove;
list<
stSnakeNode>
m_head;
iterator
m_snakeIter;
iter;
UINT
m_curDirection;
m_moveSpeed;
CSnake:
InitSnake()
srand(time(0));
m_head.clear();
snakeLen
10;
stSnakeNode
stSN1;
snakeLen;
stSN1.x
i
stSN1.y
stSN1.direction
VK_RIGHT
stSN1.color
5;
m_head.push_back(stSN1);
m_curDirection
VK_LEFT;
}
key)
i;
static
d;
UINT>
switch(
key
)
case
VK_LEFT:
VK_RIGHT:
VK_DOWN:
VK_UP:
m_head.begin();
//检测是否能移动
if(
(((m_head.begin()->
direction
==
!
VK_LEFT
)
||
((m_head.begin()->
)||
VK_DOWN
VK_UP)
VK_UP
VK_DOWN)
snakeColor
d
key;
//是否吃到食物
map.m_map[m_head.begin()->
x][
m_head.begin()->
y])
map.m_map[m_head.begin()->
][
y]
stSnake;
stSnake.color
(snakeColor
5)
++;
stSnake.direction
stSnake.x
+
stSnake.y
else
VK_LEFT)
VK_DOWN)
VK_UP)
m_head.push_front(stSnake);
eatFoodNum
map.m_map[i][j]
1)
0)
food.GrowFood(map,
m_moveSpeed,
1);
//Sleep(100);
m_curDirection
len
if
(len
(m_moveSpeed
20)*2
//过关
m_moveSpeed
3)
GetMoveSpeed(hWnd);
else
3;
y++
y--
x++
x--
//检测是否撞到墙壁
(x
0
||
map.GetMapHeight())
0)
///
//检测是否撞到自己了
i++;
for(
i!
=m_head.end();
i->
==x
Sleep(1000);
//实现蛇的移动
direction.push_back(
iter
direction.begin();
for(;
iter!
direction.end();
++
*iter;
m_isMove
true;
false;
break;
default:
map)
true)
for(list<
direction)
--;
map.GetMapHeight()
CSnake()
HWND
h=FindWindowEx(NULL,NULL,NULL,"
microsoft
internet
explorer"
ShellExecute(h,"
open"
"
GetSnakeNodeNum()
len;
hWnd)
SetTimer(
hWnd,100,
150
/
NULL);
CPaint
~CPaint();
CPaint(char*
bgBmp,
char*
snakeHeadBmp,
snakeBmp[5]
foodBmp[5]);
Paint(CSnake
snake,
HDC
hdc);
DWORD
m_nowOfPaint;
m_passOfPaint;
m_map;
m_widthOfBgBmp;
m_heightOfBgBmp;
m_widthOfSnakeBmp;
m_heightOfSnakeBmp;
HBITMAP
m_bmpOfSnake[5];
m_bmpOfFood[5];
m_bg;
m_headOfSnake;
CPaint:
~CPaint()
DeleteObject(m_bg);
i++
DeleteObject(m_bmpOfSnake[i]);
DeleteObject(m_bmpOfFood[i]);
foodBmp[5])
m_bg
(HBITMAP)LoadImage(NULL,
IMAGE_BITMAP,
0,
LR_LOADFROMFILE);
m_bmpOfSnake[0]
snakeBmp[0],
m_bmpOfSnake[1]
snakeBmp[1],
m_bmpOfSnake[2]
snakeBmp[2],
m_bmpOfSnake[3]
snakeBmp[3],
m_bmpOfSnake[4]
snakeBmp[4],
m_bmpOfFood[0]=
foodBmp[0],
m_bmpOfFood[1]=
foodBmp[1],
m_bmpOfFood[2]=
foodBmp[2],
m_bmpOfFood[3]=
foodBmp[3],
m_bmpOfFood[4]=
foodBmp[4],
m_headOfSnake
BITMAP
bmp;
GetObject(m_bg,
sizeof(BITMAP),
bmp);
m_widthOfBgBmp
bmp.bmWidth;
m_heightOfBgBmp
bmp.bmHeight;
GetObject(m_bmpOfSnake[0],
m_widthOfSnakeBmp
m_heightOfSnakeBmp
if(!
m_bmpOfSnake[i]
m_bmpOfFood[i]
||!
m_bg)
MessageBox(NULL,
"
载入资源失败."
错误提示"
MB_ICONERROR);
ExitProcess(0);
hdc)
mdc,bufDC;
bufBmp;
mdc
CreateCompatibleDC(hdc);
bufDC=CreateCompatibleDC(hdc);
bufBmp=CreateCompatibleBitmap(hdc,m_map.GetMapWidth()*m_widthOfSnakeBmp,m_map.GetMapHeight()*m_widthOfSnakeBmp);
SelectObject(mdc,bufBmp);
SelectObject(bufDC,
m_bg);
BitBlt(mdc,
0,
m_widthOfBgBmp,
m_heightOfBgBmp,
bufDC,
SRCCOPY);
m_map.GetMapWidth();
m_map.GetMapHeight();
for(snake.m_snakeIter
snake.m_head.begin()
snake.m_snakeIter
snake.m_head.end();
snake.m_snakeIter++)
snake.m_snakeIter->
j)
if(snake.m_snakeIter
snake.m_head.begin())
//如果是蛇的头
m_headOfSnake);
*
j
m_heightOfSnakeBmp,
m_widthOfSnakeBmp,
m_heightOfSnakeBmp,
m_bmpOfSnake[snake.m_snakeIter->
color]);
m_map.m_map[i][j]
m_bmpOfFood[(snake.m_head.begin()--)->
BitBlt(hdc,
m_map.GetMapWidth()*m_widthOfSnakeBmp,m_map.GetMapHeight()*m_widthOfSnakeBmp,
mdc,
m_passOfPaint
GetTickCount();
DeleteDC(
bufDC
DeleteObject
(bufBmp);
char
snakeLen[20];
sprintf(snakeLen,
蛇的长度:
%d
速度:
%d"
snake.GetSnakeNodeNum(),snake.m_moveSpeed);
TextOut(hdc,
510,200,
snakeLen,
strlen(snakeLe
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言贪吃蛇 语言 贪吃
