467
|
1 int printf(const char *format, ...);
|
|
2
|
444
|
3 typedef struct {
|
|
4 char x,y;
|
|
5 } s;
|
|
6
|
|
7 char c[]={' ','\'','.',':',0x1b,'[','H'} ,
|
|
8 M[ 1843]={4,5,6,} ,
|
|
9 *m=&M[3],
|
|
10 e;
|
|
11 int a,b;
|
|
12
|
|
13 s P[15],Q[15];
|
|
14
|
|
15 o(x,y){
|
|
16 a=80*(y/2)+x,b= 1+(y&1);
|
|
17 e?(m[a]|=b):(m[a]&=~b);
|
|
18
|
491
|
19 printf("#0018:x %02x y %02x a %04x m[a] %02x\n",x,y,a,m[a]);
|
444
|
20 }
|
|
21
|
|
22 W(s*p,s*q){
|
|
23 s t;
|
|
24 t=*p;
|
|
25 *p=*q;
|
|
26 *q=t;
|
|
27 }
|
|
28
|
|
29 l(s p, s q){
|
|
30 s t;
|
|
31 int x=p.x-q.x,
|
|
32 y=p.y-q.y,
|
|
33 w,
|
|
34 v;
|
|
35
|
491
|
36 printf("#0035:p.x %02x p.y %02x q.x %02x q.y %02x\n",p.x,p.y,q.x,q.y);
|
444
|
37
|
|
38 x=x<0?-x:x;
|
|
39 y=y<0?-y:y;
|
|
40 if(y<x){
|
|
41 if( q.x<p.x)
|
|
42 W(&p,&q);
|
|
43 v=p.y<=q.y?1:-1;
|
|
44 w=(y%x)/2;
|
|
45 for(; p.x<=q.x; p.x++){
|
|
46 o(p.x, p.y);
|
|
47 if((w-=y)<=0)
|
|
48 w+=x,p.y+=v;
|
|
49 }
|
|
50 } else if(y){
|
|
51 if(q.y<p.y)
|
|
52 W(&p,&q);
|
|
53 v=!(p. x>q.x)?1:-1;
|
|
54 w=(x%y)/2;
|
|
55 for(; p.y<=q.y; p.y++){
|
|
56 o(p.x,q.y);
|
|
57 if((w-=x)<=0)
|
|
58 w+= y,
|
|
59 p.x+=v;
|
|
60 }
|
|
61 }
|
|
62 }
|
|
63
|
|
64 r(s*p,s q){
|
|
65 p->x=((rand()%80)-q.x)/11;
|
|
66 p->y=((rand()%48)-q.y)/11;
|
491
|
67 printf("#0066:r: p->x %02x p->y %02x\n",p->x,p->y);
|
444
|
68 }
|
|
69
|
|
70 d(s*p,s q,s r){
|
491
|
71 printf("#0070:d0: q->x %02x q->y %02x\n",q.x,q.y);
|
|
72 printf("#0071:d1: r->x %02x r->y %02x\n",r.x,r.y);
|
444
|
73 p->x=q.x+r.x;
|
|
74 p->y=q.y+r.y;
|
491
|
75 printf("#0074:d2: p->x %02x p->y %02x\n",p->x,p->y);
|
444
|
76 }
|
|
77
|
|
78 main(i,j,k){
|
|
79 s R,S;
|
|
80 int count;
|
|
81 i=0,
|
|
82 k=0;
|
|
83 srand(512);
|
|
84 for(count=0;count<400 ;count++){
|
|
85 j=(i+1)%10;
|
|
86 e=0;
|
|
87 l(P[j],Q[j]);
|
491
|
88 printf("#0087:main0: p.x %02x p.y %02x q.x %02x q.y %02x\n",P[j].x,P[j].y,Q[j].x,Q[j].y);
|
444
|
89 if(--k<=0){
|
|
90 r(&R,P[i]);
|
|
91 r(&S,Q[i ]);
|
491
|
92 printf("#0091:main1: R.x %02x R.y %02x S.x %02x S.y %02x\n",R.x,R.y,S.x,S.y);
|
444
|
93 k=10;
|
|
94 }
|
|
95 d(&P[j],P[i],R);
|
491
|
96 printf("#0095:main2: p.x %02x p.y %02x q.x %02x q.y %02x\n",P[j].x,P[j].y,Q[i].x,Q[i].y);
|
444
|
97 d(&Q[j],Q[i],S);
|
491
|
98 printf("#0097:main3: p.x %02x p.y %02x q.x %02x q.y %02x\n",P[j].x,P[j].y,Q[i].x,Q[i].y);
|
444
|
99 i=j;
|
|
100 e=1;
|
|
101 l(P[j],Q[j]);
|
491
|
102 printf("#0101:main4: p.x %02x p.y %02x q.x %02x q.y %02x\n",P[j].x,P[j].y,Q[i].x,Q[i].y);
|
444
|
103 b=83;
|
|
104 if (0)
|
|
105 for (a=0; a<sizeof M; a++){
|
|
106 if(--b<=0)
|
|
107 b=80,putchar('\n');
|
|
108 putchar(c[M[a]]);
|
|
109 }
|
|
110 }
|
|
111 }
|
|
112
|
|
113
|