本文整理汇总了C++中player::get_position方法的典型用法代码示例。如果您正苦于以下问题:C++ player::get_position方法的具体用法?C++ player::get_position怎么用?C++ player::get_position使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类player
的用法示例。
在下文中一共展示了player::get_position方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: move
void move()
{
for(auto &b: bullets){
if(b){
b.move();
}
}
player_.move();
auto p = player_.get_position();
auto r = paint::rect(p, player_.get_size());
auto s = get_size();
if(r.left < 0.f)
p.x = 0.f;
else if(r.right >= s.width)
p.x = s.width - 1.f - r.width();
if(r.top < 0.f)
p.y = 0.f;
else if(r.bottom >= s.height)
p.y = s.height - 1.f - r.height();
player_.set_position(p);
auto rect = get_rect();
for(auto it = enemy_bullets.begin(); it != enemy_bullets.end(); ++it){
(*it)->move(player_);
if((*it)->is_colliding(player_)){
gameover();
return;
}
float r = (*it)->get_radius();
if(!(*it)->get_center().is_inside(rect - paint::point(r, r) + paint::size(r, r))){
delete *it;
*it = nullptr;
}
}
enemy_bullets.erase(std::remove(enemy_bullets.begin(), enemy_bullets.end(), nullptr), enemy_bullets.end());
for(auto it = enemies.begin(); it != enemies.end(); ++it){
(*it)->move(player_, enemy_bullets);
if((*it)->is_colliding(player_)){
gameover();
return;
}
for(auto &b: bullets){
if(b && (*it)->is_colliding(b)){
b.set_active(false);
delete *it;
*it = nullptr;
break;
}
}
}
auto remover = std::remove(enemies.begin(), enemies.end(), nullptr);
score += static_cast<int>(std::distance(remover, enemies.end()));
enemies.erase(remover, enemies.end());
}