30分!请教一个小问题!!(女生新学VC,请帮帮忙了)

gxz1983 2006-09-07 10:37:04
我现在正用VC++做一个打砖块的小游戏,基本的框架已经做好了,但是,小球弹起与砖块相撞后,对应的砖块消失,这个地方的代码不会写了,我想请教哪位好心的GG,能帮我解决一下。谢谢!!
...全文
379 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
gxz1983 2006-09-08
  • 打赏
  • 举报
回复
还有,如果下次还遇到不会时,希望能够得到你的帮助!哈哈,太贪心了。
gxz1983 2006-09-08
  • 打赏
  • 举报
回复
谢谢你的代码和说明,我已经完成那个操作了。呵呵,十分感谢!
palmax 2006-09-07
  • 打赏
  • 举报
回复
哦 就是说有时碰撞一个砖块和该砖块颜色相同的也会消掉,这样的话是应该用颜色来判断了,碰了后颜色可以设置为CLR_NONE吗或者用透明的画刷刷一下?

gxz1983 2006-09-07
  • 打赏
  • 举报
回复
你说的意思是,小球左上角的坐标在哪个砖块覆盖的范围内。用这种方法来判断是哪个砖块和小球发生碰撞。(我是用颜色判断碰撞的)
这种方法会出错:和小球发生碰撞的砖块和消失的砖块有时不是同一个啊。
palmax 2006-09-07
  • 打赏
  • 举报
回复
游戏程序我也没做过,不过小球运动的时候的坐标你总知道吧,碰撞的话坐标应该满足
ptInRect(rcBlock, point)吧?
gxz1983 2006-09-07
  • 打赏
  • 举报
回复
呵呵,我真的是新学,只是公司要我边学边做,做一个游戏,我这还是试用期阿 ,所以一定要做好阿,要不然我就会失业啊!嘿嘿.....
说正题吧
你说的有道理,但是我怎么才能知道要去掉哪块砖呢?
palmax 2006-09-07
  • 打赏
  • 举报
回复
都开始做游戏了,还说是新学-_-!

那个砖块是图片的话,可以把那个图片销毁或者换一个透明的图片上去
xl5338870 2006-09-07
  • 打赏
  • 举报
回复
难点在于快速的碰撞检测

struct Ball {
int x, y;
int vx, vy;
};

struct Block {
int left, right;
int top, bottom;
};

struct Scene {
list<Block> m_blocklist;
//... others
};

void PaintBall(Ball *pball, HDC hdc)

int HitTest(Ball *pball, Block *pblock)
{
...//判断球是否接触到砖块的边界线, 如果检测到碰撞则改变球的速度
}

............

OnPaint() {
drawScene(scene, ball);
}

OnTimer {
对场景中的每一个砖块,进行HitTest
// ... 其他事情
}
gxz1983 2006-09-07
  • 打赏
  • 举报
回复
谢谢你的代码.
但好象只有小球和墙壁碰撞时,执行的操作.没有小球和砖块碰撞的代码.
能不能再详细点呢.如果有源码就更好了.麻烦你了!
xl5338870 2006-09-07
  • 打赏
  • 举报
回复
class CBoundView {
...
RECT m_rectclient; // 显示球的边缘矩形
POINT m_ptball; // 球的位置
int m_vx, m_vy; // 速度
BOOL m_bBallRunning; // 球在动吗

OnPaint() {
// draw the background and the ball
}

OnEraseBkGnd() {
return ;
}

OnTimer() {
// update ball position
m_ptball.x += m_vx;
m_ptball.y += m_vy;

if (m_ptball.x < 0) { // 碰到左边墙
m_ptball.x = 0;
m_vx = -1 * m_vx; // 改变速度
}
if (m_ptball.x > rect.right) { // 碰到右边墙
m_ptball.x = rect.right;
m_vx = -1 * m_vx; // 改变速度
}
if (m_ptball.y < 0) {
...
}
if (m_ptball.y > rect.bottom) {
...
}

InvalidateWindow(); // 更新窗口
}

};

gxz1983 2006-09-07
  • 打赏
  • 举报
回复
::palmax(南宫煌)
我不是那个意思,让你理解错了。
我说的用颜色判断,是判断小球与砖块相撞,是否发生反弹,不是来让砖块消失的。
mekiss 2006-09-07
  • 打赏
  • 举报
回复
学习下

2,586

社区成员

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

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