1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114
|
#!/usr/bin/python2.4
import caca
import math
from random import Random
from math import *
ret = caca.init()
print "caca.init() returned ", ret
print "Window size is ",caca.get_window_width(),"x",caca.get_window_height()
print "Buffer size is ",caca.get_width(),"x",caca.get_height()
caca.set_size(80,25)
print "Buffer size is now",caca.get_width(),"x",caca.get_height()
print "Feature name for CACA_DITHERING_FSTEIN is "+caca.get_feature_name(caca.CACA_DITHERING_FSTEIN)
sprite = int(caca.load_sprite("./caca.txt"))
rand = Random()
i = 0
while caca.get_event(caca.CACA_EVENT_KEY_PRESS) != caca.CACA_EVENT_KEY_PRESS|caca.CACA_KEY_ESCAPE:
i=i+1;
caca.clear();
caca.set_color(caca.CACA_COLOR_YELLOW, caca.CACA_COLOR_BLACK);
xo = caca.get_width() / 4;
yo = caca.get_height() / 4 + 5 * sin(0.03*i);
for j in range(0,16):
xa = xo - (30 + sin(0.03*i) * 8) * sin(0.03*i + 3.1415*j/8);
ya = yo + (15 + sin(0.03*i) * 4) * cos(0.03*i + 3.1415*j/8);
caca.draw_thin_line(int(xo), int(yo), int(xa), int(ya));
j = 15 + sin(0.03*i) * 8;
caca.set_color(caca.CACA_COLOR_WHITE, caca.CACA_COLOR_BLACK);
caca.fill_ellipse(int(xo), int(yo), int(j), int(j / 2), '#');
caca.set_color(caca.CACA_COLOR_YELLOW, caca.CACA_COLOR_BLACK);
caca.draw_ellipse(xo, yo, j, j / 2, '0');
xo = caca.get_width() * 5 / 8;
yo = 2;
xa = caca.get_width() / 8 + sin(0.03*i) * 5;
ya = caca.get_height() / 2 + cos(0.03*i) * 5;
xb = caca.get_width() - 10 - cos(0.02*i) * 10;
yb = caca.get_height() * 3 / 4 - 5 + sin(0.02*i) * 5;
xc = caca.get_width() / 4 - sin(0.02*i) * 5;
yc = caca.get_height() * 3 / 4 + cos(0.02*i) * 5;
caca.set_color(caca.CACA_COLOR_GREEN, caca.CACA_COLOR_BLACK);
caca.fill_triangle(xo, yo, xb, yb, xa, ya, '%');
caca.set_color(caca.CACA_COLOR_YELLOW, caca.CACA_COLOR_BLACK);
caca.draw_thin_triangle(xo, yo, xb, yb, xa, ya);
caca.set_color(caca.CACA_COLOR_RED, caca.CACA_COLOR_BLACK);
caca.fill_triangle(xa, ya, xb, yb, xc, yc, ' ');
caca.set_color(caca.CACA_COLOR_YELLOW, caca.CACA_COLOR_BLACK);
caca.draw_thin_triangle(xa, ya, xb, yb, xc, yc);
caca.set_color(caca.CACA_COLOR_BLUE, caca.CACA_COLOR_BLACK);
caca.fill_triangle(xo, yo, xb, yb, xc, yc, '%');
caca.set_color(caca.CACA_COLOR_YELLOW, caca.CACA_COLOR_BLACK);
caca.draw_thin_triangle(xo, yo, xb, yb, xc, yc);
xa = 2;
ya = 2;
xb = caca.get_width() - 3;
yb = caca.get_height() / 2;
xc = caca.get_width() / 3;
yc = caca.get_height() - 3;
caca.set_color(caca.CACA_COLOR_CYAN, caca.CACA_COLOR_BLACK);
caca.draw_thin_triangle(xa, ya, xb, yb, xc, yc);
xo = caca.get_width() / 2 + cos(0.027*i) * caca.get_width() / 3;
yo = caca.get_height() / 2 - sin(0.027*i) * caca.get_height() / 2;
caca.draw_thin_line(xa, ya, xo, yo);
caca.draw_thin_line(xb, yb, xo, yo);
caca.draw_thin_line(xc, yc, xo, yo);
caca.draw_sprite(xo, yo, sprite, 0);
for j in range(i - 60, i):
delta = (rand.random()*10)-5;
caca.set_color(rand.random()*15, rand.random()*15);
caca.putchar(caca.get_width() / 2
+ cos(0.02*j) * (delta + caca.get_width() / 4),
caca.get_height() / 2
+ sin(0.02*j) * (delta + caca.get_height() / 3),
' ');
caca.draw_sprite(caca.get_width() / 2 + cos(0.02*i) * caca.get_width() / 4,
caca.get_height() / 2 + sin(0.02*i) * caca.get_height() / 3,
int(sprite), int(0));
caca.refresh();
caca.end()
|