/** * \brief The mouse has been pressed on the item. * \param button The pressed button. * \param pos The position of the mouse on the item. */ bool bear::system_sound_toggle::mouse_pressed_local ( input::mouse::mouse_code button, const universe::position_type& pos ) { super::mouse_pressed_local( button, pos ); toggle_sound(); return true; } // system_sound_toggle::mouse_pressed_local()
void new_game(void) { char c = 0; cancel_software_timer(foodTimerNum); cancel_software_timer(ratsTimerNum); empty_display(); //wait for space while(c != ' ' && c != 'l' && c != 'L'){ if(input_available()) c = fgetc(stdin); if(c == 'M' || c == 'm'){ toggle_sound(); display_sound_status(); c = 0; } } init_display(); if(c == 'l' || c == 'L'){ if(load_state()) render_board(); else { /* Initialise internal representations. */ init_board(); init_score(); } } else { /* Initialise internal representations. */ init_board(); init_score(); } clear_terminal(); //Place scores update_score(); //place sound status display_sound_status(); show_instruction(PLAYING); /* Make food blink 5 times a second. We should call blink_food ** 10 times a second which is 100ms */ foodTimerNum = execute_function_periodically(BLINKRATE, blink_food); ratsTimerNum = execute_function_periodically(RATSPEED, move_rats); /* Debug * move_cursor(0, TITLEY-1); printf_P(PSTR("new_game %u"), get_score()); wait_for(1000); //*/ }
/** * \brief The finger has been used on the item. * \param event The event dispatched by the finger. */ bool bear::system_sound_toggle::finger_action_local ( const input::finger_event& event ) { super::finger_action_local( event ); if ( event.get_type() != input::finger_event::finger_event_pressed ) return false; toggle_sound(); return true; } // system_sound_toggle::finger_action_local()
int main() { rs232_fd = open("/dev/ttyS0", O_RDWR | O_NOCTTY | O_NDELAY); if (rs232_fd < 0) { fprintf(stderr, "RS232 error\n"); exit(1); } set_interface_attribs(rs232_fd, B115200, 0); set_blocking(rs232_fd, 0); write(rs232_fd, "PCready\n", 8); printf("READY\n"); while(1) { int array[2]; array[0] = 0, array[1] = 1; toggle_sound(array, 2, 1); usleep(10000000); } /* while(1) { fprintf(rs232, "PC ready\n"); fgets(buffer, 10000, rs232); if (strcmp(buffer, "DE2 ready") == 0) { break; } } */ /* int mode; scanf("%d", &n); switch (mode) { case 1: break; case 2: break; } */ return 0; }
/* * main -- Main program. */ int main(void) { uint8_t chars_into_escape_sequence = 0; int8_t moveStatus = 0; char c; /* Initialise our main clock */ init_timer(); /* Initialise serial I/O */ init_serial_stdio(19200, 0); /* Make the display_row() function be called every 2ms. ** (This function returns a timer number, but we ignore ** this since we'll never do anything with it.) */ execute_function_periodically(2, display_row); /* Register the time_increment() function to be called every 500ms. ** This function just sets a variable (timePassedFlag). */ mainTimerNum = execute_function_periodically(500, time_increment); //4209435 /* setup AVR to handle sounds*/ init_sound(); /* ** Turn on interrupts (needed for timer and serial input/output to work) */ sei(); /* ** Display splash screen */ splash_screen(); show_instruction(NEWGAME); /* ** Perform necessary initialisations for a new game. */ new_game(); /* ** Event loop - wait for a certain amount of time to pass or wait ** for a character to arrive from standard input. The time_passed_flag ** is set within the function time_increment() below - which is setup ** to be called periodically. */ for(;;) { if(timePassedFlag) { moveStatus = move_snake(); timePassedFlag = 0; } else if(input_available()) { /* Read the input from our terminal and handle it */ c = fgetc(stdin); if(chars_into_escape_sequence == 0 && c == '\x1b') { /* ** Received ESCAPE character - we're one character into ** an escape sequence */ chars_into_escape_sequence = 1; } else if(chars_into_escape_sequence == 1 && c == '[') { /* ** We're now two characters into an escape sequence */ chars_into_escape_sequence = 2; } else if (chars_into_escape_sequence == 2) { /* We're two characters into an escape sequence and ** have received another - see if it is as expected. */ if (c == 'C') { /* Cursor right key pressed - Set next direction to ** be moved to RIGHT */ set_snake_dirn(RIGHT); } if (c == 'D') { /* Cursor left key pressed - Set next direction to ** be moved to LEFT */ set_snake_dirn(LEFT); } if (c == 'A') { /* Cursor up key pressed - Set next direction to ** be moved to UP */ set_snake_dirn(UP); } if (c == 'B') { /* Cursor down key pressed - Set next direction to ** be moved to DOWN */ set_snake_dirn(DOWN); } /* else, unknown escape sequence */ /* We're no longer part way through an escape sequence */ chars_into_escape_sequence = 0; } else if(chars_into_escape_sequence != 0) { /* ** We started an escape sequence but didn't get a character ** we recognised - discard it and assume that we're not ** in an escape sequence. */ chars_into_escape_sequence = 0; } else if (c == ' ') { /* Space character received - move snake immediately */ moveStatus = move_snake(); } else { if(c == 'N' || c == 'n'){ show_instruction(NEWGAME); new_game(); } else if(c == 'P' || c == 'p'){ moveStatus = 0; pause_game(); } else if(c == 'M' || c == 'm'){ toggle_sound(); display_sound_status(); } } } switch(moveStatus){ case ATE_FOOD: if(sound_status()) play_sound(); moveStatus = MOVE_OK; break; } if(moveStatus < 0) { /* Move failed - game over */ handle_game_over(); moveStatus = 0; update_score(); } } }
static void enable_sound_button_toggled(GtkWidget *widget, gpointer data) { g_context.sound_enabled = ! g_context.sound_enabled; toggle_sound(g_context.sound_enabled); }