设为首页 加入收藏

TOP

(Visual C++)游戏开发笔记十五:游戏人工智能(一)运动型游戏AI (三)
2014-11-23 20:17:25 来源: 作者: 【 】 浏览:125
Tags:Visual 游戏 开发 笔记 十五 人工智能 运动型
num*w,0,SRCPAINT);

BitBlt(hdc,0,0,640,480,mdc,0,0,SRCCOPY);



//贴出鸟的图片
SelectObject(bufdc,bird);


for(i=0;i<3;i++)
{

if(rand()%3 != 1) //有2/3几率进行追踪
{
if(p[i].y > y-16)
p[i].y -= 5;
else
p[i].y += 5;

if(p[i].x > x-25)
p[i].x -= 5;
else
p[i].x += 5;
}

if(p[i].x > x-25) //判断小鸟的移动方向,从而选择合适的位图朝向
{
BitBlt(mdc,p[i].x,p[i].y,61,61,bufdc,61,61,SRCAND);
BitBlt(mdc,p[i].x,p[i].y,61,61,bufdc,0,61,SRCPAINT);
}
else
{
BitBlt(mdc,p[i].x,p[i].y,61,61,bufdc,61,0,SRCAND);
BitBlt(mdc,p[i].x,p[i].y,61,61,bufdc,0,0,SRCPAINT);
}
}

BitBlt(hdc,0,0,640,480,mdc,0,0,SRCCOPY);




tPre = GetTickCount(); //记录此次绘图时间

num++;
if(num == 8)
num = 0;

}

//****消息处理函数***********************************
// 1.按下【Esc】键结束程序
// 2.按下方向键重设贴图坐标
LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
{
switch (message)
{
case WM_KEYDOWN: //按下键盘消息
//判断按键的虚拟键码
switch (wParam)
{
case VK_ESCAPE: //按下【Esc】键
PostQuitMessage( 0 ); //结束程序
break;
case VK_UP: //按下【↑】键
//先按照目前的移动方向来进行贴图坐标修正,并加入人物往上移动的量(每次按下一次按键移动10个单位),来决定人物贴图坐标的X与Y值,接着判断坐标是否超出窗口区域,若有则再次修正
switch(dir)
{
case 0:
y -= 10;
break;
case 1:
x -= 1;
y -= 8;
break;
case 2:
x += 2;
y -= 10;
break;
case 3:
x += 2;
y -= 10;
break;
}
if(y < 0)
y = 0;
dir = 0;
break;
case VK_DOWN: //按下【↓】键
switch(dir)
{
case 0:
x += 1;
y += 8;
break;
case 1:
y += 10;
break;
case 2:
x += 3;
y += 6;
break;
case 3:
x += 3;
y += 6;
break;
}

if(y > 375)
y = 375;
dir = 1;
break;
case VK_LEFT: //按下【←】键
switch(dir)
{
case 0:
x -= 12;
首页 上一页 1 2 3 4 下一页 尾页 3/4/4
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇(Visual C++)游戏开发笔记十三.. 下一篇(Visual C++)游戏开发笔记十四..

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: