Example #1
0
void init_c4a()
{
    spInitNet();
    profile = spNetC4AGetProfile();
    if (profile == NULL)
    {
        sprintf(c4aStatus,"C4A-Manager or Mini-C4A not installed.");
        c4aErrorTimeOut = 20000;
        c4aState = -3;
    }
    updateScores();
}
Example #2
0
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;
}
Example #3
0
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);
    }
}
Example #4
0
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();
}
Example #5
0
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);

    }
}
Example #6
0
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);
	}
}
Example #7
0
// 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, &currentMusic);
}
Example #8
0
// 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( &currentMusic);
      else
        al_play_sample( music_mainmenu, 1.0, 0.0, 1.0, ALLEGRO_PLAYMODE_ONCE, &currentMusic);

    }
    // 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;
}