qp.c
来自「这是一些c++例程」· C语言 代码 · 共 543 行
C
543 行
#include <dos.h>
#include <math.h>
void cls11();
void cls12();
void cls13();
void cls14();
void cls15();
void cls16();
void cls21();
void cls22();
void cls23();
void cls24();
void cls31();
void cls32();
void cls33();
void cls34();
void cls41();
void cls42();
void cls43();
void cls44();
/* 设置一般清屏函数 */
void qp(int y,int x,int y1,int x1,int ls,int sx)
{
union REGS r; r.h.ah=6;
r.h.al=ls; r.h.bh=sx;
r.h.ch=y; r.h.cl=x;
r.h.dh=y1; r.h.dl=x1;
int86(16,&r,&r);
}
/* 主程序 */
void main()
{
int i,j,k;
char p1[]=" 1.逐列拉幕式:",
p2[]=" 11.上下半屏同时对向",
p3[]=" 12.下上三角屏反时针",
p4[]=" 13.同时对或背向",
p5[]=" 14.左右半屏同时同向",
p6[]=" 15.左右半屏分别背向",
p7[]=" 16.舞台左右撩幕",
p8[]=" 2.逐行卷帘式:",
p9[]=" 21.上下三角错开对卷",
p10[]=" 22.上下半屏同时分卷对卷",
p11[]=" 23.左右半屏错开对卷",
p12[]=" 24.右半屏分卷左半屏对卷",
p13[]=" 3.四周辐射式:",
p14[]=" 31.四周同时向中心辐射",
p15[]=" 32.起点、方式不同的四周辐射",
p16[]=" 33.四角同时分别向中辐射",
p17[]=" 34.上下左右拓宽两种灯笼式辐射",
p18[]=" 4.倾斜截角式:",
p19[]=" 41.左斜分流右斜汇合",
p20[]=" 42.斜截四角 汇集中央",
p21[]=" 43.剪刀向左张口剪屏",
p22[]=" 44.由两条对角线同时分别分流",
p23[]=" 请选择:1-4 或两位数字细目",
p24[]=" 清屏方式(0 退出): ";
for(;;)
{
clrscr();
qp(2,6,21,73,20,43);
gotoxy(12,5);printf("%s",p1);
gotoxy(10,6);printf("%s%s%s",p2,p3,p4);
gotoxy(10,7);printf("%s%s%s",p5,p6,p7);
gotoxy(12,9);printf("%s",p8);
gotoxy(10,10);printf("%s%s",p9,p10);
gotoxy(10,11);printf("%s%s",p11,p12);
gotoxy(12,13);printf("%s%s",p13);
gotoxy(10,14);printf("%s%s",p14,p15);
gotoxy(10,15);printf("%s%s",p16,p17);
gotoxy(12,17);printf("%s",p18);
gotoxy(10,18);printf("%s%s",p19,p20);
gotoxy(10,19);printf("%s%s",p21,p22);
gotoxy(19,21);printf("%s%s",p23,p24);
gotoxy(64,21);scanf("%d",&k);
clrscr();
gotoxy(1,23); qp(0,0,23,79,24,43);
switch(k)
{
case 1:
cls11();cls12();cls13();cls14();cls15();cls16();
break;
case 2:
cls21();cls22();cls23();cls24();
break;
case 3:
cls31();cls32();cls33();cls34();
break;
case 4:
cls41();cls42();cls43();cls44();
break;
case 11:
cls11();break;
case 12:
cls12();break;
case 13:
cls13();break;
case 14:
cls14();break;
case 15:
cls15();break;
case 16:
cls16();break;
case 21:
cls21();break;
case 22:
cls22();break;
case 23:
cls23();break;
case 24:
cls24();break;
case 31:
cls31();break;
case 32:
cls32();break;
case 33:
cls33();break;
case 34:
cls34();break;
case 41:
cls41();break;
case 42:
cls42();break;
case 43:
cls43();break;
case 44:
cls44();break;
case 0:
clrscr();return;
}
}
}
int i, j, x, y, z, x1, y1;
/* 1. 拉幕式清屏 */
/* 1.1 分上、下半屏同时反向拉幕 */
void cls11()
{
for(i=2;i<78;i++)
{
qp(1,i,5,i,5,53);
qp(12,i,17,i,6,53);
gotoxy(12,3);
printf("上半屏 同时对向拉幕");
qp(6,79-i,11,79-i,6,62);
qp(18,79-i,22,79-i,5,62);
gotoxy(47,22);
printf("下半屏 同时对向拉幕");
gotoxy(1,24);
delay(200);
}
sleep(1);
}
/* 1.2 分左下、右上三角屏依次反时针拉幕 */
void cls12()
{
for (x=1;x<=22;x++)
{
i=floor(3.5*x);
qp(x,2,22,i,23,80);
delay(200);
}
sleep(1);
for (x=22;x>0;x--)
{
i=floor(3.5*x);
qp(1,i,x,77,22,80);
delay(200);
}
sleep(1);
}
/* 1.3 由边向中同时对向拉幕 */
void cls13()
{
for(i=2;i<40;i++)
{
qp(1,i,22,i,0,52);
qp(1,79-i,22,79-i,0,63);
delay(200);
}
sleep(1);
for(i=0;i<38;i++)
{
qp(1,39-i,22,40+i,0,43);
delay(200);
}
sleep(1);
}
/* 1.4 分左、右半屏同时同向右拉幕 */
void cls14()
{
for(x=40;x<78;x++)
{
for(y=2;y<23;y++)
{
qp(1,x-38,y,x-38,22,71);
qp(1,x,24-y,x,21,71);
}
delay(500);
}
sleep(1);
}
/* 1.5 左右半屏分别背向拉幕 */
void cls15()
{
for(i=0;i<19;i++)
{
qp(1,20-i,22,21+i,0,34);
qp(1,58-i,22,59+i,0,43);
delay(200);
}
sleep(1);
}
/* 1.6 戏台撩幕式 */
void cls16()
{
for(i=1;i<39;i++)
qp(i,39-i,25,40+i,0,16);
delay(500);
for(i=0;i<7;i++)
{
qp(i+1,38-i*i,25,i*i+41,2,64);
delay(200);
qp(i+1,38-i*i,25,i*i+41,0,6);
delay(600);
}
qp(14,0,25,79,0,64);
sleep(1);
qp(14,0,25,79,0,6);
sleep(1);
}
/* 2. 卷帘式清屏 */
/* 2.1 分右上、左下三角屏先下后上卷帘 */
void cls21()
{
for (x=1;x<=22;x++)
{
i=floor(3.5*x);
qp(1,i,x,78,22,64);
delay(200);
}
sleep(1);
for (x=22;x>0;x--)
{
i=floor(3.5*x);
qp(x,1,22,i,22,64);
delay(200);
}
sleep(1);
}
/* 2.2 上、下半屏同时分卷或对卷 */
void cls22()
{
for(y=12;y>0;y--)
{
for(x=1;x<=78;x++)
{
qp(y,x,y,x,22,24);
qp(23-y,x,23-y,x,22,24);
}
delay(500);
}
sleep(1);
for(y=1;y<=12;y++)
{
for(x=1;x<=78;x++)
{
qp(23-y,x,23-y,x,22,24);
qp(y,x,y,x,22,24);
}
delay(500);
}
sleep(1);
}
/* 2.3 分左、右半屏错开对卷式 */
void cls23()
{
for(y=1;y<12;y++)
{
for(x=1;x<41;x++)
{
qp(23-y,x,23-y,x,22,64);
qp(y,x+38,y,x+38,22,64);
}
gotoxy(1,24);
delay(200);
}
sleep(1);
for(y=1;y<12;y++)
{
for(x=1;x<41;x++)
{
qp(y,x,y,x,22,64);
qp(23-y,x+38,23-y,x+38,22,64);
}
delay(200);
}
sleep(2);
}
/* 2.4 分卷右半屏、对卷左半屏 */
void cls24()
{
for(i=12;i>0;i--)
{
qp(i,40,i,78,i+1,47);
qp(23-i,40,23-i,78,i+1,47);
delay(200);
}
for(i=1;i<13;i++)
{
qp(i,1,i,39,i+1,47);
qp(23-i,1,23-i,39,i+1,47);
delay(200);
}
sleep(1);
}
/* 3. 辐射式清屏 */
/* 3.1 四周向中心辐射 */
void cls31()
{
for (i=1;i<12;i++)
{
qp(i,i,i,79-i,i,96);
qp(23-i,i,23-i,79-i,i,56);
qp(i,i,23-i,i*3.3,22,136);
qp(i,79-3.3*i,23-i,79-i,22,16);
delay(500);
}
sleep(1);
}
/* 3.2 向四周辐射 */
void cls32()
{
for (j=1;j<3;j++)
{
for(i=1;i<50;i++)
{
z=i*3.1416/180;
if (j==1)
{
x=27*tanh(z);
y=15*atan(z);
}
else
{
x=13.5*cosh(z);
y=11*sinh(z);
}
qp(12-y,39-2*x,12+y,41+2*x,0,j*40);
delay(500);
}
sleep(1);
}
for(i=0;i<32;i++)
{
z=i*3.1416/180;
x=15*sin(z)+9*cos(z);
y=12*sin(z)+5*cos(z);
qp(12-y,32-2*x,12+y,5*x+1,0,107);
delay(500);
}
sleep(1);
}
/* 3.3 四角同时分别向中心辐射式 */
void cls33()
{
for (i=1;i<12;i++)
{
qp(1,1,i,i*3.5,i,96);
qp(23-i,1,22,i*3.5,i,80);
qp(23-i,78-i*3.5,22,78,22,196);
qp(1,78-3.5*i,i,78,22,164);
delay(500);
}
sleep(1);
}
/* 3.4 灯笼式 清屏 */
void cls34()
{
for (j=1;j<3;j++)
{
for(i=1;i<=90;i++)
{
z=i*3.14/180;
if (j==1)
{
x=19*sin(z);
y=11*cos(z);
}
else
{
x=19*cos(z);
y=11*sin(z);
}
qp(12-y,39.3-2*x,12+y,40.3+2*x,0,71+(j-1)*15);
delay(100);
}
sleep(1);
}
}
/* 4. 斜截角式清屏 */
/* 4.1 左斜分流 右斜汇合 */
void cls41()
{
for (z=0;z<=50;z++)
{
for (x=-40;x<=39;x++)
{
for (i=1;i<=2;i++)
{
if(i==2)y=-x/3+z;
else y=-x/3-z;
y1=-y+12; x1=x+40;
if (y1>=1&&y1<23&&x1>=1&&x1<=78)
qp(y1,x1,y1,x1,0,67);
}
}
delay(200);
}
delay(500);
for (z=-50;z<=0;z++)
{
for(x=-40;x<=39;x++)
{
for (i=1;i<=2;i++)
{
if(i==2) y=-x/3+z;
else y=-x/3-z;
y1=-y+13;x1=-x+40;
if(y1>=1&&y1<23&&x1>=1&&x1<=78)
qp(y1,x1,y1,x1,0,67);
}
} delay(200);
}
sleep(1);
}
/* 4.2 斜截四角 汇集中央 */
void cls42()
{
for (z=-50;z<=0;z++)
{
for (x=-40;x<=39;x++)
{
for (i=1;i<=4;i++)
{
switch(i)
{
case 1:
y=-x/3-z;y1=-y+12;
x1=x+40; break;
case 2:
y=-x/3+z;y1=-y+12;
x1=x+40; break;
case 3:
y=-x/3-z;y1=-y+13;
x1=-x+40; break;
case 4:
y=-x/3+z;y1=-y+13;
x1=-x+40; break;
}
if (y1>=1&&y1<23&&x1>=1&&x1<=78)
qp(y1,x1,y1,x1,0,87);
}
}
delay(200);
}
sleep(1);
}
/* 4.3 向左张口剪刀剪屏 */
void cls43()
{
for(z=-50;z<=12;z++)
{
for(x=-42;x<=39;x++)
{
y=-x/3+z; y1=-y+12; x1=-x+37;
if(y1>=1&&y1<23&&x1>=1&&x1<=78)
qp(y1,x1,y1,x1,0,107);
y=-x/3-z; y1=-y+13; x1=x+40;
if(y1>=1&&y1<=12&&x1>=1&&x1<=78)
qp(y1,x1,y1,x1,0,107);
}
delay(200);
}
sleep(1);
}
/* 4.4 由两条对角线同时分别分流 */
void cls44()
{
for (z=0;z<=50;z++)
{
for (x=-40;x<=39;x++)
{
for (i=1;i<=4;i++)
{
switch(i)
{
case 1:
y=-x/3-z;y1=-y+12;
x1=x+40; break;
case 2:
y=-x/3+z;y1=-y+12;
x1=x+40; break;
case 3:
y=-x/3-z;y1=-y+13;
x1=-x+40;break;
case 4:
y=-x/3+z;y1=-y+13;
x1=-x+40;break;
}
if(y1>=1&&y1<23&&x1>=1&&x1<=78)
qp(y1,x1,y1,x1,0,57);
}
}
delay(200);
}
sleep(1);
}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?