void draw_tree(BITMAP *bitmap, VECTOR p, VECTOR v, NODE *node, int x, int y, int r, int c) { int inv_c = inverse_color(c); if(node != NULL) { if(node->right != NULL) { //line(bitmap, x, y, x + 2 * r, y + 2 * r, inv_c); draw_tree(bitmap, p, v, node->right, x + 2 * r, y + 2 * r, r, c); } if(node->left != NULL) { //line(bitmap, x, y, x - 2 * r, y + 2 * r, inv_c); draw_tree(bitmap, p, v, node->left, x - 2 * r, y + 2 * r, r, c); } if(in_view(p, v, node->a, node->b)) vector_line(bitmap, node->a, node->b, makecol(255, 255, 255)); else vector_line(bitmap, node->a, node->b, 0); textprintf_centre_ex(bitmap, font, node->a.x - 10, node->a.y, makecol(0, 0, 255), -1, "%d", node->val); //circlefill(bitmap, x, y, r, c); //circle(bitmap, x, y, r, inv_c); //textprintf_centre_ex(bitmap, font, x, y - 4, inv_c, -1, "%d", node->val); } }
main() { cpc_SetBorder(3); cpc_DisableFirmware(); cpc_SetMode(2); // https://codeforwin.org/2017/12/access-two-dimensional-array-using-pointers-c-programming.html inverse_color(&(sprite+2),sprite[0],sprite[1]); putsprite(SPR_OR, 0, 0, sprite); while (!cpc_AnyKeyPressed()){} }