double ModNeatExperiment7::readDoubleFromXml(string xmlCompleteFileName, string attribute) {
  	TiXmlDocument doc1(xmlCompleteFileName);
  	doc1.LoadFile();
  	if (doc1.Error()) {
  		screen << "XML error. Exiting..." << endl;
  		fflush(stdout);
  		exit(-1);
  	}
  	TiXmlElement *root = doc1.FirstChildElement();

  	if (root == NULL) {
  		screen << "root is NULL. Exiting..." << endl;
  		fflush(stdout);
  		exit(-1);
  	}

  	double value;
  	const char* valueStr = root->Attribute(attribute.c_str(),	&value);

  	if (valueStr == NULL) {
  		screen << "attribute " << attribute << " is NULL. Exiting..." << endl;
  		fflush(stdout);
  		exit(-1);
  	}

  	return value;
  }
Beispiel #2
0
main(int argc, char **argv)
{
	fieldinfos fis;
	fix_document doc1(10);
	dyn_document doc2;

	document_helper h1(&doc1, fis);
	document_helper h2(&doc2, fis);

	return 0;
}
Beispiel #3
0
main(int argc, char **argv)
{
	slab_cache_init(100, 0, 0, NULL, NULL);

	fieldinfos fis;
	fix_document doc1(1, 10);
	dyn_document doc2(2);

	document_helper h1(&doc1, fis);
	document_helper h2(&doc2, fis);

	long i = 100;
	double d = 100.1234;
	char *s = "string";

	fis.add("f1", TDT_STRING);
	fis.add("f2", TDT_LONG);
	fis.add("f3", TDT_DOUBLE);

	h1.add("f1", s);
	h1.add("f2", &i);
	h1.add("f3", &d);

	h2.add("f1", s);
	h2.add("f2", &i);
	h2.add("f3", &d);

	std::cout << fis.i2n(0) << ": " << (char *)doc1.field_data(0) << std::endl;
	std::cout << fis.i2n(1) << ": " << *(long *)doc1.field_data(1) << std::endl;
	std::cout << fis.i2n(2) << ": " << *(double *)doc1.field_data(2) << std::endl;

	std::cout << fis.i2n(0) << ": " << (char *)doc2.field_data(0) << std::endl;
	std::cout << fis.i2n(1) << ": " << *(long *)doc2.field_data(1) << std::endl;
	std::cout << fis.i2n(2) << ": " << *(double *)doc2.field_data(2) << std::endl;

	//std::string qs = "n1 > 01 AND (n2 < 0x2 OR n3 <= 3) NOT n4 >= 4. AND n5 == .5 AND n6 != 6.3 AND n7: (4.e10,.5e11) OR n8:(2.3e1,3e4] OR n9:[04e4,5223.2323e4) OR n10:[2,9]";
	std::string qs = "n1 > ";
	ccFlexLexer lexer(new std::istringstream(qs), &std::cout);
	query_exp<document_helper>* exp = NULL;

	yy::query_parser parser(&lexer, &exp);
	if (parser.parse() != 0) {
		std::cerr << "parse failed" << std::endl;
	}
	else {
		std::cout << "iQuery: " << qs << std::endl;
		std::cout << "Parsed: " << exp->to_string() << std::endl;
	}

	return 0;
}
  shared_ptr<NEAT::GeneticIndividual> ModNeatExperiment7::readCppnFromXml(string xmlCompleteFileName) {
  	TiXmlDocument doc1(xmlCompleteFileName);
  	doc1.LoadFile();
  	if (doc1.Error()) {
  		screen << "XML error. Exiting..." << endl;
  		fflush(stdout);
  		exit(-1);
  	}
  	TiXmlElement *root = doc1.FirstChildElement();

  	if (root == NULL) {
  		screen << "root is NULL. Exiting..." << endl;
  		fflush(stdout);
  		exit(-1);
  	}
  	return boost::shared_ptr<GeneticIndividual>(new GeneticIndividual(root));
  }
