/** * \brief Set power's pictures. * \param index The index of the player. * \param p Status of the player. */ void ptb::frame_play_story::update_powers (unsigned int index, player_status& p) { update_power (game_variables::get_persistent_air_power(index), "gfx/ui/air-power.png", p.air_power); update_power (game_variables::get_persistent_fire_power(index), "gfx/ui/fire-power.png", p.fire_power); update_power (game_variables::get_persistent_water_power(index), "gfx/ui/water-power.png", p.water_power); } // frame_play_story::update_powers()
/** * \brief Update status of all players. */ void ptb::frame_play_story::update_all_players_status() { update_player_status(1, m_first_player_status); if ( game_variables::get_players_count() == 2 ) update_player_status(2, m_second_player_status); else { m_second_player_status.score_text->set_text( gettext("No player") ); m_second_player_status.lives_text->set_text( "0" ); m_second_player_status.stone_text->set_text( "0" ); m_second_player_status.energy->set_length(100); m_second_player_status.energy->set_level(0); m_second_player_status.energy->set_max_level(100); update_power (false, "gfx/ui/air-power.png", m_second_player_status.air_power); update_power (false, "gfx/ui/fire-power.png", m_second_player_status.fire_power); update_power (false, "gfx/ui/water-power.png", m_second_player_status.water_power); } } // frame_play_story::update_all_players_status()
void mipb_frac::load() { int min_tone,min_user; FILE *lead_lag_fp; FILE *p_fp; lead_lag_fp=fopen("../data/mipb_lag_lead.txt","w"); p_fp=fopen("../data/mipb_p_against_b.txt","w"); if (p_fp == NULL || lead_lag_fp == NULL) { printf("Boom!\n"); exit(2); } init_cost_matrix(); while(1) { min_cost(&min_tone,&min_user); //printf("Min tone/user was %d/%d\n",min_tone,min_user); //getchar(); //if (min_tone == 115 && min_user == 1) // getchar(); if (_all_tones_full) { printf("All tones full\n"); if (_graph_loading) { write_current_stats(min_tone,min_user); } //for (int tone=0;tone<DMTCHANNELS;tone++) { // print_vector(_F[tone],"F"); //} //for (int tone=0;tone<DMTCHANNELS;tone++) { // print_vector(_cost[tone],"cost"); //} //print_vector(_wp,"wp"); break; } _b[min_tone][min_user]+=_bit_inc;; // add bit to min cos tone _b_total[min_user]+=_bit_inc; _total_bits+=_bit_inc; update_power(min_tone,min_user); if (_b[min_tone][min_user] >= MAXBITSPERTONE) { _F[min_tone][min_user] = 1; } //print_vector(_p[min_tone],"p on tone"); //getchar(); //print_vector(_b_total,"b_total"); //printf("total bits = %d\n",_total_bits); //print_vector(_p_used,"p_used"); if (!_greedy) update_wp(); //print_vector(_wp,"wp"); //getchar(); fprintf(lead_lag_fp,"%lf\t",_total_bits); fprintf(p_fp,"%lf\t",_total_bits); for (int user=0;user<lines;user++) { fprintf(lead_lag_fp,"%6.4g\t",_p_used[user]-_p_ave); fprintf(p_fp,"%6.4g\t",_p_used[user]); } fprintf(lead_lag_fp,"\n"); fprintf(p_fp,"\n"); if ((int)_total_bits % 5 == 0) { if (_graph_loading) { write_current_stats(min_tone,min_user); } } for (int user=0;user<lines;user++) { calc_delta_p(min_tone,user); } for (int tone=0;tone<DMTCHANNELS;tone++) { for (int user=0;user<lines;user++) { _cost[tone][user] = cf(tone,user); //_cost[tone][user] = var_cf(tone,user); } } dump_cost_matrix(); //print_vector(_cost[min_tone],"New costs"); //getchar(); } fclose(p_fp); fclose(lead_lag_fp); if (_graph_loading) { write_stats_totals(); } }
int multiuser_new::run() { int tone,user,t_line,runs=0; FILE* fp[lines]; bool last_run=false; reset_data(); //fp[0]=fopen("line0_order.txt","w"); //fp[1]=fopen("line1_order.txt","w"); //calc_normalised_cost_matrix(); //print_cost_matrix(0,10); //calc_delta_p_debug=true; for (int user=0;user<lines;user++) { printf("rate target on line %d is %d\n",user,b_target[user]); if (b_target[user]!=NOT_SET) { t_line=user; } } while((abs(b_target[t_line] - b_total[t_line]) > 5) || last_run) { reset_data(); for (tone=0;tone<DMTCHANNELS;tone++) { for(user=0;user<lines;user++) { calc_delta_p_cost(tone,user); } } //print_cost_matrix(0,DMTCHANNELS-1); while(1) { min_cost(&tone,&user); if(all_tones_full) { break; } b[tone][user]++; // add bit to min cos tone b_total[user]++; total_bits++; update_power(tone,user); //update power on tone //fprintf(fp[user],"%d %d\n",tone,total_bits); if (last_run && graph_loading) write_current_stats(tone,user); if (b[tone][user] == MAXBITSPERTONE) { F[tone][user]=1; } if (b_total[user] == b_target[user]) { freeze_user(user); if (last_run) printf("just froze user %d cos he got his target\n",user); } for (int user=0;user<lines;user++) calc_delta_p_cost(tone,user); // update delta_p on all lines for this tone } /*for (int user=0;user<lines;user++) { printf("b_%d = %d\n",user,b_total[user]); }*/ //printf("w = %lf\n",w[t_line]); //getchar(); if (last_run) { printf("this is the last run so setting last_run to false\n"); last_run=false; break; } if (abs(b_target[t_line] - b_total[t_line]) < 5) { printf("Met the rate target, setting the last_run to true\n"); last_run=true; continue; } if (b_total[t_line] > b_target[t_line]) { // if rate > target_rate then this is the min weight // printf("Rate is greater than target, so increase the weight and we have found the min weight\n"); w_min[t_line]=w[t_line]; // set the min weight if (w_max[t_line] < 0) { // dont yet know the max weight // printf("dont yet know the max weight so increase the weight\n"); w[t_line]*=2; } } else { // this is the max weight // printf("Rate is less than target so decrease the weight and we have found the max weight\n"); w_max[t_line]=w[t_line]; if (w_min[t_line] < 0) { // printf("dont yet know the min weight so decrease the weight\n"); w[t_line]/=2; } } if (w_max[t_line] > 0 && w_min[t_line] > 0) { w[t_line] = (w_max[t_line]+w_min[t_line])/2; // printf("Currently bisecting, new weight is %lf\n",w[t_line]); } } //for (int user=0;user<lines;user++) // fclose(fp[user]); init_lines(); calculate_snr(); set_loading_algo(); return 0; }
int multiuser_new::run_a() { int tone,user,t_line,runs=0; FILE* fp; bool last_run=false; reset_data(); //calc_ave_bits(); //calc_ave_xtalk(); /* for (int user=0;user<lines;user++) { double max=0; int line=0; for (int xtalker=0;xtalker<lines;xtalker++) { if (xtalker==user) continue; if (ave_xtalk[user][xtalker] > max) { max = ave_xtalk[user][xtalker]; line = xtalker; } } printf("Worst xtalker into line %d = line %d\n",user,line); } */ //exit(0); //for (int user=0;user<lines;user++) { // printf("rate target on line %d is %d\n",user,b_target[user]); //} do { iter_count++; reset_data(); init_cost_matrix(); //for (int user=0;user<lines;user++) { // printf("w[%d] = %4.2lf\n",user,w[user]); //} while(1) { min_cost(&tone,&user); printf("Min tone/user was %d/%d\n",tone,user); //getchar(); //if (tone == 115 && user == 1) { // getchar(); //} if(all_tones_full) { printf("All tones are full on iteration number %d\n",iter_count); break; } b[tone][user]++; // add bit to min cos tone b_total[user]++; total_bits++; //printf("Added a bit to user %d tone %d\n",user,tone); //print_vector(cost[tone],"Costs on current tone"); update_power(tone,user); //update power on tone //print_vector(p[tone],"p on tone"); //getchar(); print_vector(b_total,"b_total"); printf("total bits = %d\n",total_bits); print_vector(p_used,"p_used"); if (!greedy) update_wp(); //print_vector(wp,"wp"); //getchar(); if (graph_loading) write_current_stats(tone,user); /* if (b[tone][user] == MAXBITSPERTONE) { F[tone][user]=1; } if (!rate_targets_off) { if (b_total[user] == b_target[user]) { freeze_user(user); printf("just froze user %d cos he got his target\n",user); printf("Power used by user %d when frozen = %lf\n",user,p_used[user]); init_cost_matrix(); user_re_init[user]=true; } } */ /*for (int user=0;user<lines;user++) { if (user_frozen[user] == true && user_re_init[user] == false) { init_cost_matrix(); user_re_init[user]=true; } }*/ /* bool update=false; for (int user1=0;user1<lines;user1++) { if (wp[user1] > 1.1) { update=true; break; } } */ for (int user=0;user<lines;user++) { calc_delta_p(tone,user); // update delta_p on all lines for this tone //cost[tone][user] = cf(tone,user); } //print_vector(_delta_p[tone][user],"Delta of adding another bit"); for (int tone=0;tone<DMTCHANNELS;tone++) { for (int user=0;user<lines;user++) { cost[tone][user] = cf(tone,user); } } //print_vector(cost[tone],"New costs"); //getchar(); } for (int user=0;user<lines;user++) { printf("rate on line %d is %d\n",user,b_total[user]); } //getchar(); calc_lost_bits(); sort_lost_bits(); print_lost_bits(); if (0) { char tag[100]; sprintf(tag,"iteration%d",iter_count); init_lines(); calculate_snr(); for (int user=0;user<lines;user++) { write_mw_stats(user,tag); } } update_w(); //getchar(); } while(!finished()); if (all_rates_good()) { printf("All lines met their rate target\n"); } else { double sum=0; for (int user=0;user<lines;user++) { sum+=pow(b_total[user]-b_target[user],2); } printf("Total distance from target = %lf\n",sqrt(sum)); } //isb_optimise_p(); init_lines(); calculate_snr(); set_loading_algo(); printf("max lead = %6.4lf max lag = %6.4lf\n",max_lead,max_lag); if (graph_loading) { write_stats_totals(); } return 0; }
int main(void) { /* Related object data */ system_t* system; player_t* player1; player_t* player2; alt_timestamp_start(); int start_time = alt_timestamp(); int wind; int restart = 0; /* initialize all hardware dev */ system = system_init(VIDEO_PIXEL_BUFFER_DMA_NAME, "/dev/video_character_buffer_with_dma_0", ALTERA_UP_SD_CARD_AVALON_INTERFACE_0_NAME, PS2_0_NAME); if (!alt_up_sd_card_is_Present()) { printf("SD card not present\n"); return -2; } else { printf("SD card detected.\n"); } if (!alt_up_sd_card_is_FAT16()) { printf("SD card is not FAT16.\n"); return -3; } else { printf("SD card is FAT 16.\n"); } fireSound = initSoundbank("shotgun.wav"); explosionSound = initSoundbank("big_bomb.wav"); printf("Done Initializing\n"); int end_time = alt_timestamp(); srand(end_time - start_time); clearScreen(system); printf("Press enter to start game"); restartGame(system); while (restart == 1) { /* initialize required objects */ player1 = makePlayer(1, "Lomash"); player2 = makePlayer(2, "TJ"); /* * Draw the screen for the first time. */ store_background_data(); draw_background(system); drawPlayers(system); draw_ground(system); draw_windbox(system); draw_player1GUI(system); draw_player2GUI(system); update_wind(system, wind); draw_health(player1, system); draw_health(player2, system); update_power(player1, system); update_power(player2, system); usleep(2000000); // sleep to wait for video buffer to load while (TRUE) { printf( "\n\n\n\n===========================================================\n"); printf("Player 1 Health = %d \t\t Player 2 Health = %d\n", player1->health, player2->health); wind = rand() % 11 - 5; draw_windbox(system); update_wind(system, wind); // Player 1's turn player_1_jump(system); player_1_jump(system); printf("Getting Player 1 Power.\n"); getKeyboardInput(1, player1, system); // Power skipOneEnter(system); printf("Getting Player 1 Angle.\n"); getKeyboardInput(2, player1, system); // Angle // Player 1 Animation printf("Starting animation\n"); clear_angle_drawer(system); animate_cannon1(system); playSound(fireSound, system->audio); switch (animateShooting(system, player1, wind)) { // different value for result case 1: { update_health(player2, system, -DAMAGE); printf( "Player 1 hit player 2.\n Remaining Health for Player 2: %d\n", player2->health); break; } case 2: { update_health(player1, system, -DAMAGE); printf( "Player 1 hit player 1.\n Remaining Health for Player 1: %d\n", player1->health); break; } default: { break; } } printf("Ended animation\n"); // Post-animation Calculation if (player1->health <= 0 || player2->health <= 0) { break; } // Player 2's turn wind = rand() % 11 - 5; draw_windbox(system); update_wind(system, wind); player_2_jump(system); player_2_jump(system); printf("Getting Player 2 Velocity.\n"); getKeyboardInput(1, player2, system); // Player 2 Angle-Selection skipOneEnter(system); printf("Getting Player 2 Angle.\n"); getKeyboardInput(2, player2, system); // Player 2 Animation printf("Starting animation\n"); clear_angle_drawer(system); animate_cannon2(system); playSound(fireSound, system->audio); // Post-animation Calculation switch (animateShooting(system, player2, wind)) { // different value for result case 1: { update_health(player1, system, -DAMAGE); printf( "Player 2 hit player 1.\n Remaining Health for Player 1: %d\n", player1->health); break; } case 2: { update_health(player2, system, -DAMAGE); printf( "Player 2 hit player 2.\n Remaining Health for Player 2: %d\n", player2->health); break; } default: { break; } } if (player1->health <= 0 || player2->health <= 0) { break; } }; /* * Find out who won. */ if (player1->health <= 0) { printf("Player 2 Wins!!! \n"); draw_P2WIN(system); } else if (player2->health <= 0) { printf("Player 1 Wins!!!\n"); draw_P1WIN(system); } else { printf("we shouldn't be here.\n"); } restart = restartGame(system); } return 0; // FIN }