hur.cn - 华软网

 热门搜索

运动绘图

  作者:未知    来源:网络    更新时间:2011/8/20
我在做一个类似推箱子的游戏,为了使游戏更加真实,使人从一格走到另外一格更加真实,我想用五张图片的连续播放来模拟人的运动。但我不知道怎么弄?想用OnTimer,鉴于我的运行机制(如下),不知道怎么改,希望大家能给我点建议
我的运行机制是这样的:
按下键盘调用
void CGameWnd::OnKeyDown(UINT nChar, UINT nRepCnt, UINT nFlags) 
然后进行坐标变动判断:
int x1, y1, x2, y2, x3, y3;

//用x1,x2储存工人当前位置
    x1 = m_ptPosition.x;    
y1 = m_ptPosition.y;

/*分类分析按键消息,
用x2,y2用存储工人即将移动到达的位置
用x3,y3记录如果工人有推箱子的话即将到达的地方
    */
    switch (nChar)
    {
//向上
    case VK_UP:
        x2 = x1;
        y2 = y1 - 1;
        x3 = x1;
        y3 = y1 - 2;
//将所有位置输入以判断并作地图更新
        UpdateMap(x1, y1, x2, y2, x3, y3);
        break;


之后调用UpdateMap,判断是否要实际运动和人的坐标修改。
switch(m_cMap[y2][x2])
{
       
case MAP_WAY:                     //是通道,可以走
m_cMap[y2][x2] = MAP_MAN;
m_cMap[y1][x1] = MAP_WAY;
        m_ptPosition.x = x2;
        m_ptPosition.y = y2;
//m_soundState = SOUND_STATE_MOVE;
        break;

最后通过Invalidate(FALSE);调用OnPaint整个窗口重绘。

OnPaint函数用了双缓冲,其中调用了DrawMan((CPaintDC&) dcMemory, i, j);来画静止的人

因为人运动目的地的坐标在UpdateMap已经修改了,不知如何修改?求助……


---华软 网友回答---
在ontimer里弄一个关于箱子位置的值,不断变化,并刷新窗口
在onpaint里根据这个值来贴图
---华软网友回复---
能不能具体点      
华软声明:本内容来自网络,如有侵犯您版权请来信指出,本站立即删除。