Beispiel #5
0
void BucketTest::testBucketGeneration()
{
    BucketIdFactory factory;
    DocumentId doc1("doc:ns:spec");
    DocumentId doc2("doc:ns2:spec");
    DocumentId doc3("doc:ns:spec2");
    DocumentId userDoc1("userdoc:ns:18:spec");
    DocumentId userDoc2("userdoc:ns2:18:spec2");
    DocumentId userDoc3("userdoc:ns:19:spec");
    DocumentId groupDoc1("groupdoc:ns:yahoo.com:spec");
    DocumentId groupDoc2("groupdoc:ns2:yahoo.com:spec2");
    DocumentId groupDoc3("groupdoc:ns:yahoo:spec");
    DocumentId orderDoc1("orderdoc(31,19):ns:13:1268182861:foo");
    DocumentId orderDoc2("orderdoc(31,19):ns:13:1205110861:foo");
    DocumentId orderDoc3("orderdoc(31,19):ns:13:1205715661:foo");
    DocumentId orderDoc4("orderdoc(4,0):ns:13:2:foo");
    DocumentId orderDoc5("orderdoc(4,0):ns:13:4:foo");
    DocumentId orderDoc6("orderdoc(4,0):ns:13:11:foo");

    BucketId docBucket1(factory.getBucketId(doc1));
    BucketId docBucket2(factory.getBucketId(doc2));
    BucketId docBucket3(factory.getBucketId(doc3));
    BucketId userDocBucket1(factory.getBucketId(userDoc1));
    BucketId userDocBucket2(factory.getBucketId(userDoc2));
    BucketId userDocBucket3(factory.getBucketId(userDoc3));
    BucketId groupDocBucket1(factory.getBucketId(groupDoc1));
    BucketId groupDocBucket2(factory.getBucketId(groupDoc2));
    BucketId groupDocBucket3(factory.getBucketId(groupDoc3));
    BucketId orderDocBucket1(factory.getBucketId(orderDoc1));
    BucketId orderDocBucket2(factory.getBucketId(orderDoc2));
    BucketId orderDocBucket3(factory.getBucketId(orderDoc3));
    BucketId orderDocBucket4(factory.getBucketId(orderDoc4));
    BucketId orderDocBucket5(factory.getBucketId(orderDoc5));
    BucketId orderDocBucket6(factory.getBucketId(orderDoc6));

    CPPUNIT_ASSERT_EQUAL(Hex(0xe99703f200000012ull), Hex(userDocBucket1.getRawId()));
    CPPUNIT_ASSERT_EQUAL(Hex(0xebfa518a00000012ull), Hex(userDocBucket2.getRawId()));
    CPPUNIT_ASSERT_EQUAL(Hex(0xeac1850800000013ull), Hex(userDocBucket3.getRawId()));

    CPPUNIT_ASSERT_EQUAL(Hex(0xeae764e90000000dull), Hex(orderDocBucket1.getRawId()));
    CPPUNIT_ASSERT_EQUAL(Hex(0xeacb85f10000000dull), Hex(orderDocBucket2.getRawId()));
    CPPUNIT_ASSERT_EQUAL(Hex(0xea68ddf10000000dull), Hex(orderDocBucket3.getRawId()));

    CPPUNIT_ASSERT_EQUAL(Hex(0xe87526540000000dull), Hex(orderDocBucket4.getRawId()));
    CPPUNIT_ASSERT_EQUAL(Hex(0xea59f8f20000000dull), Hex(orderDocBucket5.getRawId()));
    CPPUNIT_ASSERT_EQUAL(Hex(0xe9eb703d0000000dull), Hex(orderDocBucket6.getRawId()));

    userDocBucket1.setUsedBits(16);
    CPPUNIT_ASSERT_EQUAL(Hex(0x4000000000000012ull), Hex(userDocBucket1.getId()));
    userDocBucket2.setUsedBits(16);
    CPPUNIT_ASSERT_EQUAL(Hex(0x4000000000000012ull), Hex(userDocBucket2.getId()));
    userDocBucket3.setUsedBits(16);
    CPPUNIT_ASSERT_EQUAL(Hex(0x4000000000000013ull), Hex(userDocBucket3.getId()));

    CPPUNIT_ASSERT_EQUAL(Hex(0xe90ce4b09a1acd50ull), Hex(groupDocBucket1.getRawId()));
    CPPUNIT_ASSERT_EQUAL(Hex(0xe9cedaa49a1acd50ull), Hex(groupDocBucket2.getRawId()));
    CPPUNIT_ASSERT_EQUAL(Hex(0xe8cdb18bafe81f24ull), Hex(groupDocBucket3.getRawId()));

    groupDocBucket1.setUsedBits(16);
    CPPUNIT_ASSERT_EQUAL(Hex(0x400000000000cd50ull), Hex(groupDocBucket1.getId()));
    groupDocBucket2.setUsedBits(16);
    CPPUNIT_ASSERT_EQUAL(Hex(0x400000000000cd50ull), Hex(groupDocBucket2.getId()));
    groupDocBucket3.setUsedBits(16);
    CPPUNIT_ASSERT_EQUAL(Hex(0x4000000000001f24ull), Hex(groupDocBucket3.getId()));

    CPPUNIT_ASSERT_EQUAL(Hex(0xe980c9abd5fd8d11ull), Hex(docBucket1.getRawId()));
    CPPUNIT_ASSERT_EQUAL(Hex(0xeafe870c5f9c37b9ull), Hex(docBucket2.getRawId()));
    CPPUNIT_ASSERT_EQUAL(Hex(0xeaebe9473ecbcd69ull), Hex(docBucket3.getRawId()));

    docBucket1.setUsedBits(16);
    CPPUNIT_ASSERT_EQUAL(Hex(0x4000000000008d11ull), Hex(docBucket1.getId()));
    docBucket2.setUsedBits(16);
    CPPUNIT_ASSERT_EQUAL(Hex(0x40000000000037b9ull), Hex(docBucket2.getId()));
    docBucket3.setUsedBits(16);
    CPPUNIT_ASSERT_EQUAL(Hex(0x400000000000cd69ull), Hex(docBucket3.getId()));
}
Beispiel #6
0
bool Npc::fireToNpc(int pos)
{
    if (!_loader->_db.isOpen())
    {
        if (!_loader->_db.open())
        {
            qDebug() << "Ошибка соединения к базе данных:" << _loader->_db.lastError();
            exit(-1);
        }
    }
    QChar fireToClass = ' ';
    QSqlQuery q1;
    q1.prepare("SELECT data FROM map WHERE map_id=:map_id");
    q1.bindValue(":map_id", _player->_map);
    q1.exec();
    QString data = "";
    if (q1.next())
    {
        data = q1.value(0).toString();
    }
    if (data == "")
    {
        return false;
    }
    fireToClass = data[pos];
    QSqlQuery q12;
    q12.prepare("SELECT count(map) FROM ship_point WHERE map=:map AND pos=:pos");
    q12.bindValue(":map", _player->_map);
    q12.bindValue(":pos", pos);
    q12.exec();
    _found = false;
    if (q12.next())
    {
        if (q12.value(0).toInt() == 1)
        {
            _found = true;
        }
    }
    if (!_found)
    {
        QSqlQuery q2;
        q2.prepare("SELECT life FROM ship_body WHERE class=:fireclass");
        q2.bindValue(":fireclass", fireToClass);
        q2.exec();
        int life = 0;
        if (q2.next())
        {
            life = q2.value(0).toInt();
        }
        if (life == 0)
        {
            return false;
        }
        life = (life - 100) + rand()%100;
        QSqlQuery q6;
        q6.prepare("INSERT INTO ship_point(ship_id, life, energy, armor, fuel, life_gen, "
                   "energy_gen, armor_gen, net_speed, cartograph_link, grab_points, "
                   "radar_ships, scaner_predm, fire, fire_speed, fire_link, map, pos) VALUES("
                   ":ship_id, :life, 0, 0, :fuel, 0, 0,0,0,0,0,0,0,0,0,0,:map,:pos)");
        q6.bindValue(":ship_id", 0);
        q6.bindValue(":life", life);
        q6.bindValue(":fuel", 25);
        q6.bindValue(":map", _player->_map);
        q6.bindValue(":pos", pos);
        q6.exec();
    }
    QSqlQuery q3;
    q3.prepare("SELECT ship_id FROM ship WHERE player_id=:player_id");
    q3.bindValue(":player_id", _player->_player_id);
    q3.exec();
    int ship_id = 0;
    if (q3.next())
    {
        ship_id = q3.value(0).toInt();
    }
    if (ship_id == 0)
    {
        return false;
    }
    QSqlQuery q4;
    q4.prepare("SELECT fire FROM ship_point WHERE ship_id=:ship_id");
    q4.bindValue(":ship_id", ship_id);
    q4.exec();
    int fire = 0;
    if (q4.next())
    {
        fire = q4.value(0).toInt();
    }
    if (fire == 0)
    {
        return false;
    }
    QSqlQuery q7;
    q7.prepare("SELECT life FROM ship_point WHERE map=:map AND pos=:pos");
    q7.bindValue(":map", _player->_map);
    q7.bindValue(":pos", pos);
    q7.exec();
    int npc_life = 0;
    if (q7.next())
    {
        npc_life = q7.value(0).toInt();
    }
    if (npc_life == 0)
    {
        return false;
    }
    npc_life -= fire;
    int opit = 0, kills = 0;
    if (npc_life <= 0)
    {
        QSqlQuery q9;
        q9.prepare("DELETE FROM ship_point WHERE map=:map AND pos=:pos");
        q9.bindValue(":map", _player->_map);
        q9.bindValue(":pos", pos);
        q9.exec();
        opit = 20;
        kills = 1;
        _killed = true;
        qDebug() << "[" << _player->_player_id << "]" << "огонь по " << fireToClass << " убит.";
        QSqlQuery q13;
        q13.prepare("SELECT data FROM map WHERE map_id=:id");
        q13.bindValue(":id", _player->_map);
        q13.exec();
        QString data;
        if (q13.next())
        {
            data = q13.value(0).toString();
        }
        data[pos] = ' ';
        QSqlQuery q16;
        q16.prepare("UPDATE map SET data=:data WHERE map_id=:id");
        q16.bindValue(":id", _player->_map);
        q16.bindValue(":data", data);
        q16.exec();
        QSqlQuery q17;
        int mission_id = 0;
        q17.prepare("SELECT params_json, id FROM mission WHERE player_id=:id");
        q17.bindValue(":id", _player->_player_id);
        q17.exec();
        while (q17.next())
        {
            QString json = q17.value(0).toString();
            mission_id = q17.value(1).toInt();
            QJsonDocument doc = QJsonDocument::fromJson(json.toUtf8());
            QJsonObject obj = doc.object();
            QJsonObject::iterator it = obj.begin();
            QJsonObject obj1;
            while (it!= obj.end())
            {
                QString str = QString::fromUtf8(it.key().toStdString().c_str());
                if (str.contains("kill") && fireToClass == it.value().toString().at(0))
                {
                    //nothing to do..
                } else
                {
                    obj1.insert(it.key(), it.value());
                }
                it++;
            }
            if (obj1.count() == 1)
            {
                QString priz = obj1.value("priz").toString();
                QSqlQuery q21;
                q21.prepare("SELECT ship_id FROM ship WHERE player_id=:id");
                q21.bindValue(":id", _player->_player_id);
                q21.exec();
                int ship_bonus_id=0;
                if (q21.next())
                {
                    ship_bonus_id = q21.value(0).toInt();
                }
                if (priz == "cartograph")
                {
                    QSqlQuery q20;
                    q20.prepare("UPDATE ship SET cartograph=1 WHERE player_id=:id");
                    q20.bindValue(":id", _player->_player_id);
                    q20.exec();
                    int link = rand()%10;
                    QSqlQuery q22;
                    q22.prepare("UPDATE ship_point SET cartograph_link=:link WHERE ship_id=:id");
                    q22.bindValue(":link", link);
                    q22.bindValue(":id", ship_bonus_id);
                    q22.exec();
                    qDebug() << "[" << _player->_player_id << "] " << "Выигран бонус картограф!";
                    _player->_bonus = 1;
                } else if (priz == "droid")
                {
                    QSqlQuery q23;
                    int time = rand()%10;
                    int points = rand()%10;
                    q23.prepare("INSERT INTO droid(player_id, class, time, points) VALUES(:id, :class, :time, :points)");
                    q23.bindValue(":id", _player->_player_id);
                    q23.bindValue(":class", "A");
                    q23.bindValue(":time", QDateTime::currentDateTime().addDays(time));
                    q23.bindValue(":points", points);
                    q23.exec();
                    qDebug() << "[" << _player->_player_id << "] " << "Выигран бонус дроид!";
                    _player->_bonus = 2;
                }
                QSqlQuery q24;
                q24.prepare("DELETE FROM mission WHERE id=:id");
                q24.bindValue(":id", mission_id);
                q24.exec();
            }
            QJsonDocument doc1(obj1);
            QSqlQuery q25;
            QString str = QString::fromUtf8(doc1.toJson(QJsonDocument::Compact).toStdString().c_str());
            q25.prepare("UPDATE mission SET params_json=:str WHERE id=:id");
            q25.bindValue(":id", mission_id);
            q25.bindValue(":str", str);
            q25.exec();
        }
    } else
    {
        QSqlQuery q8;
        q8.prepare("UPDATE ship_point SET life=:life WHERE map=:map AND pos=:pos");
        q8.bindValue(":map", _player->_map);
        q8.bindValue(":pos", pos);
        q8.bindValue(":life", npc_life);
        q8.exec();
        opit = 10;
        qDebug() << "[" << _player->_player_id << "]" << "огонь по " << fireToClass << " урон = " << fire;
    }
    QSqlQuery q10;
    q10.prepare("SELECT exp, kills FROM rating WHERE player_id=:player_id");
    q10.bindValue(":player_id", _player->_player_id);
    q10.exec();
    int exp = 0, kills_base = 0;
    if (q10.next())
    {
        exp = q10.value(0).toInt();
        kills_base = q10.value(1).toInt();
    }
    exp+=opit;
    kills_base+=kills;
    QSqlQuery q11;
    q11.prepare("UPDATE rating SET exp=:exp, kills=:kills WHERE player_id=:player_id");
    q11.bindValue(":exp", exp);
    q11.bindValue(":kills", kills_base);
    q11.bindValue(":player_id", _player->_player_id);
    q11.exec();
    QSqlQuery q13;
    q13.prepare("SELECT level FROM player WHERE player_id=:id");
    q13.bindValue(":id", _player->_player_id);
    q13.exec();
    int level = 0;
    if (q13.next())
    {
        level = q13.value(0).toInt();
    }
    if (level == 0)
    {
        qDebug() << "Ошибка level поврежден.";
        exit(-1);
    }
    _levelup = false;
    if (level >= 1 && level <=10)
    {
        if (exp >=1300000)
        {
            _levelup = true;
        }
    }
    if (level >= 11 && level <=20)
    {
        if (exp >=2100000)
        {
            _levelup = true;
        }
    }
    if (level >= 21 && level <=30)
    {
        if (exp >=3300000)
        {
            _levelup = true;
        }
    }
    if (level >= 31 && level <=40)
    {
        if (exp >=4400000)
        {
            _levelup = true;
        }
    }
    if (level >= 41 && level <=50)
    {
        if (exp >=5500000)
        {
            _levelup = true;
        }
    }
    if (level >= 51 && level <=60)
    {
        if (exp >=7700000)
        {
            _levelup = true;
        }
    }
    if (_levelup)
    {
        level++;
        qDebug() << "Игрок с id = " << QString::number(_player->_player_id) << " Повышение уровня. "
                 << level;
        QSqlQuery q14;
        q14.prepare("UPDATE rating SET exp=:exp WHERE player_id=:player_id");
        q14.bindValue(":player_id", _player->_player_id);
        q14.bindValue(":exp", 0);
        q14.exec();
        QSqlQuery q15;
        q15.prepare("UPDATE player SET level=:level WHERE player_id=:player_id");
        q15.bindValue(":player_id", _player->_player_id);
        q15.bindValue(":level", level);
        q15.exec();
        _player->_level = level;
    }
    return true;
}