#include #include void tree(int x, int y, int length, int degree) /* x : 木の幹が始まる座標のx y : 木の幹が始まる座標のy length : 最初の木の幹の長さ degree : 最初の木の伸びていく方向 */ { int ex, ey; /* 長さが短くなったら終了する */ if (length < 5) { return; } /* それ以外、木の幹を描いて次の木を描く呼び出しをする */ else { /* 幹の始点は引数の値、終点は角度と長さから計算する */ ex = x + length * cos(3.1415 / 180 * degree); ey = y + length * sin(3.1415 / 180 * degree); gline(x, y, ex, ey, 255, 255, 255); /* 右側の幹を描くための呼び出し */ tree(ex, ey, length / 10 * 7, degree+30); /* 左側の幹を描くための呼び出し */ tree(ex, ey, length / 10 * 7, degree-30); } } int main(void) { int i; int x1, x2, x3, x4; int y1, y2, y3, y4; int dum; /* 待ち時間のための変数 */ int j; /* 待ち時間のためのカウンタ */ gopen(200, 200); tree(100, 0, 50, 90); for (i=0; i < 130; i++) { /* 描く */ y1 = 180 - i; if (0 == (i % 2)) x1 = 20 - 1; else x1 = 20 + 1; gline(x1 + 10, y1 + 5, x1 + 10, y1 + 15, 255, 255, 255); gline(x1 + 6, y1 + 6, x1 + 14, y1 + 14, 255, 255, 255); gline(x1 + 6, y1 + 14, x1 + 14, y1 + 6, 255, 255, 255); y2 = 150 - i; if (0 == (i % 2)) x2 = 150 + 2; else x2 = 150 - 1; gline(x2 + 10, y2 + 5, x2 + 10, y2 + 15, 255, 255, 255); gline(x2 + 6, y2 + 6, x2 + 14, y2 + 14, 255, 255, 255); gline(x2 + 6, y2 + 14, x2 + 14, y2 + 6, 255, 255, 255); /* 待ち時間 */ for (j = 0; j < 20000; j++) dum = cos(j); /* 消す */ y1 = 180 - i; if (0 == (i % 2)) x1 = 20 - 1; else x1 = 20 + 1; gline(x1 + 10, y1 + 5, x1 + 10, y1 + 15, 0, 0, 0); gline(x1 + 6, y1 + 6, x1 + 14, y1 + 14, 0, 0, 0); gline(x1 + 6, y1 + 14, x1 + 14, y1 + 6, 0, 0, 0); y2 = 150 - i; if (0 == (i % 2)) x2 = 150 + 2; else x2 = 150 - 1; gline(x2 + 10, y2 + 5, x2 + 10, y2 + 15, 0, 0, 0); gline(x2 + 6, y2 + 6, x2 + 14, y2 + 14, 0, 0, 0); gline(x2 + 6, y2 + 14, x2 + 14, y2 + 6, 0, 0, 0); } gclose(); return 0; }