void print_input_buf( char * str, int input_off ) { save_position(); move_xy( 20, 10 ); printf(" \n"); move_xy( 20, 10 ); printf("%s len = %d\n", str, strlen(str) ); printf( "input_off = %d\n", input_off ); fflush( NULL ); restore_position(); }
int debug( char * fmt, char * str ) { save_position(); move_xy( 65, 15 ); printf(" \n"); move_xy( 65, 15 ); printf( fmt, str ); restore_position(); }
int show_window( void ) { clear_screen(); get_win_size( &winx, &winy ); rectangle( 1, 1, winx, winy ); move_xy( 3, 3 ); printf("善哉词霸"); rectangle( 13, 2, winx-15, 3 ); line( 1, 5, winx, 0, '=' ); line( winx / 3, 6, winy-6, 1, '|' ); move_xy( 10,10 ); fflush( NULL ); }
int show_explain( char * words, char * explain ) { save_position(); bar( winx/3 + 2, 7, winx/3*2 -2, winy - 8, ' ' ); move_xy( winx / 3 + 2, 7 ); if( explain == NULL ) { printf("sorry, 没有找到这个单词.\n" ); } else { printf("------ <<善哉电子辞典>> -------"); move_xy( winx / 3 + 2, 8 ); printf("单词: "); move_xy( winx / 3 + 2, 9 ); printf(" %s", words ); move_xy( winx / 3 + 2, 10 ); printf("意义: "); move_xy( winx / 3 + 2, 11 ); printf( " %s\n", explain ); } restore_position(); }
void show_chinese(char *chinese,char *english) { int i,l; if(chinese != NULL && english != NULL) { save_position(); move_xy(7,win_y / 3 + 1); puts("单词:"); move_xy(8,win_y / 3 + 1); printf(" %s\n",english); move_xy(10,win_y / 3 + 1); puts("意义:"); move_xy(11,win_y / 3 + 1); printf(" %s\n",chinese); restore_position(); } }
int show_left_words( char * prefix, char left_words[][MAX_WORDS_LEN] ) { save_position(); bar( 2, 6, winx / 3 - 3, left_words_num, ' ' ); int i; for( i=0; i<have_search_words_num; i++ ) { move_xy( 3, 6+i ); left_words[i][winx/3-5-strlen(prefix)] = '\0'; printf("%s%s", prefix, left_words[i] ); } fflush( NULL ); restore_position(); }
void vmouse_run(struct vmouse_state *ms) { if(ms->mouse_mode) { if(ms->mc) { move_wheel(input_fd, ms->mx/24, ms->my/24); } else { move_xy(input_fd, ms->mx/8, ms->my/8); } if(ms->mx < 0) ms->mx = ms->mx*7/8 - 24; if(ms->mx > 0) ms->mx = ms->mx*7/8 + 24; if(ms->my < 0) ms->my = ms->my*7/8 - 24; if(ms->my > 0) ms->my = ms->my*7/8 + 24; } }
void show_english(char *english) { save_position(); int i,j,k; for(i = 0;i < word_count;i++) { move_xy(6 + i,2); for(j = 0;english[j] != 0 && j < win_y / 3 - 3;j++) putchar(english[j]); for(k = 0;word[i][k] != 0 && j < win_y / 3 - 3;k++,j++) putchar(word[i][k]); } fflush(stdout); restore_position(); }
int main(int argc,char *argv[],char *env[]) { pdict = dict_create(); FILE *fp = fopen(FILE_NAME,"r"); if(fp == NULL) { perror("fopen"); return FAILED; } char english[1000]; char chinese[1000]; while(!feof(fp)) { memset(english,0,sizeof(english)); memset(chinese,0,sizeof(chinese)); if(fgets(english,sizeof(english),fp) == NULL) break; *strchr(english,'\n') = 0; if(fgets(chinese,sizeof(chinese),fp) == NULL) break; *strchr(chinese,'\n') = 0; dict_insert(pdict,english,chinese); } signal(28,handle); show_window(); move_xy(3,15); char key; while(1) { key = get_key(); switch(key) { case ESC: clear_screen(); move_xy(1,1); return 0; case BACKSPACE: if(buf_i > 0) { move_left(1); putchar(' '); fflush(stdout); move_left(1); buf_i--; input_buf[buf_i] = 0; show_word(pdict,input_buf); } break; default: if(buf_i <= win_y - 20 && isprint(key)) { putchar(key); fflush(stdout); input_buf[buf_i] = key; buf_i++; input_buf[buf_i] = 0; show_word(pdict,input_buf); } } } return 0; }
void check_controller(rov_context_t *context) { JoystickEvent event; bool result = context->joystick->sample(&event); if(result && !event.isInitialState()) { if(event.isAxis()) { int value = event.value; switch(event.number) { case 0: // The x axis { x = value; move_xy(context, x, y); } break; case 1: // The y axis { y = value; move_xy(context, x, y); } break; case 2: // The twist axis { rotate_z(context, value); } break; case 3: // The kull axis { move_z(context, value); } break; case 4: // Top x-axis { top_x = value; balance(context, top_x, top_y); } break; case 5: // Top y-axis { top_y = value; balance(context, top_x, top_y); } break; } } else if(event.isButton()) { if (event.value) { switch(event.number) { case 0: { rov_interface::control_gripper(context, 20); } break; case 1: { rov_interface::control_gripper(context, 150); } break; case 2: { rov_interface::switch_camera(context, 3); } break; case 3: { rov_interface::switch_camera(context, 4); } break; case 4: { rov_interface::switch_camera(context, 8); } break; case 8: { valve_opener_pwm -= 16; } break; case 9: { valve_opener_pwm += 16; } break; } } if (event.number == 10) { rov_interface::set_motor(context, VALVE_OPENER, event.value, false, valve_opener_pwm); } else if (event.number == 11) { rov_interface::set_motor(context, VALVE_OPENER, false, event.value, valve_opener_pwm); } } } }
int main( int argc, char ** argv ) { g_dict_list_t gdl; init_g_dict_list( &gdl ); printf("正在加载词库...\n"); FILE * fp = fopen( CIKU_FILENAME, "rb" ); if( fp == NULL ) { perror("fopen"); return 1; } char words_line[1024]; char explain_line[1024]; char * ret; char * p; int len = 0; while( !feof( fp ) ) { ret = fgets( words_line, sizeof(words_line), fp ); if( ret == NULL ) break; p = strchr(words_line, '\n'); *p = '\0'; len += strlen( words_line ); ret = fgets( explain_line, sizeof(explain_line), fp ); if( ret == NULL ) break; p = strchr(explain_line, '\n'); *p = '\0'; insert_dict_glist( &gdl, words_line, explain_line ); } printf("cha liao %d ci.\n", gdl.node_num ); printf("加载完毕.\n"); //traversal_glist( gdl.first_level ); printf("len = %d\n", len ); //return 0; show_window(); char input_buf[ winy ]; move_input_window(); int key; int input_off = 0; left_words_num = winy - 6; char left_words[ left_words_num ][MAX_WORDS_LEN]; char * explain; insert_dict_glist( &gdl, "shit", "些特" ); while( 1 ) { key = get_key( 0 ); switch( key ) { case BACKSPACE: if( input_off > 0 ) { move_left( 1 ); putchar( ' ' ); move_left( 1 ); input_off --; input_buf[ input_off ] = '\0'; bzero( left_words, sizeof(left_words) ); search_words( &gdl, input_buf, left_words, &explain ); show_left_words( input_buf, left_words ); show_explain( input_buf, explain ); fflush( NULL ); } break; case ESC: clear_screen(); move_xy( 1, 1 ); exit( 0 ); break; default: if( input_off < winx - 20 ) { if( isprint( key ) ) putchar( key ); input_buf[ input_off ++ ] = key; input_buf[ input_off ] = '\0'; bzero( left_words, sizeof(left_words) ); search_words( &gdl, input_buf, left_words, &explain ); show_left_words( input_buf, left_words ); show_explain( input_buf, explain ); fflush( NULL ); } } } return 0; }
int move_input_window( void ) { move_xy( 15, 3 ); }