嘿所以我正在进行我的乒乓球比赛,并且发现每次我想要产生一个新的精灵球时我都非常繁琐,因此我最终会非常重复:
sf::Image img;
img.Create(30,50,sf::Color(255,0,0));
mySprite box(img, sf::Vector2f(0,300), sf::Vector2f(1,1), 0, 36, 300); //TODO: make collision work at extremely high speeds
box.SetCenter(15,25);
sf::Image img2;
img2.Create(56.5,80,sf::Color(255,0,0));
mySprite box2(img2, sf::Vector2f(800,300), sf::Vector2f(1,1), 0, 239, 300);
box2.SetCenter(25,40);
sf::Image img3;
img3.Create(56.5,80,sf::Color(255,0,10));
mySprite box3(img3, sf::Vector2f(500,300), sf::Vector2f(1,1), 0, 135, 400);
box3.SetCenter(25,40);
sf::Image img4;
img4.Create(56.5,80,sf::Color(255,166,90));
mySprite box4(img4, sf::Vector2f(300,500), sf::Vector2f(1,1), 0, 10, 100);
box4.SetCenter(25,40);
创建一个Spawn()函数不起作用,因为我必须为每个新的sprite(因此box,box1,box2等)的sprite实例化创建一个新名称。我如何制作一个函数,以某种方式随机形成另一个我想要产生的球的名称?
答案 0 :(得分:2)
您无法随机生成变量名称。你会如何在你的代码中引用它们?
为什么不使用vector
来存储图像和框,然后使用循环来生成精灵:
std::vector<mySprite> boxes;
std::vector<Parameters> parameters;
for(std::vector<Parameters>::iterator it = parameters.begin();
it != parameters.end(); ++it) {
sf::Image img;
img.Create(it->param1, it->param2, it->color);
mySprite box(img, it->vector1, it->vector2, it->param3, it->param4,
it->param5);
box.SetCenter(it->center);
boxes.push_back(box);
}
这假设您有一个数据结构Parameters
,它可以容纳您需要的所有参数(名称比我示例中的名称更好)。然后循环遍历所有参数集,并为每个参数集创建精灵。