void MainWindow::move() { auto s_head = getHead(); auto s_food = QPoint(food_pos.x(), food_pos.y()); auto s_foot = getFoot(); state_now = find_way(s_head, s_food); if(state_now == -1){ state_now = find_way(s_head, s_foot); } if(state_now == to_left) { go_left(); }else if(state_now == to_right){ go_right(); }else if(state_now == to_up){ go_up(); }else if(state_now == to_down){ go_down(); }else{ state_now = getRandomStep(s_head); if(state_now == -1){ QMessageBox::information(0, "", "end"); gameover(); }else if(state_now == to_left){ go_left(); }else if(state_now == to_right){ go_right(); }else if(state_now == to_up){ go_up(); }else if(state_now == to_down){ go_down(); } } update(); }
int check_lemin(char *line, t_check *check, t_cells **cells) { FT_INIT(int, nb_args, check_nb_args(line)); if (!line) return (find_way(check)); if (ft_strchr(line, '#') && (ft_strcmp(line, "##start") && ft_strcmp(line, "##end"))) return (1); if (!check->ants && nb_args == 1 && nb_ants(line, check, 1)) return (1); if (check->ants && start_end_min(line, check)) return (nb_args == 1 ? 1 : 0); if (check->ants && nb_args == 3 && (check->start || check->end || !(*cells))) { build_list(cells, check, line); if (check->start) check->start_cell = ft_strdup((*cells)->name); else if (check->end) check->end_cell = ft_strdup((*cells)->name); MULTI(check->start, check->end, 0); return (1); } if (check->ants && check->start_list && nb_args <= 3 && !build_list(cells, check, line)) return (0); return (1); }
/* typedef struct stack { char ch[MAXSIZE]; int top; }SeqStack; SeqStack * init_stack () { SeqStack *p; p = (SeqStack *)malloc(sizeof(SeqStack)); p->top = -1; } void push_stack (SeqStack * p, char data) { if (p->top == MAXSIZE) { printf("栈满\n"); exit; } printf("压入%c\n", data); p->top++; p->ch[p->top] = data; } void pop_stack(SeqStack * p, char * data) { if (p->top == -1) { printf("栈为空\n"); exit; } printf("弹出%c\n", p->ch[p->top]); *data = p->ch[p->top]; p->top--; } void get_stack(SeqStack * p, char * data) { if (p->top == -1) { printf("栈为空\n"); exit ; } *data = p->ch[p->top]; } */ void find_way(SeqStack * p, BiTree * root) { char tmp; if (root->Lchild == NULL && root->Rchild == NULL) { pop_stack (p, &tmp); printf("%c\t", tmp); } push_stack(p, root->data); find_way(p, root->Lchild); find_way(p, root->Rchild); }
int main(int argc, char *argv[]) { BiTree *root1, *root2; BiTree *tmp; // SeqStack *p; int flag = 0; printf("请输入第一棵书\n"); root1 = CreatTree_char(root1); printf("创建成功\n"); /* printf("请输入第二棵树\n"); getchar(); root2 = CreatTree_char(root2); printf("创建成功\n"); printf("相似度为%d\n", like(root1, root2)); PrintTree(root1, PostTreeDepth(root1)); tmp = find_child(root1, 'f'); printf("当前节点%c\n", tmp->data); printf("双亲是%c\n", parent(root1,tmp)->data); count_parent(root1, &flag); printf("度为二的节点的数目为%d\n", flag); PrintTree (root1, 1); change_tree(root1); PrintTree(root1, 1); */ // p = init_stack(); find_way(p, root1); return EXIT_SUCCESS; }
int my_compute(t_filler *f) { int x; int y; y = -1; while (++y < f->grid.hig && (x = -1)) while (++x < f->grid.wid) if (f->grid.g[y][x] == f->mychars[0]) f->grid.g[y][x] = f->mychars[1]; while (1) { find_way(f); if (test_form(f, &f->grid, &x, &y)) break ; f->grid.g[f->y][f->x] = f->mychars[0]; if (!find_next_case(f, &f->grid)) return (0); } ft_printf("%d %d\n", y, x); return (1); }