Пример #1
0
static void* json_thread()
{
    while (1) {
        usleep(time_interval * 1000);
        printJson();
    }
}
Пример #2
0
void LogInScene::getUserHistoryGameRequestCompleted(CCNode* sender,void* data){
    
    CCHttpResponse* response = (CCHttpResponse*)data;
    if (!response) {    return;     }
    int statusCode = response->getResponseCode();
    std::vector<char> *buffer = response->getResponseData();
    printJson(buffer);
    
    //1.解析
    string boardIdStr,WinTimesStr,LoseTimesStr;
    for (unsigned int i = 0; i < buffer->size(); i++) {
        //1.排行榜编号
        if ((*buffer)[i] == '"' && (*buffer)[i+1] == 'b' && (*buffer)[i+2] == 'o' && (*buffer)[i+3] == 'a' && (*buffer)[i+4] == 'r') {
            for (int j = i + 11; (*buffer)[j] != ','; j++) {   boardIdStr += (*buffer)[j];    }
        }
        //2.历史胜场
        else if ((*buffer)[i] == '"' && (*buffer)[i+1] == 'h' && (*buffer)[i+2] == 'i' && (*buffer)[i+3] == 's' && (*buffer)[i+4] == 't' && (*buffer)[i+9] == 'w' && (*buffer)[i+12] == '"') {
            for (int j = i + 14; (*buffer)[j] != ','; j++) {   WinTimesStr += (*buffer)[j];    }
        }
        //3.历史败场
        else if ((*buffer)[i] == '"' && (*buffer)[i+1] == 'h' && (*buffer)[i+2] == 'i' && (*buffer)[i+3] == 's' && (*buffer)[i+4] == 't' && (*buffer)[i+9] == 'l' && (*buffer)[i+13] == '"') {
            for (int j = i + 15; (*buffer)[j] != ','; j++) {   LoseTimesStr += (*buffer)[j];    }
        }
        
        //4.如果还没玩过这个
        if ((*buffer)[i] == '4' && (*buffer)[i+1] == '0' && (*buffer)[i+2] == '4') {
            boardNotFound = true;
            break;
        }
    }
    
    //2.计算rank
    if (boardNotFound)
        MainUser->Rank[tmpBoardID] = 0;
    else{
        int _id = atoi(boardIdStr.c_str());
        int WinTimes = atoi(WinTimesStr.c_str());
        int LoseTimes = atoi(LoseTimesStr.c_str());
        MainUser->Rank[tmpBoardID] = MainUser->calculateRank(_id,WinTimes,LoseTimes);
        cout<<_id<<":胜"<<WinTimes<<" 负"<<LoseTimes<<" Rank为"<<MainUser->Rank[tmpBoardID]<<endl;
    }
    
    //3.继续下一个题的rank
    if (tmpBoardID < 14) {
        tmpBoardID++;
        boardNotFound = false;
        getUserHistoryGame(tmpBoardID);
    }
    else
        box->closeMessageBox();
}
Пример #3
0
void ASUser::getHeroInformationRequestCompleted(cocos2d::CCNode *sender, void *data){
    
    for (int i = 0 ; i < 5 ; i++) {
        HeroLevel[i] = 0;
        HeroUnLocked[i] = false;
    }

    CCHttpResponse* response = (CCHttpResponse*)data;
    if (!response) {    return;     }
    int statusCode = response->getResponseCode();
    std::vector<char> *buffer = response->getResponseData();
    printJson(buffer);
    
    for (unsigned int i = 0; i < buffer->size(); i++) {
        //1.1 第1个英雄的等级情况
        if ((*buffer)[i] == '{' && (*buffer)[i+1] == '"' && (*buffer)[i+2] == 'a' && (*buffer)[i+3] == 'v' && (*buffer)[i+4] == 'a' && (*buffer)[i+13] == '0' && (*buffer)[i+14] == ','){
            HeroUnLocked[0] = true;
            for (int j = i+23;(*buffer)[j] != '}' ; j++) {  HeroLevelStr[0] += (*buffer)[j]; }
        }
        //1.2 第2个英雄的等级情况
        if ((*buffer)[i] == '{' && (*buffer)[i+1] == '"' && (*buffer)[i+2] == 'a' && (*buffer)[i+3] == 'v' && (*buffer)[i+4] == 'a' && (*buffer)[i+13] == '1' && (*buffer)[i+14] == ','){
            HeroUnLocked[1] = true;
            for (int j = i+23;(*buffer)[j] != '}' ; j++) {  HeroLevelStr[1] += (*buffer)[j]; }
        }
        //1.3 第3个英雄的等级情况
        if ((*buffer)[i] == '{' && (*buffer)[i+1] == '"' && (*buffer)[i+2] == 'a' && (*buffer)[i+3] == 'v' && (*buffer)[i+4] == 'a' && (*buffer)[i+13] == '2' && (*buffer)[i+14] == ','){
            HeroUnLocked[2] = true;
            for (int j = i+23;(*buffer)[j] != '}' ; j++) {  HeroLevelStr[2] += (*buffer)[j]; }
        }
        //1.4 第4个英雄的等级情况
        if ((*buffer)[i] == '{' && (*buffer)[i+1] == '"' && (*buffer)[i+2] == 'a' && (*buffer)[i+3] == 'v' && (*buffer)[i+4] == 'a' && (*buffer)[i+13] == '3' && (*buffer)[i+14] == ','){
            HeroUnLocked[3] = true;
            for (int j = i+23;(*buffer)[j] != '}' ; j++) {  HeroLevelStr[3] += (*buffer)[j]; }
        }
        //1.5 第5个英雄的等级情况
        if ((*buffer)[i] == '{' && (*buffer)[i+1] == '"' && (*buffer)[i+2] == 'a' && (*buffer)[i+3] == 'v' && (*buffer)[i+4] == 'a' && (*buffer)[i+13] == '4' && (*buffer)[i+14] == ','){
            HeroUnLocked[4] = true;
            for (int j = i+23;(*buffer)[j] != '}' ; j++) {  HeroLevelStr[4] += (*buffer)[j]; }
        }
    }
    
    for (int i = 0 ; i < 5 ; i++) {
        HeroLevel[i] = atoi(HeroLevelStr[i].c_str())+1;
        cout<<HeroLevel[i]<<" ";
    }
    cout<<endl;
    for (int i = 0 ; i < 5 ; i++) {
        cout<<HeroUnLocked[i]<<" ";
    }
    cout<<endl;
}
Пример #4
0
void LogInScene::LogInRequestCompleted(CCNode* sender,void* data){
    
    CCHttpResponse* response = (CCHttpResponse*)data;
    if (!response) {    return;     }
    int statusCode = response->getResponseCode();
    std::vector<char> *buffer = response->getResponseData();
    printJson(buffer);
    if (statusCode == 200) {
        //1.标记为已经登录
        if (!MainUser->hasLogIn) {
            MainUser->hasLogIn = true;
            BeginMenuFallDown();  //关闭网络,进入游戏,没有按钮掉下来,再打开网络,重新登录以后,要掉下来
        }
        //2.记录服务器发回的信息
        if(!MainUser->initUser(buffer))
            MainUser->hasChosenHero = false;
        else
            MainUser->hasChosenHero = true;
        saveLogInInformation(UserNameStr,PassWordStr);
        //3.初始化rank
        tmpBoardID = 0;
        getUserHistoryGame(tmpBoardID);
    }
    else{
        if(statusCode == 401){
            box->closeMessageBox();
            box = AsMessageBox::createMessageBox("用户名与密码不匹配", 2, 1);
            box->setPosition(CCPointZero);
            addChild(box,100);
        }
        else if(statusCode == 404){
            box->closeMessageBox();
            box = AsMessageBox::createMessageBox("该用户不存在", 2, 1);
            box->setPosition(CCPointZero);
            addChild(box,100);
        }
        else{
            box->closeMessageBox();
            box = AsMessageBox::createMessageBox("无法连接,请检查您的网络", 2, 1);
            box->setPosition(CCPointZero);
            addChild(box,100);
        }
    }
}
Пример #5
0
void RankScene::unlockHeroRequestCompleted(cocos2d::CCNode *sender, void *data){
    
    CCHttpResponse* response = (CCHttpResponse*)data;
    if (!response) {    return;     }
    int statusCode = response->getResponseCode();
    std::vector<char> *buffer = response->getResponseData();
    printJson(buffer);
    if (statusCode == 201) {
        changeGold(-MainUser->HeroUnLockPrice[HeroProcessing]);
        MainUser->HeroUnLocked[HeroProcessing] = true;
        UnlockAnimation(HeroProcessing);
        goldProcessingIndex = 4;
        updateUserGold();
    }
    else{
        MessageBox->closeMessageBox();
        MessageBox = AsMessageBox::createMessageBox("与服务器通信失败,\n请检查您的网络", 2, 1);
        MessageBox->setPosition(CCPointZero);
        addChild(MessageBox,1000);
    }
}
Пример #6
0
void RankScene::HeroLevelUpRequestCompleted(CCNode* sender,void* data){
    
    CCHttpResponse* response = (CCHttpResponse*)data;
    if (!response) {    return;     }
    int statusCode = response->getResponseCode();
    std::vector<char> *buffer = response->getResponseData();
    printJson(buffer);
    
    if (statusCode == 204) {
        changeGold(-MainUser->HeroLevelUpGold[MainUser->HeroLevel[roleIndex-1]-1]);
        MainUser->HeroLevel[roleIndex-1]++;
        LevelUpAnimation(roleIndex-1);
        
        goldProcessingIndex = 4;
        updateUserGold();
    }
    else{
        MessageBox->closeMessageBox();
        MessageBox = AsMessageBox::createMessageBox("与服务器通信失败,\n请检查您的网络", 2, 1);
        MessageBox->setPosition(CCPointZero);
        addChild(MessageBox,1000);
    }
}