void init_c4a() { spInitNet(); profile = spNetC4AGetProfile(); if (profile == NULL) { sprintf(c4aStatus,"C4A-Manager or Mini-C4A not installed."); c4aErrorTimeOut = 20000; c4aState = -3; } updateScores(); }
bool MainState::loadMedia(Game* game) { bool success = true; if (!mPlayer1Texture.loadFromFile(game->mRenderer, "player1-paddle.png")) { printf("Failed to load player1 paddle image!\n"); success = false; } if (!mPlayer2Texture.loadFromFile(game->mRenderer, "player2-paddle.png")) { printf("Failed to load player2 paddle image!\n"); success = false; } if (!mBallTexture.loadFromFile(game->mRenderer, "ball.png")) { printf("Failed to load ball image!\n"); success = false; } mFont = TTF_OpenFont("OpenSans/OpenSans-Bold.ttf", 28); if (mFont == NULL) { printf("Failed to load OpenSans-Bold font! SDL_ttf Error: %s\n", TTF_GetError()); success = false; } else { updateScores(game); } mPaddleHitSound = Mix_LoadWAV("paddle-hit.wav"); if (mPaddleHitSound == NULL) { printf("Failed to load paddle hit sound! SDL_mixer Error: %s\n", Mix_GetError()); success = false; } mWallHitSound = Mix_LoadWAV("wall-hit.wav"); if (mWallHitSound == NULL) { printf("Failed to load wall hit sound! SDL_mixer Error: %s\n", Mix_GetError()); success = false; } return success; }
void Manager::play(int& score_1, int& score_2, int nb_round) { PyObject* last_move_player_1 = Py_None; PyObject* last_move_player_2 = Py_None; score_1 = 0; score_2 = 0; for (int i = 0; i < nb_round; ++i) { PyObject* current_move_1 = _player_1.play(last_move_player_2); PyObject* current_move_2 = _player_2.play(last_move_player_1); Py_DecRef(last_move_player_1); Py_DecRef(last_move_player_2); last_move_player_1 = current_move_1; last_move_player_2 = current_move_2; updateScores(current_move_1, current_move_2, score_1, score_2); } }
void Game::makeUndo(){ if(gameboards.size() > 1 && gameboardsProlog.size() > 1){ delete gameboards.top(); delete this->gameboard; gameboards.pop(); Gameboard* gb = new Gameboard(gameboards.top()->size); gb->copyGameboard(gameboards.top()->gameboard); this->gameboard = gb; free(gameboardsProlog.top()); gameboardsProlog.pop(); free(this->tabProlog); char* buf = (char*)malloc(sizeof(char)*256); strcpy(buf, gameboardsProlog.top()); this->tabProlog = buf; updateScores(); if(currentPlayer == -1){ this->player1->undo = false; this->player2->undo = true; } else{ this->player2->undo = false; this->player1->undo = true; } currentPlayer = (currentPlayer)*(-1); std::vector<Point>::iterator iter = points.begin(); for(; iter != points.end(); iter++) if((iter+1) == points.end()){ points.erase(iter); break; } } this->clock->start_count(); }
void AMTSimulation::simulateScores(int user, int triplet){ // Gather all documents into a set int index = 0; vector<int> rand_numbers; map<Document, int>::iterator it = _qrels.relDocs.begin(); for(;it != _qrels.relDocs.end(); it++){ allDocs.push_back((*it).first); rand_numbers.push_back(index); doc_index_map.insert(make_pair((*it).first, index)); // Initialize string code; ostringstream convert; convert << index; code = convert.str(); _utilScores[code] = arma::zeros(_qrels.relDocs.size()); _appearanceCounts[code] = arma::zeros(_qrels.relDocs.size()); index++; } set<Document>::iterator itnonrel = _qrels.nonRelDocs.begin(); for(;itnonrel != _qrels.nonRelDocs.end(); itnonrel++){ //allDocs.push_back((*itnonrel)); rand_numbers.push_back(index); //doc_index_map.insert(make_pair((*itnonrel), index)); // Initialize string code; ostringstream convert; convert << index; code = convert.str(); _utilScores[code] = arma::zeros(_qrels.relDocs.size() ); _appearanceCounts[code] = arma::zeros(_qrels.relDocs.size()); index++; } _utilScores[""] = arma::zeros(_qrels.relDocs.size()); _appearanceCounts[""] = arma::zeros(_qrels.relDocs.size()); if( _qrels.relDocs.size() < 3){ int numOfSubtopics = int(*_qrels.subtopics.rbegin()); arma::rowvec seen = arma::zeros<arma::rowvec>(numOfSubtopics); if(get_preference(_qrels.matrix.row(rand_numbers.at(0)), _qrels.matrix.row(rand_numbers.at(1)), seen)){ _utilScores[""](0) += 1; }else _utilScores[""](1) += 1; _appearanceCounts[""](0) += 1; _appearanceCounts[""](1) += 1; _utilScores[""] /= _appearanceCounts[""]; return; } // Simulate the preferences for only these 1000 triplets randomly vector<Qrels>::iterator qrels_iterator = _qrels_vector.begin(); for(int users=0;users < user; users++){ std::random_shuffle ( _qrels_vector.begin(), _qrels_vector.end() ); Qrels currentQrels = _qrels_vector.at(0); // Generate triplets and sample 1000 triplets randomly map<Triplet, int, triplet_comparison> triplets = sampleTriplets(rand_numbers, triplet); map<Triplet, int, triplet_comparison>::iterator triplet_iterator = triplets.begin(); map<Triplet, int, triplet_comparison> seen_pairs; set<int> relevantDocIndices; for(;triplet_iterator != triplets.end(); triplet_iterator++){ Triplet triplet = (*triplet_iterator).first; int numOfSubtopics = int(*currentQrels.subtopics.rbegin()); arma::rowvec seen = arma::zeros<arma::rowvec>(numOfSubtopics); if(arma::sum(currentQrels.matrix.row(triplet.topDoc)) <= 0 || triplet.topDoc >= currentQrels.matrix.n_rows ) triplet.topDoc = -1; if(arma::sum(currentQrels.matrix.row(triplet.leftDoc)) <= 0 || triplet.leftDoc >= currentQrels.matrix.n_rows) triplet.leftDoc = -1; if(arma::sum(currentQrels.matrix.row(triplet.rightDoc)) <= 0 || triplet.rightDoc >= currentQrels.matrix.n_rows) triplet.rightDoc = -1; // Update the scores // Keep Track of level 1 pairs for this user profile if(triplet.topDoc == -1){ if(triplet.leftDoc != -1 && triplet.rightDoc != -1){ if(checkPairs(seen_pairs, triplet.leftDoc, triplet.rightDoc)) continue; }else continue; }else if(triplet.topDoc != -1){ seen += currentQrels.matrix.row(triplet.topDoc); } if(triplet.leftDoc != -1 && triplet.rightDoc != -1){ if(get_preference(currentQrels.matrix.row(triplet.leftDoc), currentQrels.matrix.row(triplet.rightDoc), seen)) updateScores(triplet.topDoc, triplet.leftDoc, triplet.rightDoc, true); else updateScores(triplet.topDoc, triplet.leftDoc, triplet.rightDoc, false); } if(relevantDocIndices.find(triplet.topDoc) == relevantDocIndices.end() && triplet.topDoc != -1) relevantDocIndices.insert(triplet.topDoc); if(relevantDocIndices.find(triplet.leftDoc) == relevantDocIndices.end() && triplet.leftDoc != -1) relevantDocIndices.insert(triplet.leftDoc); if(relevantDocIndices.find(triplet.rightDoc) == relevantDocIndices.end() && triplet.rightDoc != -1) relevantDocIndices.insert(triplet.rightDoc); } /*map<string, arma::vec>::iterator codes = _utilScores.begin(); for(;codes!= _utilScores.end(); codes++){ set<int>::iterator relevantDocIterator = relevantDocIndices.begin(); for(; relevantDocIterator != relevantDocIndices.end(); relevantDocIterator++){ if((*codes).first != ""){ if((*relevantDocIterator) != atoi((*codes).first.c_str())) _utilScores[(*codes).first](*relevantDocIterator) += 1; }else _utilScores[(*codes).first](*relevantDocIterator) += 1; } _appearanceCounts[(*codes).first] += 2; }*/ } map<string, arma::vec>::iterator codes = _utilScores.begin(); for(;codes!= _utilScores.end(); codes++){ _utilScores[(*codes).first] /= (_appearanceCounts[(*codes).first] + 2); } }
void MainState::checkBallCollisions(Game* game) { if (!mLockBallCollisionCheck) { if (mPhysicsEngine.checkSpriteCollision(mBallSprite, mPlayer1Sprite)) { mBallSprite.setVelX(mBallSprite.getVelX() * -1); int paddleCenter = mPlayer1Sprite.getPosY() + (mPlayer1Sprite.getHeight() / 2); int ballCenter = mBallSprite.getPosY() + (mBallSprite.getHeight() / 2); if (ballCenter >= paddleCenter) { mBallSprite.setVelY(std::abs(mBallSprite.getVelY())); } else { mBallSprite.setVelY(-std::abs(mBallSprite.getVelY())); } mLockBallCollisionCheck = true; if (Mix_PlayChannel(-1, mPaddleHitSound, 0) == -1) { printf("Mix_PlayChannel Error: %s\n", Mix_GetError()); } } else if (mPhysicsEngine.checkSpriteCollision(mBallSprite, mPlayer2Sprite)) { mBallSprite.setVelX(mBallSprite.getVelX() * -1); int paddleCenter = mPlayer2Sprite.getPosY() + (mPlayer2Sprite.getHeight() / 2); int ballCenter = mBallSprite.getPosY() + (mBallSprite.getHeight() / 2); if (ballCenter >= paddleCenter) { mBallSprite.setVelY(std::abs(mBallSprite.getVelY())); } else { mBallSprite.setVelY(-std::abs(mBallSprite.getVelY())); } mLockBallCollisionCheck = true; if (Mix_PlayChannel(-1, mPaddleHitSound, 0) == -1) { printf("Mix_PlayChannel Error: %s\n", Mix_GetError()); } } } else if ((mBallSprite.getVelX() > 0 && mBallSprite.getPosX() > SCREEN_WIDTH / 2) || (mBallSprite.getVelX() < 0 && mBallSprite.getPosX() < SCREEN_WIDTH / 2)) { mLockBallCollisionCheck = false; } if (mBallSprite.getPosY() < 0 || mBallSprite.getPosY() + mBallSprite.getHeight() > SCREEN_HEIGHT) { mBallSprite.setVelY(mBallSprite.getVelY() * -1); Mix_PlayChannel(-1, mWallHitSound, 0); } if (mBallSprite.getPosX() < 0) { resetBall(); ++mPlayer2Score; updateScores(game); } else if (mBallSprite.getPosX() + mBallSprite.getWidth() > SCREEN_WIDTH) { resetBall(); ++mPlayer1Score; updateScores(game); } }
// Construct state menu::menu(){ // Init vars startMove = false; startClicked = false; mouse_rocket_up = false; // Screen on mini_screen = MINISTATE_MENU; // Buffer buffer = al_create_bitmap( SCREEN_W, SCREEN_H); // Load intro image // Random menu img_menu = load_bitmap_ex( "images/backgrounds/background_" + convertIntToString(random( 0, 3)) + ".png"); start = load_bitmap_ex( "images/gui/start.png"); highscores_button = load_bitmap_ex( "images/gui/highscores.png"); mouse = load_bitmap_ex( "images/gui/mouse.png"); mouse_rocket = load_bitmap_ex( "images/gui/mouse_rocket.png"); title = load_bitmap_ex( "images/gui/title.png"); options = load_bitmap_ex( "images/gui/options.png"); ui_sound[1] = load_bitmap_ex( "images/gui/ui_sound_on.png"); ui_sound[0] = load_bitmap_ex( "images/gui/ui_sound_off.png"); ui_music[1] = load_bitmap_ex( "images/gui/ui_music_on.png"); ui_music[0] = load_bitmap_ex( "images/gui/ui_music_off.png"); ui_window[1] = load_bitmap_ex( "images/gui/ui_window_windowed.png"); ui_window[0] = load_bitmap_ex( "images/gui/ui_window_fullscreen.png"); ui_particle[0] = load_bitmap_ex("images/gui/ui_particle_circle.png"); ui_particle[1] = load_bitmap_ex("images/gui/ui_particle_square.png"); ui_particle[2] = load_bitmap_ex("images/gui/ui_particle_pixel.png"); ui_particle[3] = load_bitmap_ex("images/gui/ui_particle_off.png"); ui_control[0] = load_bitmap_ex("images/gui/ui_control_xbox.png"); ui_control[1] = load_bitmap_ex("images/gui/ui_control_keyboard.png"); ui_control[2] = load_bitmap_ex("images/gui/ui_control_auto.png"); ui_screenshake[0] = load_bitmap_ex("images/gui/ui_screenshake_none.png"); ui_screenshake[1] = load_bitmap_ex("images/gui/ui_screenshake_low.png"); ui_screenshake[2] = load_bitmap_ex("images/gui/ui_screenshake_medium.png"); ui_screenshake[3] = load_bitmap_ex("images/gui/ui_screenshake_high.png"); ui_options = load_bitmap_ex( "images/gui/ui_options.png"); ui_options_small = load_bitmap_ex( "images/gui/ui_options_small.png"); ui_back = load_bitmap_ex( "images/gui/ui_back.png"); credits = load_bitmap_ex("images/gui/credits.png"); ui_credits = load_bitmap_ex("images/gui/ui_credits.png"); highscores_table = load_bitmap_ex("images/gui/highscores_table.png"); ui_help = load_bitmap_ex("images/gui/ui_help.png"); helpScreen = load_bitmap_ex("images/gui/helpScreen.png"); ui_exit = load_bitmap_ex("images/gui/ui_exit.png"); xbox_start = load_bitmap_ex("images/gui/xbox_start.png"); ui_screenshot_notification = load_bitmap_ex("images/gui/ui_screenshot_notification.png"); ui_controls = load_bitmap_ex("images/gui/ui_controls.png"); controls = load_bitmap_ex("images/gui/controls.png"); // Load that menu music music_mainmenu = load_sample_ex("audio/music_mainmenu.ogg"); // Read settings from file read_settings(); // Init animation vars animation_pos = 0; // Hide mouse al_hide_mouse_cursor( display); // Load scores updateScores( scores); // Play music if( settings[SETTING_MUSIC] == 1) al_play_sample( music_mainmenu, 1.0, 0.0, 1.0, ALLEGRO_PLAYMODE_LOOP, ¤tMusic); }
// Update loop void menu::update(){ //Menu animations if( animation_pos < 100 && !startClicked) animation_pos += 4; if( animation_pos > 0 && startClicked) animation_pos -= 4; // Start the game if( startClicked && animation_pos <= 0) set_next_state( STATE_GAME); // Open submenu or start game if( mini_screen == MINISTATE_MENU){ // Start game with controller if( joystickListener::buttonPressed[JOY_XBOX_START] || joystickListener::buttonPressed[JOY_XBOX_A]){ startClicked = true; } // Buttons if( mouseListener::mouse_pressed & 1){ // Start game if( collision( mouseListener::mouse_x, mouseListener::mouse_x, 40, 40 + al_get_bitmap_width(start), mouseListener::mouse_y, mouseListener::mouse_y, 410, 410 + al_get_bitmap_height(start))){ startClicked = true; } // Scores else if( collision( mouseListener::mouse_x, mouseListener::mouse_x, 660, 660 + al_get_bitmap_width(highscores_button), mouseListener::mouse_y, mouseListener::mouse_y, 30, 30 + al_get_bitmap_height(highscores_button))){ updateScores( scores); mini_screen = MINISTATE_SCORES; } // Credits menu else if( collision( mouseListener::mouse_x, mouseListener::mouse_x, 542, 644, mouseListener::mouse_y, mouseListener::mouse_y, 548, 600)){ mini_screen = MINISTATE_CREDITS; } // Controls menu else if( collision( mouseListener::mouse_x, mouseListener::mouse_x, 644, 696, mouseListener::mouse_y, mouseListener::mouse_y, 548 ,600)){ mini_screen = MINISTATE_CONTROLS; } // Help screen else if( collision( mouseListener::mouse_x, mouseListener::mouse_x, 696, 749, mouseListener::mouse_y, mouseListener::mouse_y, 548, 600)){ mini_screen = MINISTATE_TUTORIAL; } // Options menu else if( collision( mouseListener::mouse_x, mouseListener::mouse_x, 749, 800, mouseListener::mouse_y, mouseListener::mouse_y, 548, 600)){ mini_screen = MINISTATE_OPTIONS; } } } // Exit menus else if( mini_screen == MINISTATE_TUTORIAL || mini_screen == MINISTATE_CREDITS || mini_screen == MINISTATE_CONTROLS || mini_screen == MINISTATE_SCORES ){ if( keyListener::lastKeyPressed != -1 || mouseListener::mouse_pressed & 1 || joystickListener::lastButtonPressed != -1){ mini_screen = MINISTATE_MENU; draw(); } } // Options else if( mini_screen == MINISTATE_OPTIONS && mouseListener::mouse_pressed & 1){ // Particles toggle if( collision( 280, 360, mouseListener::mouse_x, mouseListener::mouse_x, 400, 480, mouseListener::mouse_y, mouseListener::mouse_y)){ settings[SETTING_PARTICLE_TYPE] = (settings[SETTING_PARTICLE_TYPE] + 1) % 4; } // Sound button toggle else if( collision( 120, 200, mouseListener::mouse_x, mouseListener::mouse_x, 180, 260, mouseListener::mouse_y, mouseListener::mouse_y)){ settings[SETTING_SOUND] = (settings[SETTING_SOUND] + 1) % 2; } // Music button toggle else if( collision( 280, 360, mouseListener::mouse_x, mouseListener::mouse_x, 180, 260, mouseListener::mouse_y, mouseListener::mouse_y)){ settings[SETTING_MUSIC] = (settings[SETTING_MUSIC] + 1) % 2; if( settings[SETTING_MUSIC] == 0) al_stop_sample( ¤tMusic); else al_play_sample( music_mainmenu, 1.0, 0.0, 1.0, ALLEGRO_PLAYMODE_ONCE, ¤tMusic); } // Fullscreen toggle else if( collision( 120, 200, mouseListener::mouse_x, mouseListener::mouse_x, 400, 480, mouseListener::mouse_y, mouseListener::mouse_y)){ settings[SETTING_FULLSCREEN] = (settings[SETTING_FULLSCREEN] + 1) % 2; if( settings[SETTING_FULLSCREEN]){ // Fullscreen stuff al_destroy_display( display); al_set_new_display_flags(ALLEGRO_FULLSCREEN_WINDOW); display = al_create_display( SCREEN_W, SCREEN_H); ALLEGRO_DISPLAY_MODE disp_data; al_get_display_mode(al_get_num_display_modes() - 1, &disp_data); float sx = disp_data.width / (float)SCREEN_W; float sy = disp_data.height / (float)SCREEN_H; ALLEGRO_TRANSFORM trans; al_identity_transform(&trans); al_scale_transform(&trans, sx, sy); al_use_transform(&trans); al_hide_mouse_cursor( display); } else{ al_destroy_display( display); al_set_new_display_flags(ALLEGRO_WINDOWED); display = al_create_display( SCREEN_W, SCREEN_H); al_hide_mouse_cursor( display); } } //Screen shake else if( collision( 280, 360, mouseListener::mouse_x, mouseListener::mouse_x, 290, 370, mouseListener::mouse_y, mouseListener::mouse_y)){ settings[SETTING_SCREENSHAKE] = (settings[SETTING_SCREENSHAKE] + 1) % 4; } // Control Toggle else if( collision( 120, 200, mouseListener::mouse_x, mouseListener::mouse_x, 290, 370, mouseListener::mouse_y, mouseListener::mouse_y)){ settings[SETTING_CONTROLMODE] = ((settings[SETTING_CONTROLMODE] + 1) % 3); } // Power off else if( collision( 540, 620, mouseListener::mouse_x, mouseListener::mouse_x, 180, 260, mouseListener::mouse_y, mouseListener::mouse_y)){ write_settings(); set_next_state( STATE_EXIT); } // Exit menu else if( collision( 540, 620, mouseListener::mouse_x, mouseListener::mouse_x, 407, 487, mouseListener::mouse_y, mouseListener::mouse_y)){ mini_screen = MINISTATE_MENU; write_settings(); } } // Update mouse particles if( settings[SETTING_PARTICLE_TYPE] != 3 && mouse_rocket_up){ for( int i = 0; i < 500; i++){ if( random( 1, 10) == 1){ ALLEGRO_COLOR part_color = al_map_rgb( 255, random(0,255), 0); if( settings[SETTING_CHRISTMAS]){ int red_or_green = random( 0, 1) * 255; part_color = al_map_rgb( red_or_green, 255 - red_or_green, 0); } particle newParticle( mouseListener::mouse_x, mouseListener::mouse_y + 16, part_color, random( -2, 2), random( 8, 20), 1, settings[SETTING_PARTICLE_TYPE]); mousePart.push_back( newParticle); } } } for( unsigned int i = 0; i < mousePart.size(); i++){ mousePart.at(i).logic(); if( random( 0, 10) == 0) mousePart.erase( mousePart.begin() + i); } // Close game if( keyListener::key[ALLEGRO_KEY_ESCAPE]) set_next_state( STATE_EXIT); // Check if mouse is going up mouse_rocket_up = ( mouseListener::mouse_y < mouseMove); mouseMove = mouseListener::mouse_y; }