/* This function sets the configurations of the bitmap window. */ int vpbe_bitmap_get_params(u8 * id, struct vpbe_bitmap_config_params *required) { int result = 0; if (is_win(id, VID0) || is_win(id, VID1)) return -VPBE_WRONG_WINDOW_ID; if (is_win(id, OSD0)) { required->attenuation_enable = dm->osd0->conf_params.bitmap_params.attenuation_enable; required->clut_idx = dm->osd0->conf_params.bitmap_params.clut_idx; required->clut_select = dm->osd0->conf_params.bitmap_params.clut_select; } else { required->attenuation_enable = dm->osd1->conf_params.bitmap_params.attenuation_enable; required->clut_idx = dm->osd1->conf_params.bitmap_params.clut_idx; required->clut_select = dm->osd1->conf_params.bitmap_params.clut_select; } return result; }
/* This function sets the cb-cr order in the pixel data for video windows. */ int vpbe_set_vid_params(u8 * id, vpbe_video_config_params_t * required) { int result = 0; /* Validate id. Return negative in case of error. */ if (!is_win(id, VID0) && !is_win(id, VID1)) return -VPBE_WRONG_WINDOW_ID; if (is_win(id, VID0)) { dispc_reg_merge(OSD_MODE, required->cb_cr_order << OSD_MODE_CS_SHIFT, OSD_MODE_CS); vpbe_set_vid_expansion(&required->exp_info); dm->vid0->conf_params.video_params.cb_cr_order = required->cb_cr_order; dm->vid0->conf_params.video_params.exp_info = required->exp_info; } else { dispc_reg_merge(OSD_MODE, required->cb_cr_order << OSD_MODE_CS_SHIFT, OSD_MODE_CS); dm->vid1->conf_params.video_params.cb_cr_order = required->cb_cr_order; } return result; }
bool run_game(){ mouse_msg msg = {0}; gen_pos(pos); while(mousemsg()){ msg = getmouse(); if(msg.is_down() && get_current_status() == C_BLACK_S ){ C_POS c_pos; int board_x,board_y; get_right_pos(msg.x,msg.y,&board_x,&board_y); c_pos.x = pos[board_x][board_y].x; c_pos.y = pos[board_x][board_y].y; draw_chess(&c_pos,BLACK); update_board_status(board_x,board_y,C_BLACK); if(is_win(board_x,board_y,C_BLACK)) xyprintf(480,120,black_win); update_status(white_status); } else if(msg.is_down() && get_current_status() == C_WHITE_S){ C_POS c_pos; int board_x,board_y; get_right_pos(msg.x,msg.y,&board_x,&board_y); c_pos.x = pos[board_x][board_y].x; c_pos.y = pos[board_x][board_y].y; draw_chess(&c_pos,WHITE); update_board_status(board_x,board_y,C_WHITE); if(is_win(board_x,board_y,C_WHITE)) xyprintf(480,120,white_win); update_status(black_status); } } return true; }
void ft_match(t_tab *obj, int i) { int count; count = 0; while (aff_tab(glob_obj(0)->tab), !obj->end && count < ft_mult(obj)) { if (!is_win(obj)) { if (!obj->player) { ft_putendl("YOUR TURN"); i = real_player(obj); } else { ft_putendl("COMPUTER TURN"); i = ia_turn(glob_obj(0)->tab); } if (check_col(i) == 0) { ins_col(i); obj->count_max--; } } else break ; } }
int algo(t_data *data) { if (data->key_func[data->index]) data->key_func[data->index](data->key); if (play(data->grid, data->key) == 0) { data->key = -1; return (0); } del_rest_of_the_list(data); if (add_list(&data->list, data->grid)) return (1); data->current = data->current->next; add_random(data->grid); blit_this(data); if (is_win(data->grid)) { data->play = 0; return (0); } else if (is_lost(data->grid)) { data->play = 0; return (0); } data->key = -1; return (0); }
int play_game(int player, char map[][WIDTH]) { int x, y; scanf("%d,%d", &x, &y); if (x < 0 || y < 0 || x > HIGHT || y > WIDTH) { printf("error!\n"); return 0; } x--; y--; if (map[x][y] == '+') { if (player == WHITE) { map[x][y] = '@'; } if (player == BLACK) { map[x][y] = 'O'; } } else { printf("error!\n"); return 0; } if (is_win(player, map)) { return WIN; } return 1; }
/* This function gives video windows cb-cr order in the pixel data. */ int vpbe_get_vid_params(u8 * id, vpbe_video_config_params_t * current_conf) { int result = 0; if (is_win(id, OSD0) || is_win(id, OSD1)) return -VPBE_WRONG_WINDOW_ID; if (is_win(id, VID0)) { current_conf->cb_cr_order = dm->vid0->conf_params.video_params.cb_cr_order; current_conf->exp_info.horizontal = dm->vid0->conf_params.video_params.exp_info.horizontal; current_conf->exp_info.vertical = dm->vid0->conf_params.video_params.exp_info.vertical; } else current_conf->cb_cr_order = dm->vid1->conf_params.video_params.cb_cr_order; return result; }
/* This is used for setting the blend factor for the bitmap window.*/ int vpbe_bitmap_set_blend_factor(u8 * id, vpbe_bitmap_blend_params_t * blend_para) { int result = 0; /* If function call is not for OSD window, return error */ if (!is_win(id, OSD0) && !is_win(id, OSD1)) return -VPBE_WRONG_WINDOW_ID; /* Error checkingfor parameter passed */ if ((blend_para->enable_colorkeying > VPBE_ENABLE) || (blend_para->bf > 7) || (blend_para->colorkey > 0xFFFF)) return -VPBE_WRONG_WINDOW_ID; if (is_win(id, OSD0)) { dispc_reg_merge(OSD_OSDWIN0MD, (blend_para-> enable_colorkeying) << OSD_OSDWIN0MD_TE0_SHIFT, OSD_OSDWIN0MD_TE0); dispc_reg_merge(OSD_OSDWIN0MD, (blend_para-> bf) << OSD_OSDWIN0MD_BLND0_SHIFT, OSD_OSDWIN0MD_BLND0); dm->osd0->conf_params.bitmap_params.blend_info = *blend_para; } else { dispc_reg_merge(OSD_OSDWIN1MD, (blend_para-> enable_colorkeying) << OSD_OSDWIN1MD_TE1_SHIFT, OSD_OSDWIN1MD_TE1); dispc_reg_merge(OSD_OSDWIN1MD, (blend_para-> bf) << OSD_OSDWIN1MD_BLND1_SHIFT, OSD_OSDWIN1MD_BLND1); dm->osd1->conf_params.bitmap_params.blend_info = *blend_para; } dispc_reg_merge(OSD_TRANSPVA, (blend_para-> colorkey) << OSD_TRANSPVA_RGBTRANS_SHIFT, OSD_TRANSPVA_RGBTRANS); return result; }
/* This function is used to get the OSD window 0 blinking params.*/ int vpbe_get_blinking(u8 * id, vpbe_blink_option_t * current_conf) { int result = 0; if (!is_win(id, OSD1)) { return -VPBE_WRONG_WINDOW_ID; } *current_conf = dm->osd1->conf_params.bitmap_params.blink_info; return result; }
/* * do_move * Processes one player move. The player enters a row and column * and we have to determine if the square is valid (on the board) * and that there is no mark already there. We continue to ask * for row/column pairs until we receive a valid combination. * Then we mark the board, check for a win, and return. * * Input * player Indicates which player (1 or 2) is moving * Output * TRUE if this move won the game. * FALSE if this move did not win the game. * Error * None */ bool do_move(int player) { int x, y; bool first; char answer[MAXSTRING]; char cx; first = TRUE; printf("Player %d (%c), your move\n", player, player == X_PLAYER ? 'X' : 'O'); while (TRUE) { printf("Which row [0-%d]: ", DIM-1); if (read_string(answer, MAXSTRING) < 0) return(FALSE); // sscanf(answer, "%d", &x); cx = answer[0]; x = cx - '0'; if (x < 0 || x >= DIM) { printf("Invalid row; must be >= 0 and < %d\n", DIM-1); continue; } printf("Which column [0-%d]: ", DIM-1); if (read_string(answer, MAXSTRING) < 0) return(FALSE); cx = answer[0]; // sscanf(answer, "%d", &y); y = cx - '0'; if (y < 0 || y >= DIM) { printf("Invalid column; must be >= 0 and < %d\n", DIM-1); continue; } if (board[x][y] != EMPTY) { printf("That location is occupied; please try again\n"); print_board(); } else break; } board[x][y] = player == X_PLAYER ? X_MARKER : O_MARKER; return(is_win(x, y)); }
void show_winners(struct Board B, int st, bool useMiai) { int MP[TotalCells]; int MPsize; printf(" %c next-move winners\n",emit(st)); for (int r=0; r<N; r++) { for (int k=0; k<r; k++) printf(" "); for (int c=0; c<N-r; c++) { int lcn = fatten(r,c); Move mv(st,lcn); if ((B.board[lcn]==EMP)&&(is_win(B,mv,useMiai,MP,MPsize,false))) printf(" * "); else printf(" . "); } printf("\n"); } printf("\n"); }
/* Set the OSD window 0 blinking and blink interval. */ int vpbe_set_blinking(u8 * id, vpbe_blink_option_t * required) { int result = 0; if (!is_win(id, OSD1)) { return -VPBE_WRONG_WINDOW_ID; } if ((required->blinking > VPBE_ENABLE) || (required->interval > 3)) return -VPBE_INVALID_PARA_VALUE; dispc_reg_merge(OSD_OSDATRMD, required->blinking, OSD_OSDATRMD_BLNK); dispc_reg_merge(OSD_OSDATRMD, required->interval << OSD_OSDATRMD_BLNKINT_SHIFT, OSD_OSDATRMD_BLNKINT); dm->osd1->conf_params.bitmap_params.blink_info = *required; return result; }
void verif_state(t_sys *sys, t_state *state) { t_list *trav; trav = sys->open; while (trav) { if (is_win(state, trav->state->tab)) { if (state->move_cost >= trav->state->move_cost) return ; else { extract(&(sys->open), trav); insert(&(sys->open), state); return ; } } else trav = trav->next; } verif_state2(sys, state, trav); insert(&(sys->open), state); }
int main( void ) { int i, j, c; unsigned long step; char matrix[MAX][MAX]; char class; /*初始化随机数发生器、matrix矩阵、Site结构体*/ srand((unsigned)time(0)); Point Site; /*初始化矩阵matrix,填入顺序的数字标号*/ printf("I'm initializing...\n"); for(i = 0, class = CLASS; i < MAX; i++) for(j = 0; j < MAX; j++, class++) matrix[i][j]= class; matrix[MAX - 1][MAX - 1] = ' '; /*随机移动矩阵matrix中的数字标号,作为游戏起始状态*/ for(step = 0; step < MAX_STEP; step++) { c = roll(4); Site = find_point( &matrix[0] ); switch(c) { case 0: if((Site.y + 1) < MAX) { matrix[Site.x][Site.y] = matrix[Site.x][Site.y + 1]; matrix[Site.x][Site.y + 1] = ' '; } break; case 1: if((Site.y - 1) >= 0) { matrix[Site.x][Site.y] = matrix[Site.x][Site.y - 1]; matrix[Site.x][Site.y - 1] = ' '; } break; case 2: if((Site.x - 1) >= 0) { matrix[Site.x][Site.y] = matrix[Site.x - 1][Site.y]; matrix[Site.x - 1][Site.y] = ' '; } break; case 3: if((Site.x + 1) < MAX) { matrix[Site.x][Site.y] = matrix[Site.x + 1][Site.y]; matrix[Site.x + 1][Site.y] = ' '; } break; } } printf_matrix( &matrix[0] ); printf("I'm working...\n"); /*游戏部分,从键盘接收命令,执行相应的动作,并打印出矩阵*/ for(step = 0; is_win(&matrix[0]) != 1; step++) { c = my_getch(); Site = find_point( &matrix[0] ); switch(c) { case 'a': if((Site.y + 1) < MAX) { matrix[Site.x][Site.y] = matrix[Site.x][Site.y + 1]; matrix[Site.x][Site.y + 1] = ' '; } break; case 'd': if((Site.y - 1) >= 0) { matrix[Site.x][Site.y] = matrix[Site.x][Site.y - 1]; matrix[Site.x][Site.y - 1] = ' '; } break; case 's': if((Site.x - 1) >= 0) { matrix[Site.x][Site.y] = matrix[Site.x - 1][Site.y]; matrix[Site.x - 1][Site.y] = ' '; } break; case 'w': if((Site.x + 1) < MAX) { matrix[Site.x][Site.y] = matrix[Site.x + 1][Site.y]; matrix[Site.x + 1][Site.y] = ' '; } break; case 'Q': printf("Used %lu steps.\n", step); exit(0); } system("clear"); printf_matrix( &matrix[0] ); printf("Used %lu steps.\n", step); } /*打印出总共执行的步数step*/ system("clear"); printf_matrix( &matrix[0] ); printf("I win!\n"); printf("Used %lu steps.\n", step); return 0; }
/* This function sets the configurations of the bitmap window. */ int vpbe_bitmap_set_params(u8 * id, struct vpbe_bitmap_config_params *required) { int result = 0; if (is_win(id, VID0) || is_win(id, VID1)) return -VPBE_WRONG_WINDOW_ID; if (required->clut_select > 2) return -VPBE_INVALID_PARA_VALUE; if (is_win(id, OSD0)) { if (((dm->osd1->conf_params.bitmap_params.clut_select == SET_1) && (required->clut_select == SET_0)) || ((dm->osd1->conf_params.bitmap_params.clut_select == SET_0) && (required->clut_select == SET_1))) return -VPBE_INVALID_PARA_VALUE; } else { if (((dm->osd0->conf_params.bitmap_params.clut_select == SET_1) && (required->clut_select == SET_0)) || ((dm->osd0->conf_params.bitmap_params.clut_select == SET_0) && (required->clut_select == SET_1))) return -VPBE_INVALID_PARA_VALUE; } if (is_win(id, OSD0)) { if (required->clut_select == 2) { /* RAM CLUT */ dispc_reg_merge(OSD_OSDWIN0MD, SET_1 << OSD_OSDWIN0MD_CLUTS0_SHIFT, OSD_OSDWIN0MD_CLUTS0); } else if (required->clut_select == 1) { /* ROM1 CLUT */ dispc_reg_merge(OSD_OSDWIN0MD, SET_0 << OSD_OSDWIN0MD_CLUTS0_SHIFT, OSD_OSDWIN0MD_CLUTS0); dispc_reg_merge(OSD_MISCCT, SET_1 << OSD_MISCCT_RSEL_SHIFT, OSD_MISCCT_RSEL); } else { /* ROM0 CLUT */ dispc_reg_merge(OSD_OSDWIN0MD, SET_0 << OSD_OSDWIN0MD_CLUTS0_SHIFT, OSD_OSDWIN1MD_CLUTS0); dispc_reg_merge(OSD_MISCCT, SET_0 << OSD_MISCCT_RSEL_SHIFT, OSD_MISCCT_RSEL); } dispc_reg_merge(OSD_OSDWIN0MD, required-> attenuation_enable << OSD_OSDWIN0MD_ATN0E_SHIFT, OSD_OSDWIN0MD_ATN0E); if ((dm->osd0->info.var.bits_per_pixel == VPBE_BITMAP_BIT_1) || (dm->osd0->info.var.bits_per_pixel == VPBE_BITMAP_BIT_2) || (dm->osd0->info.var.bits_per_pixel == VPBE_BITMAP_BIT_4)) { dispc_reg_merge(OSD_W0BMP01, required->clut_idx.for_4bit_bimap. bitmap_val_0 << OSD_W0BMP01_PAL00_SHIFT, OSD_W0BMP01_PAL00); dispc_reg_merge(OSD_W0BMP01, required->clut_idx.for_4bit_bimap. bitmap_val_1 << OSD_W0BMP01_PAL01_SHIFT, OSD_W0BMP01_PAL01); dispc_reg_merge(OSD_W0BMP23, required->clut_idx.for_4bit_bimap. bitmap_val_2 << OSD_W0BMP23_PAL02_SHIFT, OSD_W0BMP23_PAL02); dispc_reg_merge(OSD_W0BMP23, required->clut_idx.for_4bit_bimap. bitmap_val_3 << OSD_W0BMP23_PAL03_SHIFT, OSD_W0BMP23_PAL03); dispc_reg_merge(OSD_W0BMP45, required->clut_idx.for_4bit_bimap. bitmap_val_4 << OSD_W0BMP45_PAL04_SHIFT, OSD_W0BMP45_PAL04); dispc_reg_merge(OSD_W0BMP45, required->clut_idx.for_4bit_bimap. bitmap_val_5 << OSD_W0BMP45_PAL05_SHIFT, OSD_W0BMP45_PAL05); dispc_reg_merge(OSD_W0BMP67, required->clut_idx.for_4bit_bimap. bitmap_val_6 << OSD_W0BMP67_PAL06_SHIFT, OSD_W0BMP67_PAL06); dispc_reg_merge(OSD_W0BMP67, required->clut_idx.for_4bit_bimap. bitmap_val_7 << OSD_W0BMP67_PAL07_SHIFT, OSD_W0BMP67_PAL07); dispc_reg_merge(OSD_W0BMP89, required->clut_idx.for_4bit_bimap. bitmap_val_8 << OSD_W0BMP89_PAL08_SHIFT, OSD_W0BMP89_PAL08); dispc_reg_merge(OSD_W0BMP89, required->clut_idx.for_4bit_bimap. bitmap_val_9 << OSD_W0BMP89_PAL09_SHIFT, OSD_W0BMP89_PAL09); dispc_reg_merge(OSD_W0BMPAB, required->clut_idx.for_4bit_bimap. bitmap_val_10 << OSD_W0BMPAB_PAL10_SHIFT, OSD_W0BMPAB_PAL10); dispc_reg_merge(OSD_W0BMPAB, required->clut_idx.for_4bit_bimap. bitmap_val_11 << OSD_W0BMPAB_PAL11_SHIFT, OSD_W0BMPAB_PAL11); dispc_reg_merge(OSD_W0BMPCD, required->clut_idx.for_4bit_bimap. bitmap_val_12 << OSD_W0BMPCD_PAL12_SHIFT, OSD_W0BMPCD_PAL12); dispc_reg_merge(OSD_W0BMPCD, required->clut_idx.for_4bit_bimap. bitmap_val_13 << OSD_W0BMPCD_PAL13_SHIFT, OSD_W0BMPCD_PAL13); dispc_reg_merge(OSD_W0BMPEF, required->clut_idx.for_4bit_bimap. bitmap_val_14 << OSD_W0BMPEF_PAL14_SHIFT, OSD_W0BMPEF_PAL14); dispc_reg_merge(OSD_W0BMPEF, required->clut_idx.for_4bit_bimap. bitmap_val_15 << OSD_W0BMPEF_PAL15_SHIFT, OSD_W0BMPEF_PAL15); } dm->osd0->conf_params.bitmap_params.clut_idx = required->clut_idx; dm->osd0->conf_params.bitmap_params.attenuation_enable = required->attenuation_enable; dm->osd0->conf_params.bitmap_params.clut_select = required->clut_select; } else if (is_win(id, OSD1)) { if (required->clut_select == 2) { /* RAM CLUT */ dispc_reg_merge(OSD_OSDWIN1MD, SET_1 << OSD_OSDWIN1MD_CLUTS1_SHIFT, OSD_OSDWIN1MD_CLUTS1); } else if (required->clut_select == 1) { /* ROM1 CLUT */ dispc_reg_merge(OSD_OSDWIN1MD, SET_0 << OSD_OSDWIN1MD_CLUTS1_SHIFT, OSD_OSDWIN1MD_CLUTS1); dispc_reg_merge(OSD_MISCCT, SET_1 << OSD_MISCCT_RSEL_SHIFT, OSD_MISCCT_RSEL); } else { /* ROM0 CLUT */ dispc_reg_merge(OSD_OSDWIN1MD, SET_0 << OSD_OSDWIN1MD_CLUTS1_SHIFT, OSD_OSDWIN1MD_CLUTS1); dispc_reg_merge(OSD_MISCCT, SET_0 << OSD_MISCCT_RSEL_SHIFT, OSD_MISCCT_RSEL); } dispc_reg_merge(OSD_OSDWIN1MD, required-> attenuation_enable << OSD_OSDWIN1MD_ATN1E_SHIFT, OSD_OSDWIN1MD_ATN1E); if ((dm->osd1->info.var.bits_per_pixel == VPBE_BITMAP_BIT_1) || (dm->osd1->info.var.bits_per_pixel == VPBE_BITMAP_BIT_2) || (dm->osd1->info.var.bits_per_pixel == VPBE_BITMAP_BIT_4)) { dispc_reg_merge(OSD_W1BMP0, required->clut_idx.for_4bit_bimap. bitmap_val_0 << OSD_W1BMP0_PAL00_SHIFT, OSD_W1BMP0_PAL00); dispc_reg_merge(OSD_W1BMP0, required->clut_idx.for_4bit_bimap. bitmap_val_1 << OSD_W1BMP0_PAL01_SHIFT, OSD_W1BMP0_PAL01); dispc_reg_merge(OSD_W1BMP2, required->clut_idx.for_4bit_bimap. bitmap_val_2 << OSD_W1BMP2_PAL02_SHIFT, OSD_W1BMP2_PAL02); dispc_reg_merge(OSD_W1BMP2, required->clut_idx.for_4bit_bimap. bitmap_val_3 << OSD_W1BMP2_PAL03_SHIFT, OSD_W1BMP2_PAL03); dispc_reg_merge(OSD_W1BMP4, required->clut_idx.for_4bit_bimap. bitmap_val_4 << OSD_W1BMP4_PAL04_SHIFT, OSD_W1BMP4_PAL04); dispc_reg_merge(OSD_W1BMP4, required->clut_idx.for_4bit_bimap. bitmap_val_5 << OSD_W1BMP4_PAL05_SHIFT, OSD_W1BMP4_PAL05); dispc_reg_merge(OSD_W1BMP6, required->clut_idx.for_4bit_bimap. bitmap_val_6 << OSD_W1BMP6_PAL06_SHIFT, OSD_W1BMP6_PAL06); dispc_reg_merge(OSD_W1BMP6, required->clut_idx.for_4bit_bimap. bitmap_val_7 << OSD_W1BMP6_PAL07_SHIFT, OSD_W1BMP6_PAL07); dispc_reg_merge(OSD_W1BMP8, required->clut_idx.for_4bit_bimap. bitmap_val_8 << OSD_W1BMP8_PAL08_SHIFT, OSD_W1BMP8_PAL08); dispc_reg_merge(OSD_W1BMP8, required->clut_idx.for_4bit_bimap. bitmap_val_9 << OSD_W1BMP8_PAL09_SHIFT, OSD_W1BMP8_PAL09); dispc_reg_merge(OSD_W1BMPA, required->clut_idx.for_4bit_bimap. bitmap_val_10 << OSD_W1BMPA_PAL10_SHIFT, OSD_W1BMPA_PAL10); dispc_reg_merge(OSD_W1BMPA, required->clut_idx.for_4bit_bimap. bitmap_val_11 << OSD_W1BMPA_PAL11_SHIFT, OSD_W1BMPA_PAL11); dispc_reg_merge(OSD_W1BMPC, required->clut_idx.for_4bit_bimap. bitmap_val_12 << OSD_W1BMPC_PAL12_SHIFT, OSD_W1BMPC_PAL12); dispc_reg_merge(OSD_W1BMPC, required->clut_idx.for_4bit_bimap. bitmap_val_13 << OSD_W1BMPC_PAL13_SHIFT, OSD_W1BMPC_PAL13); dispc_reg_merge(OSD_W1BMPE, required->clut_idx.for_4bit_bimap. bitmap_val_14 << OSD_W1BMPE_PAL14_SHIFT, OSD_W1BMPE_PAL14); dispc_reg_merge(OSD_W1BMPE, required->clut_idx.for_4bit_bimap. bitmap_val_15 << OSD_W1BMPE_PAL15_SHIFT, OSD_W1BMPE_PAL15); } dm->osd1->conf_params.bitmap_params.clut_idx = required->clut_idx; dm->osd1->conf_params.bitmap_params.attenuation_enable = required->attenuation_enable; dm->osd1->conf_params.bitmap_params.clut_select = required->clut_select; } return result; }
int is_win32() { return is_win() && is_32(); }