想做一个弹球游戏,可不知道从哪下手,还请各位大侠多多指教。比如:算法啊什么的。

解决方案 »

  1.   

    msdn2.microsoft.com/en-us/library/s3wsyb55(VS.80).aspx
      

  2.   


    typedef struct  
    {
    POINT Center_Pos;
    bool IsShow;
    int Radius;
    float speed;
    //当前球体的角度, 相对于x轴正方向的;
    float theta;
    COLORREF color;
    }BALL; BALL ball[BALL_NUM];
    //台球桌的尺寸;
    int m_DeskX, m_DeskY;
    //桌面起始坐标:
    CPoint m_DeskOrig;void CHitView::Collision(int ballx, int bally, int ballr, int index)
    {
    //right, 没有除去画笔的宽度; 有个边缘问题;
    if(ball[index].Center_Pos.x >= (m_DeskOrig.x+m_DeskX-ballr) )
    {
    ball[index].Center_Pos.x = m_DeskOrig.x+m_DeskX-ballr;
    ball[index].theta = PI - ball[index].theta;
    }
    //bottom
    if (ball[index].Center_Pos.y >= (m_DeskOrig.y+m_DeskY-ballr) )
    {
    ball[index].Center_Pos.y = m_DeskOrig.y+m_DeskY-ballr;
    ball[index].theta = -ball[index].theta;
    }
    //left
    if ( ball[index].Center_Pos.x <= m_DeskOrig.x+ballr )
    {
    ball[index].Center_Pos.x = m_DeskOrig.x+ballr;
    ball[index].theta = PI - ball[index].theta;
    }
    //top
    if (ball[index].Center_Pos.y <= m_DeskOrig.y+ballr)
    {
    ball[index].Center_Pos.y = m_DeskOrig.y+ballr;
    ball[index].theta = -ball[index].theta;
    }
    }
    球的数据结构,还有就是与窗口碰撞的函数,