指针是如何运用的 auto ebits = ebs.begin(); while (ebits != ebs.end()) { //敌机子弹和主机碰撞模拟,HP-- if (RectDuangRect((*ebits)->GetRect(), hero.GetRect())) { delete(*ebits); ebits = ebs.erase(ebits); HP--; if (HP == 0) is_play = false; RECT a = hero.GetRect(); putimg(NULL, a.left, a.top, &sbombimg); break; }
时间: 2024-04-19 21:27:12 浏览: 206
在上述代码中,指针的运用如下:
1. 首先,使用`auto`关键字声明了一个名为`ebits`的变量,并将其初始化为`ebs`容器的起始迭代器。
2. 使用`while`循环遍历`ebs`容器中的元素,直到`ebits`迭代器等于`ebs.end()`,即到达容器的末尾。
3. 在循环中,通过解引用指针迭代器`(*ebits)`获取指向敌机子弹对象的指针,并调用其成员函数`GetRect()`获取敌机子弹的矩形区域。
4. 利用函数`RectDuangRect()`判断敌机子弹的矩形区域与主机的矩形区域是否相交,如果相交则进行碰撞模拟。
5. 如果发生碰撞,首先删除敌机子弹对象,通过`delete`关键字释放内存。
6. 调用容器的`erase()`函数删除指向该敌机子弹对象的迭代器,并返回指向下一个元素的迭代器。
7. 主机的HP减少1,如果HP减少到0,将`is_play`标志设置为`false`,表示游戏结束。
8. 获取主机的矩形区域,并使用函数`putimg()`在该区域绘制爆炸效果。
9. 使用`break`语句退出循环,只处理第一个碰撞的敌机子弹。
阅读全文