Exemplo n.º 1
0
GNode::GNode(QGraphicsItem* parent, QGraphicsScene *scene):QGraphicsItem(parent) {
    if (scene) scene->addItem(this);
    setFlag(ItemIsMovable);
    setFlag(ItemIsSelectable);
    setFlag(ItemIsFocusable);
    setAcceptHoverEvents(true);
    setVisible(true);

    setZValue(1);
    setFixedPosition(false);
    setPos(0,0);

    _boxHeight=10;
    _boxWidth=10;
    _nodeSize=5;
    
    _brush = QBrush(Qt::black);
	_graph = NULL;
    px = 0;
    py = 0;
    vx = 0;
    vy = 0;
    fx = 0;
    fy = 0;
}
FixedBackgroundImageLayerAndroid::FixedBackgroundImageLayerAndroid(PassRefPtr<RenderStyle> aStyle,
                                                                   int w, int h)
    : LayerAndroid((RenderLayer*)0)
    , m_width(w)
    , m_height(h)
{
    RefPtr<RenderStyle> style = aStyle;
    FillLayer* layers = style->accessBackgroundLayers();
    StyleImage* styleImage = layers->image();
    CachedImage* cachedImage = static_cast<StyleCachedImage*>(styleImage)->cachedImage();
    WebCore::Image* image = cachedImage->image();
    setContentsImage(image->nativeImageForCurrentFrame());
    setSize(image->width(), image->height());

    setIntrinsicallyComposited(true);

    SkLength left, top;
    left = SkLength::convertLength(style->backgroundXPosition());
    top = SkLength::convertLength(style->backgroundYPosition());

    BackgroundImagePositioning* position = new BackgroundImagePositioning(this);
    position->setRepeatX(style->backgroundRepeatX() != WebCore::NoRepeatFill);
    position->setRepeatY(style->backgroundRepeatY() != WebCore::NoRepeatFill);

    setFixedPosition(position);
    position->setPosition(left, top);

#ifdef DEBUG_COUNT
    ClassTracker::instance()->increment("FixedBackgroundImageLayerAndroid");
#endif
}
Exemplo n.º 3
0
void SweeperLiveScene::startGeneration()
{
	// 显示当前时代;
	int nGeneration = GeneticAlgorithm::instance()->getGeneration();
	char szGeneration[32];
	sprintf(szGeneration, "Generation: %d", nGeneration);
	m_labelGeneration->setString(szGeneration);

	// 计数归零;
	m_generationCurrentTicks = 0;

	// 适应值归零,重新设计基因;
	for (int i=0; i<CONSTANTS.SweeperNumber; ++i)
	{
		auto sweeper = m_sweepers[i];

		// 设置随机位置;
		sweeper->setFixedPosition(this->randomFixedPosition());

		// 适应值归零;
		sweeper->resetFitness();

		// 设置基因;
		const auto &genes = GeneticAlgorithm::instance()->getGenome(i);
		sweeper->setGenome(genes);
	}
}
Exemplo n.º 4
0
bool SweeperStatisticsScene::init()
{
	if (!BaseScene::init())
	{
		return false;
	}

	// 创建时代显示标签;
	m_labelGeneration = Label::createWithSystemFont("Generation: 0", "Arial", 20);
	m_labelGeneration->setAnchorPoint(Vec2(0, 1));
	m_labelGeneration->setPosition(DISPLAY->left(), DISPLAY->top());
	this->addChild(m_labelGeneration);

	// 创建切换按钮;
	auto label = Label::createWithSystemFont("Switch Live", "Arial", 20);
	auto item = MenuItemLabel::create(label, [=](Ref *) {
		auto scene = SweeperLiveScene::create();
		Director::getInstance()->replaceScene(scene);
	});
	auto menu = Menu::create(item, nullptr);
	menu->setPosition(DISPLAY->right()-100, DISPLAY->top()-20);
	this->addChild(menu);

	// 创建地雷;
	for (int i=0; i<CONSTANTS.MineNumber; ++i)
	{
		auto mine = MineObject::create(nullptr);
		m_mines.insert(mine);

		// 设置随机位置;
		mine->setFixedPosition(this->randomFixedPosition());
	}

	// 创建sweeper;
	for (int i=0; i<CONSTANTS.SweeperNumber; ++i)
	{
		auto sweeper = SweeperObject::create(nullptr);
		sweeper->setFixedSize(FixedSize(20, 20));
		m_sweepers.push_back(sweeper);

		// 设置随机位置;
		sweeper->setFixedPosition(this->randomFixedPosition());

		// 设置基因;
		const auto &genes = GeneticAlgorithm::instance()->getGenome(i);
		sweeper->setGenome(genes);
	}

	// 创建统计曲线渲染器;
	m_coordinateRenderer = DrawNode::create();
	this->addChild(m_coordinateRenderer);
	m_bestFitnessRenderer = DrawNode::create();
	this->addChild(m_bestFitnessRenderer);
	m_averageFitnessRenderer = DrawNode::create();
	this->addChild(m_averageFitnessRenderer);
	m_worstFitnessRenderer = DrawNode::create();
	this->addChild(m_worstFitnessRenderer);

	m_labelBestFitness = Label::createWithSystemFont("", "Arial", 18);
	m_labelBestFitness->setPosition(200, 550);
	m_labelBestFitness->setTextColor(Color4B(0, 255, 0, 255));
	this->addChild(m_labelBestFitness);

	m_labelAverageFitness = Label::createWithSystemFont("", "Arial", 18);
	m_labelAverageFitness->setPosition(400, 550);
	m_labelAverageFitness->setTextColor(Color4B(0, 0, 255, 255));
	this->addChild(m_labelAverageFitness);

	m_labelWorstFitness = Label::createWithSystemFont("", "Arial", 18);
	m_labelWorstFitness->setPosition(600, 550);
	m_labelWorstFitness->setTextColor(Color4B(255, 0, 0, 255));
	this->addChild(m_labelWorstFitness);


	// 开始时代;
	this->startGeneration();

	// 绘制统计图;
	this->drawStatistics();

	// 注册更新回调;
	this->scheduleUpdate();

	return true;
}
Exemplo n.º 5
0
bool SweeperLiveScene::init()
{
	if (!BaseScene::init())
	{
		return false;
	}

	// 创建时代显示标签;
	m_labelGeneration = Label::createWithSystemFont("Generation: 0", "Arial", 20);
	m_labelGeneration->setAnchorPoint(Vec2(0, 1));
	m_labelGeneration->setPosition(DISPLAY->left(), DISPLAY->top());
	this->addChild(m_labelGeneration);

	// 创建切换按钮;
	auto label = Label::createWithSystemFont("Switch Statistics", "Arial", 20);
	auto item = MenuItemLabel::create(label, [=](Ref *) {
		auto scene = SweeperStatisticsScene::create();
		Director::getInstance()->replaceScene(scene);
		return;
	});
	auto menu = Menu::create(item, nullptr);
	menu->setPosition(DISPLAY->right()-100, DISPLAY->top()-20);
	this->addChild(menu);

	// 创建地雷;
	for (int i=0; i<CONSTANTS.MineNumber; ++i)
	{
		MineView *mineView = nullptr;
		mineView = MineView::create();
		this->addChild(mineView);
		auto mine = MineObject::create(mineView);
		m_mines.insert(mine);

		// 设置随机位置;
		mine->setFixedPosition(this->randomFixedPosition());
	}

	// 创建sweeper;
	for (int i=0; i<CONSTANTS.SweeperNumber; ++i)
	{
		SweeperView *sweeperView = nullptr;
		sweeperView = SweeperView::create();
		this->addChild(sweeperView);
		auto sweeper = SweeperObject::create(sweeperView);
		sweeper->setFixedSize(FixedSize(20, 20));
		m_sweepers.push_back(sweeper);

		// 设置随机位置;
		sweeper->setFixedPosition(this->randomFixedPosition());

		// 设置基因;
		const auto &genes = GeneticAlgorithm::instance()->getGenome(i);
		sweeper->setGenome(genes);
	}

	// 开始新时代;
	this->startGeneration();

	// 注册回调;
	this->scheduleUpdate();

	return true;
}