コード例 #1
0
		void attackTest()
		{
			player1->setActive(true);

			// Set up terrain
			qrw::Terrain terrain1(qrw::ET_HILL, -1, +1);
			board->getSquare(0, 0)->setTerrain(&terrain1);

			qrw::Terrain terrain2(qrw::ET_HILL, +2, -1);
			board->getSquare(0, 1)->setTerrain(&terrain2);

			qrw::Unit::AttackResult result = unit1->attack(unit2);

			CPPUNIT_ASSERT_EQUAL(true, result.attackPerformed);
			CPPUNIT_ASSERT_EQUAL(3, result.attackerHPDelta);
			CPPUNIT_ASSERT_EQUAL(1, result.defenderHPDelta);

			CPPUNIT_ASSERT_EQUAL(2, unit1->getHP());
			CPPUNIT_ASSERT_EQUAL(4, unit2->getHP());

			// Check if attackPerformed is false if attacking was not able.
			result = unit2->attack(unit1);

			CPPUNIT_ASSERT_EQUAL(false, result.attackPerformed);

			// Check if movement was reset correctly
			CPPUNIT_ASSERT_EQUAL(0, unit1->getCurrentMovement());
			CPPUNIT_ASSERT_EQUAL(4, unit2->getCurrentMovement());
		}
コード例 #2
0
ファイル: main.cpp プロジェクト: Zephilinox/Pixel-Terrain
int main()
{
    std::srand(std::time(0));

    sf::RenderWindow window(sf::VideoMode(800, 800, 32), "Pixel Terrain");
    window.setVerticalSyncEnabled(true);

    Player player;
    PixelShape terrain1(sf::Vector2i(200, 200), sf::Vector2f(0, 0), sf::Color::Red);
    PixelShape terrain2(sf::Vector2i(200, 200), sf::Vector2f(200, 0), sf::Color::Blue);
    PixelShape terrain3(sf::Vector2i(200, 200), sf::Vector2f(200, 200), sf::Color::Green);
    PixelShape terrain4(sf::Vector2i(200, 200), sf::Vector2f(0, 200), sf::Color::Yellow);

    sf::Event event;
    sf::Time prevFrameTime(sf::seconds(1.f / 60.f));
    sf::Clock frameClock;
    while (window.isOpen())
    {
        while (window.pollEvent(event))
        {
            player.handleEvent(event);

            switch(event.type)
            {
                case sf::Event::Closed:
                {
                    window.close();
                    break;
                }

                case sf::Event::MouseButtonPressed:
                {
                    if (event.mouseButton.button == sf::Mouse::Left)
                    {
                        terrain1.destroy(sf::Vector2i(event.mouseButton.x, event.mouseButton.y), 50);
                        terrain2.destroy(sf::Vector2i(event.mouseButton.x, event.mouseButton.y), 50);
                        terrain3.destroy(sf::Vector2i(event.mouseButton.x, event.mouseButton.y), 50);
                        terrain4.destroy(sf::Vector2i(event.mouseButton.x, event.mouseButton.y), 50);
                    }
                    else
                    {
                        terrain1.create(sf::Vector2i(event.mouseButton.x, event.mouseButton.y), 50);
                        terrain2.create(sf::Vector2i(event.mouseButton.x, event.mouseButton.y), 50);
                        terrain3.create(sf::Vector2i(event.mouseButton.x, event.mouseButton.y), 50);
                        terrain4.create(sf::Vector2i(event.mouseButton.x, event.mouseButton.y), 50);
                    }

                    break;
                }

                default:
                {
                    break;
                }
            }
        }

        if (!checkCollision(player.getShape(), terrain1) &&
            !checkCollision(player.getShape(), terrain2) &&
            !checkCollision(player.getShape(), terrain3) &&
            !checkCollision(player.getShape(), terrain4))
        {
            Player player2 = player;
            player2.update(prevFrameTime.asSeconds());

            if (!checkCollision(player2.getShape(), terrain1) &&
                !checkCollision(player2.getShape(), terrain2) &&
                !checkCollision(player2.getShape(), terrain3) &&
                !checkCollision(player2.getShape(), terrain4))
            {
                player = player2;
            }
        }

        window.clear(sf::Color(40, 40, 40));

        window.draw(terrain1);
        window.draw(terrain2);
        window.draw(terrain3);
        window.draw(terrain4);
        window.draw(player);

        drawCollisionIntersection(player.getShape(), terrain1, window);
        drawCollisionIntersection(player.getShape(), terrain2, window);
        drawCollisionIntersection(player.getShape(), terrain3, window);
        drawCollisionIntersection(player.getShape(), terrain4, window);

        window.display();

        //std::cout << "FPS: " << 1.f / prevFrameTime.asSeconds() << "\n";
        prevFrameTime = frameClock.restart();
    }

    return 0;
}