• wordpress CMS主题:ssmay主题wordpress CMS主题:ssmay主题
  • 首页 > C++开发 > C++与MFC轻松实现:走迷宫小游戏(四)通过键盘控制人物动

    C++与MFC轻松实现:走迷宫小游戏(四)通过键盘控制人物动

    作者: 分类:C++开发 点击: 5,093 次
    wordpress CMS主题:ssmay主题

      上节我们实现了人物动起来了,但是是人物自已在动,作为我们,却无法控制它的动向。我们玩游戏基本上都是通过键盘来控制人物的动向的。本节,我们就来实现“通过键盘来控制人物的动向”。

      第1步:在构造函数前声明2个全局变量:x和y

      第2步:右键GameWnd——>add windows message handler (添加信息处理)

      在左边的窗口中选择WM_KEYDOWN,保存,然后在其代码中添加如下代码:

      CClientDC dc(this); //获取构造函数当前的内存地址

      dc.BitBlt(x,y,93,100,mdc,0,0,WHITENESS); //用白色来隐藏人物走过的痕迹

      if(nChar==VK_DOWN) //判断键盘按下向下键

      {

      y+=20;

      if(dir==0)  //16张图片中,前4张是向下走的,dir==0时向下走

      {

      index++; //前4张从1.1.bmp不断加1,

      if(index==4)// 直到加到1.4.bmp

      {

      index=0; // 再从1.1.bmp开始

      }

      }

      else

      {

      index=0; // 从1.1.bmp开始

      dir=0; //方向向下

      }

      }if(nChar==VK_UP) //判断键盘按下向上键

      {

      y-=20;

      if(dir==3) //方向向上

      {

      index++;

      if(index==4)

      {

      index=0;

      }

      }

      else

      {

      index=0;

      dir=3;

      }

      }if(nChar==VK_RIGHT)//判断键盘按下向右键

      {

      x+=20;

      if(dir==2)

      {

      index++;

      if(index==4)

      {

      index=0;

      }

      }

      else

      {

      index=0;

      dir=2;

      }

      }if(nChar==VK_LEFT)//判断键盘按下向左键

      {

      x-=20;

      if(dir==1)

      {

      index++;

      if(index==4)

      {

      index=0;

      }

      }

      else

      {

      index=0;

      dir=1;

      }

      }

      mdc->SelectObject(bitmap[dir][index]); //选择要控制的人物图片

      dc.BitBlt(x,y,93,100,mdc,0,0,SRCCOPY); //输出人物图片

      第3步:将OnCreate里面的SetTimer(1,100,NULL);前面加//注释掉。

      这样,我们就实现了通过键盘来控制窗口中的人物的动向,叫它向东,它决不敢向西。



      QQ二维码

    文章作者:高时银博客
    本文地址:http://wanlimm.com/7720140110809.html
    版权所有 © 转载时必须以链接形式注明作者和原始出处!

    上一篇:
    下一篇:
    wordpress CMS主题:ssmay主题

    或许你会感兴趣的文章:

    发表评论

    电子邮件地址不会被公开。 必填项已用*标注

    This site uses Akismet to reduce spam. Learn how your comment data is processed.