📄 mandle2.cpp
字号:
//please do send me an e-mail if you liked this program.
//my e-mail address is amit_agarwal4u@yahoo.com
//Compile this program in turbo c++ ver 3.0
#include <graphics.h>
#include <conio.h>
#include <process.h>
#include <dos.h>
#include <iostream.h>
#include <mouse.h>
#include <alloc.h>
#include <math.h>
#include <stdlib.h>
#include <fstream.h>
#define xm 640
#define ym 480
#define mc 100
void main()
{
void *ptr;
union REGS regs;
int x, y, x1, y1, x2, y2;
int b, c, d, c1, d1, asc;
int ch = 0, n = 0, m1, m2, m3;
float ys, xs, l, t, xi, yi, zx, zy, cx, cy, temp;
char yy, yy1;
struct palettetype pal;
ofstream outfile;
int a[17][3], r, temp1, r1, i;
for (r = 0; r <= 15; r++)
{
for (r1 = 0; r1 < 3; r1++)
a[r][r1] = 10;
}
a[16][0] = 10; a[16][0] = 0; a[16][0] = 0;
int pointer[32] =
{
0xffff, 0xffff, 0xffff, 0xffff,
0xffff, 0xffff, 0xffff, 0xffff,
0xffff, 0xffff, 0xffff, 0xffff,
0xffff, 0xffff, 0xffff, 0xffff,
0xf800, 0xf000, 0xf000, 0xf800,
0x9c00, 0x0e00, 0x0700, 0x0380,
0x01c0, 0x00e0, 0x0070, 0x0038,
0x001c, 0x000e, 0x0007, 0x0003
};
int driver = DETECT, gd;
initgraph(&driver, &gd, "d:\\tcc");
getpalette(&pal);
showmouse();
cout << "";
changecursor(pointer);
if ((ptr = malloc(200 * 200)) == NULL)
{
closegraph();
cout << "Error";
getch();
closegraph();
free(ptr);
exit(0);
}
l = -2.0; t =1.5; xi = 1.0; yi = -1.5;
do
{
hidemouse();
xs = (xi - l) / xm; ys = (yi - t)/ ym;
for (y = 1; y <= ym; y++)
{
for (x = 1; x <= xm; x++)
{
cx = x *xs + l;
cy = y *ys + t;
zx =zy =0;
c = 0;
while (zx * zx + zy * zy < 4 && c < mc)
{
temp = zx * zx - zy * zy + cx;
zy = 2 * zx * zy + cy;
zx = temp;
c++;
}
if (c == mc)
putpixel(x, y, 0);
else
putpixel(x, y, c % 15);
if (kbhit())
{
closegraph();
free(ptr);
exit(0);
}
}
}
if (yy != 'a')
{
do
{
for (r = 15; r >= 0; r--)
{
temp1 = r + n;
if (temp1 > 15)
temp1 = (temp1 - 1) % 15;
setrgbpalette(pal.colors[r], a[r][0] * temp1, a[r][1] * temp1, a[r][2] * temp1);
// delay(30);
}
if (n > 15)
{
n = 0;
ch++;
if (ch > 6)
ch = 0;
if (ch == 0)
{ a[16][0] = 10; a[16][1] = 10; a[16][2] = 10; }
if (ch == 1)
{ a[16][0] = 10; a[16][1] = 0; a[16][2] = 0; }
if (ch == 2)
{ a[16][0] = 0; a[16][1] = 10; a[16][2] = 0; }
if (ch == 3)
{ a[16][0] = 0; a[16][1] = 0; a[16][2] = 10; }
if (ch == 4)
{ a[16][0] = 10; a[16][1] = 10; a[16][2] = 0; }
if (ch == 5)
{ a[16][0] = 0; a[16][1] = 10; a[16][2] = 10; }
if (ch == 6)
{ a[16][0] = 10; a[16][1] = 0; a[16][2] = 10; }
}
for (r = 0; r < 3; r++)
a[15 - n][r] = a[16 - n][r];
n++;
} while(!kbhit());
yy = getch();
}
cout << "";
showmouse();
regs.x.ax = 3;
int86(MOUSE,®s,®s);
do
{
int86(MOUSE,®s,®s);
b = regs.x.bx; c = regs.x.cx; d = regs.x.dx;
if (b == 2)
{
closegraph();
free(ptr);
exit(0);
}
if (kbhit())
{
yy1 = getch();
if (yy1 == 0)
{
asc = (int)getch();
if (asc == 62)
{
outfile.open("tmp1.cpp");
outfile << "Mandle" << endl;
outfile << "l = " << l << "; t = " << t << "; xi = " << xi << "; yi = " << yi << ";";
outfile.close();
}
}
else if (yy1 == 'w' || yy1 == 'r' ||yy1 == 'g' ||yy1 == 'b' ||yy1 == 'y' ||yy1 == 'm' || yy1 == 'c' || yy1 == 'u')
{
m1 = 10; m2 = 10; m3 = 10;
n = 0;
if (yy1 == 'w')
ch = 0;
if (yy1 == 'r')
{ch = 1; m2 = 0; m3 = 0; }
if (yy1 == 'g')
{ch = 2; m1 = 0; m3 = 0; }
if (yy1 == 'b')
{ch = 3; m2 = 0; m1 = 0; }
if (yy1 == 'y')
{ch = 4; m3 = 0;}
if (yy1 == 'm')
{ch = 5; m2 = 0;}
if (yy1 == 'c')
{ch = 6; m1 = 0;}
if (yy1 == 'u')
{
randomize();
ch = random(7);
do
{
m1 = random(15); m2 = random(15); m3 = random(15);
} while(m1 == m2 || m2 == m3 || m1 == m3);
}
for (r = 0; r < 16; r++)
setrgbpalette(pal.colors[r], m1 * r, m2 * r, m3 * r);
}
}
} while(b != 1);
setlinestyle(1, 1, 1);
setcolor(15);
x1 = x2 = c; y1 = y2 = d;
hidemouse();
getimage(c, d, c, d, ptr);
showmouse();
long int ch1;
do
{
int86(MOUSE,®s,®s);
b = regs.x.bx; c = regs.x.cx; d = regs.x.dx;
ch1 = sqrt(abs(c - x2)) * sqrt(abs(d - y2));
if ((c1 != c || d1 != d ) && ch1 < 200)
{
hidemouse();
putimage(x1, y1, ptr, 0);
getimage(c, d, x2, y2, ptr);
rectangle(x2, y2, c, d);
showmouse();
x1 = (c < x2) ? c : x2;
y1 = (d < y2) ? d : y2;
}
c1 = c; d1 = d;
}while(b != 0);
putimage(x1, y1, ptr, 0);
if (x1 == x2)
{
xi = l + c * xs;
l = l + x1 * xs;
}
else
{
xi = l + x2 * xs;
l = l + x1 * xs;
}
if (y1 == y2)
{
yi = t + d * ys;
t = t + y1 * ys;
}
else
{
yi = t + y2 * ys;
t = t + y1 * ys;
}
/*gotoxy(1, 1);
cout << l << " " << xi << " " << t << " " << yi << " " << y1 << " " << y2 << " " << x1 << " " << x2;
getch();*/
free(ptr);
} while(b != 2);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -