如何实现vc弹球游戏

戈壁上的月光 2007-12-14 09:09:49
想做一个弹球游戏,可不知道从哪下手,还请各位大侠多多指教。比如:算法啊什么的。
...全文
260 6 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
戈壁上的月光 2007-12-17
  • 打赏
  • 举报
回复
谢谢! 大体的设计思路是什么呢 ! 要分几个块实现?
ryfdizuo 2007-12-16
  • 打赏
  • 举报
回复

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;
}
}
球的数据结构,还有就是与窗口碰撞的函数,
戈壁上的月光 2007-12-16
  • 打赏
  • 举报
回复
应该是窗口碰撞!
蒋晟 2007-12-15
  • 打赏
  • 举报
回复
msdn2.microsoft.com/en-us/library/s3wsyb55(VS.80).aspx
ryfdizuo 2007-12-15
  • 打赏
  • 举报
回复
先从物理原理下手吧,弹球是物体与平面碰撞反弹吗,
如果是与窗口碰撞反弹还好,要是与一般的平面的话就麻烦了
戈壁上的月光 2007-12-15
  • 打赏
  • 举报
回复
老大都是工作到这么晚的吗,辛苦!
那个网站都是英文的啊 哭 !

19,471

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 图形处理/算法
社区管理员
  • 图形处理/算法社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