//////////////////////////Vòng lặp chính của trò chơi/////////////////////////////////// int play_loop(int player) { char a[100],*word_guess,res; int ligne, ligne_random, l_word=0, end=0,select,i=0; if (player == 1) // 1 player { ligne = count_ligne(a,word_guess); srand(time(NULL)); ligne_random = rand()%ligne+0; //Chọn 1 hàng ngẫu nhiên trong file l_word = get_word_guess(a,word_guess,ligne_random,word,l_word); } else // 2 player { system("cls"); do { printf("\n\n\n\t\tPlayer1 enter a word ! (more than 2 letters) : \n"); printf("\t\t");scanf("%s",&a); for (i=0;a[i]!= '\0' ; i++) l_word++; if (l_word < 2) printf("\n\t\tWrong type ! Enter again"); } while (l_word < 2); for (i=0;a[i]!= '\0' ; i++) { word[i] = a[i]; flip[i] = 0; } } do { system("cls"); print_gallows(end); printf("\n\t");print_guess(l_word); printf("\n\n\tMisses: "); print_misses(i); if (check_correct(l_word) == 1) break; //Kết thúc game if (end < 7) { menu_play(); scanf("%d",&select); switch(select) { case 1: printf("\n\n\tGuess a letter! : "); scanf("%s",&res); if(check_lettre(l_word,res) == 0) { end++; miss[i] = res; i++; } else if (check_lettre(l_word,res) == 2) end++; break; case 2: end = 7; break; case 3: play_loop(player); return 0; break; case 4: return 0; } } else break; } while(end < 8); // Hiện kết quả system("cls"); print_gallows(end); if (check_correct(l_word)==1) { printf("\n\n\n\t\tYou WIN ! \n"); solution(l_word); } else { printf("\n\n\n\t\tYou LOSE ! \n"); solution(l_word); } printf("\n\t\t1.New \t2.Quit \t3.Menu\n"); printf("\t\tSelect : "); scanf("%d",&select); switch(select) { case 1: play_loop(player); return 0; break; case 2: break; case 3: return 0; } return 1; }
int main(int argc, char **argv) { GRRLIB_Init(); // Initialise the attached controllers WPAD_Init(); WPAD_SetDataFormat(WPAD_CHAN_0, WPAD_FMT_BTNS_ACC_IR); // Initialise the audio subsystem AESND_Init(NULL); MODPlay_Init(&play); MODPlay_SetMOD(&play,bg_music); MODPlay_SetVolume(&play,63,63); MODPlay_Start(&play); cui_cursor cursor; cursor.tex[0]=GRRLIB_LoadTexture(player1_point_png); cursor.tex[1]=GRRLIB_LoadTexture(player1_grab_png); cursor.is_grabbing=false; cui_board board; ENGINE engine = FIRSTCHESS; if(engine == TSCP){ int i; for (i=0; i < CUI_TILE_NB; i++) { board.piece[i]=init_piece[i]; if(init_color[i] == 1){ board.color[i]=CUI_BLACK; }else if (init_color[i] == 6){ board.color[i]=CUI_EMPTY; }else if (init_color[i] == 0){ board.color[i]=CUI_WHITE; } } init_hash(); init_board(); open_book(); gen(); } cui_board_read_core(&board, engine); GRRLIB_SetBackgroundColour(0x030, 0x30, 0x42, 0xFF); board.tile_color1 = 0xAAAAAAFF; board.tile_color2 = 0x444444FF; board.piece_color1 = 0xAAAAAAFF; board.piece_color2 = 0x444444FF; cui_board_init(&board); cui_game game; game.board = &board; game.engine = engine; game.cursor = &cursor; game.is_mute = false; GRRLIB_texImg *tex_wallpaper = GRRLIB_LoadTexture(wall_jpg); game.tex_wallpaper = tex_wallpaper; voice = AESND_AllocateVoice(aesnd_callback); AESND_SetVoiceVolume(voice, 0xFF, 0xFF); AESND_SetVoiceStream(voice, true); cui_menu current_state = CUI_MENU_MAIN; while(current_state != CUI_MENU_EXIT) { switch(current_state){ case CUI_MENU_MAIN: current_state=menu_main(&game);break; case CUI_MENU_PLAY: current_state=menu_play(&game);break; case CUI_MENU_OPTION:current_state=menu_option(&game);break; case CUI_MENU_OPTION_GENERAL:current_state=menu_option_general(&game);break; case CUI_MENU_OPTION_GFX:current_state=menu_option_gfx(&game);break; case CUI_MENU_OPTION_SND:current_state=menu_option_snd(&game);break; case CUI_MENU_CREDITS:current_state=menu_credits(&game);break; case CUI_MENU_PAUSE:current_state=menu_pause(&game);break; case CUI_MENU_HOME:current_state=menu_home(&game);break; case CUI_MENU_EXIT:current_state=menu_exit(&game);break; default:break; } } GRRLIB_FreeTexture(tex_wallpaper); GRRLIB_FreeTexture(cursor.tex[0]); GRRLIB_FreeTexture(cursor.tex[1]); GRRLIB_Exit(); return 0; }