当前位置: 首页>>代码示例>>C++>>正文


C++ player::get_size方法代码示例

本文整理汇总了C++中player::get_size方法的典型用法代码示例。如果您正苦于以下问题:C++ player::get_size方法的具体用法?C++ player::get_size怎么用?C++ player::get_size使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在player的用法示例。


在下文中一共展示了player::get_size方法的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());
	}
开发者ID:quartorz,项目名称:quote,代码行数:60,代码来源:shooting.hpp


注:本文中的player::get_size方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。