社区
资源
帖子详情
30分!请教一个小问题!!(女生新学VC,请帮帮忙了)
gxz1983
2006-09-07 10:37:04
我现在正用VC++做一个打砖块的小游戏,基本的框架已经做好了,但是,小球弹起与砖块相撞后,对应的砖块消失,这个地方的代码不会写了,我想请教哪位好心的GG,能帮我解决一下。谢谢!!
...全文
379
12
打赏
收藏
30分!请教一个小问题!!(女生新学VC,请帮帮忙了)
我现在正用VC++做一个打砖块的小游戏,基本的框架已经做好了,但是,小球弹起与砖块相撞后,对应的砖块消失,这个地方的代码不会写了,我想请教哪位好心的GG,能帮我解决一下。谢谢!!
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用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
打赏
举报
回复
学习下
android小程序源码
android小程序源码,给
新学
android的童鞋很好的帮助!!
燕十八javascript笔记
关于谈笑间学会js的课程文档总结,对
新学
js的小伙伴很有用哟!
struts2+hibernate 注册与登陆源代码
这是为
新学
Struts2+Hibernate整合的
一个
小实例,是在MyEclispe 8.0中开发的,注册加入Struts2 和 Hibernate3.2的JAR包
两个
vc
差错
问题
的心得
这连个
问题
一个
是关于数据库的
问题
,另
一个
问题
是一位
新学
vc
的同学犯的
一个
比较基础的错误。虽然是两个不同的
问题
,但是我发现这两个不同的
问题
之间有着共同点,在这里和大家
分
享。 第
一个
问题
是这样的:有
一个
同学...
vc
编程笔记0
并不是
新学
vc
编程,这次是在看孙鑫的视频,所以记点笔记。... 创建
一个
窗口的四个步骤: 1.首先注册窗口类。 2.创建窗口。 3.显示和更新窗口。 4.消息队列。 #include #include
资源
2,586
社区成员
18,441
社区内容
发帖
与我相关
我的任务
资源
VC/MFC 资源
复制链接
扫一扫
分享
社区描述
VC/MFC 资源
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章