void initialize_pong_game(){ unsigned i; clear_screen(); for (i=0;i<ROW_SIZE;i++){ video_buffer[i+TOP_BORDER*ROW_SIZE]=0xff; video_buffer[i+ROW_SIZE*BOTTOM_BORDER]=0xff; } for (i=TOP_BORDER+1;i<(BOTTOM_BORDER-1);i++){ if (i&1) video_buffer[ROW_SIZE*i+3]=1u; } running=0; score[LEFT_PLAYER]=0; score[RIGHT_PLAYER]=0; server=winner; winner=NO_WINNER; paddle[LEFT_PLAYER]=read_pot(LEFT_PLAYER)+TOP_BORDER; paddle[RIGHT_PLAYER]=read_pot(RIGHT_PLAYER)+TOP_BORDER; if (server==LEFT_PLAYER){ ball.x=LEFT_BORDER+1; ball.y=paddle[LEFT_PLAYER]+1; }else{ ball.x=RIGHT_BORDER-1; ball.y=paddle[RIGHT_PLAYER]+1; } ball.dx=0; ball.dy=0; write_score(LEFT_PLAYER,score[LEFT_PLAYER]); write_score(RIGHT_PLAYER,score[RIGHT_PLAYER]); draw_paddle(LEFT_PLAYER,WHITE); draw_paddle(RIGHT_PLAYER,WHITE); plot(ball.x,ball.y,WHITE); srand(frame_cntr); }//f()
// attend que le joueur déplace sa raquette void wait_service(){ int y; paddle[server]=read_pot(server)+TOP_BORDER; while (1){ y=read_pot(server)+TOP_BORDER; if (y<paddle[server]-1 || y>paddle[server]+1) break; move_paddle(1-server);// l'autre joueur peut se déplacer en attendant le service. } ball.dy=rand()%3 - 1; if (server==LEFT_PLAYER){ ball.dx=1; }else{ ball.dx=-1; } ball.skip=rand()%2; }//f()
// déplace la raquette du joueur void move_paddle(int player){ int new_y; new_y=read_pot(player)+TOP_BORDER; if (new_y!=paddle[player]){ draw_paddle(player, HIDE); paddle[player]=new_y; draw_paddle(player,SHOW); } }//f()
uint8_t read_mode(void) { uint8_t pot_reading = read_pot(); if (pot_reading > ((3 * MAX_POT_VALUE) / 4)) return MODE_NORMAL; if (pot_reading > (MAX_POT_VALUE / 2)) return MODE_SILENT; if (pot_reading > (MAX_POT_VALUE / 4)) return MODE_HARD; return MODE_FREE_PLAY; }