void run0() { /* Setup */ int count = 0; while(count++ < body_count) { bodies[count] = new_body(10, count, 0, 0, 0, 0, 0); /* TODO Fill in values for bodies */ } /* Update all bodies while running */ while(!done) { count = 0; while(count++ < body_count) { update(bodies[count]); } count = 0; while(count++ < body_count) { step(bodies[count], time_step); } } /* Free resources when done*/ count = 0; while(count++ < body_count) { free(bodies[count]); } }
void add_last_body(SNAKE *snake) { snake->length = snake->length+1; BODY *new_b = new_body(); new_b->pre = snake->body_last; snake->body_last->next = new_b; if (snake->body_last->x == snake->body_last->pre->x) { new_b->x = snake->body_last->x; if (snake->body_last->y > snake->body_last->pre->y) new_b->y = snake->body_last->y+1; else new_b->y = snake->body_last->y-1; } else { new_b->y = snake->body_last->y; if (snake->body_last->x > snake->body_last->pre->x) new_b->x = snake->body_last->x+1; else new_b->x = snake->body_last->x-1; } snake->body_last = new_b; }
void new_body_affer_head(SNAKE *snake) { BODY *new_b = new_body(); new_b->x = snake->x; new_b->y = snake->y; new_b->next = snake->body_1st; snake->body_1st->pre = new_b; snake->body_1st = new_b; mvaddch(new_b->y, new_b->x, '#'); }
void init_snake(SNAKE *snake) { snake->head_chr = '@'; snake->body_chr = '#'; snake->length = 7; snake->d = KEY_LEFT; snake->y = LINES/2; snake->x = COLS/2; snake->body_1st = NULL; BODY *pre_b; BODY *b; int i; for (i=0; i<snake->length; i=i+1) { b = new_body(); b->i = i; b->x = snake->x+i+1; b->y = snake->y; if (i==0) { snake->body_1st = b; } else { b->pre = pre_b; b->next = NULL; pre_b->next = b; } if (i==snake->length-1) { snake->body_last = b; } pre_b = b; } }
void bv_elim::elim(quantifier* q, quantifier_ref& r) { svector<symbol> names, _names; sort_ref_buffer sorts(m_manager), _sorts(m_manager); expr_ref_buffer pats(m_manager); expr_ref_buffer no_pats(m_manager); expr_ref_buffer subst_map(m_manager), _subst_map(m_manager); var_subst subst(m_manager); bv_util bv(m_manager); expr_ref new_body(m_manager); expr* old_body = q->get_expr(); unsigned num_decls = q->get_num_decls(); family_id bfid = m_manager.get_family_id("bv"); // // Traverse sequence of bound variables to eliminate // bit-vecctor variables and replace them by // Booleans. // unsigned var_idx = 0; for (unsigned i = num_decls; i > 0; ) { --i; sort* s = q->get_decl_sort(i); symbol nm = q->get_decl_name(i); if (bv.is_bv_sort(s)) { // convert n-bit bit-vector variable into sequence of n-Booleans. unsigned num_bits = bv.get_bv_size(s); expr_ref_buffer args(m_manager); expr_ref bv(m_manager); for (unsigned j = 0; j < num_bits; ++j) { std::ostringstream new_name; new_name << nm.str(); new_name << "_"; new_name << j; var* v = m_manager.mk_var(var_idx++, m_manager.mk_bool_sort()); args.push_back(v); _sorts.push_back(m_manager.mk_bool_sort()); _names.push_back(symbol(new_name.str().c_str())); } bv = m_manager.mk_app(bfid, OP_MKBV, 0, 0, args.size(), args.c_ptr()); _subst_map.push_back(bv.get()); } else { _subst_map.push_back(m_manager.mk_var(var_idx++, s)); _sorts.push_back(s); _names.push_back(nm); } } // // reverse the vectors. // SASSERT(_names.size() == _sorts.size()); for (unsigned i = _names.size(); i > 0; ) { --i; names.push_back(_names[i]); sorts.push_back(_sorts[i]); } for (unsigned i = _subst_map.size(); i > 0; ) { --i; subst_map.push_back(_subst_map[i]); } expr* const* sub = subst_map.c_ptr(); unsigned sub_size = subst_map.size(); subst(old_body, sub_size, sub, new_body); for (unsigned j = 0; j < q->get_num_patterns(); j++) { expr_ref pat(m_manager); subst(q->get_pattern(j), sub_size, sub, pat); pats.push_back(pat); } for (unsigned j = 0; j < q->get_num_no_patterns(); j++) { expr_ref nopat(m_manager); subst(q->get_no_pattern(j), sub_size, sub, nopat); no_pats.push_back(nopat); } r = m_manager.mk_quantifier(true, names.size(), sorts.c_ptr(), names.c_ptr(), new_body.get(), q->get_weight(), q->get_qid(), q->get_skid(), pats.size(), pats.c_ptr(), no_pats.size(), no_pats.c_ptr()); }