⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ccbp_lib.h

📁 可以用C在dos环境下不需要中文平台支持
💻 H
📖 第 1 页 / 共 2 页
字号:
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include <graphics.h>
#include <conio.h>
#include <dos.h>
#include <math.h>

void outhzxy3(int x,int y,char *p,int size,int direction,int color)
{   int oldcolor;
    oldcolor=getcolor();
    setcolor(color);
    setfillstyle(SOLID_FILL,color);
    while(*p){
    if(((unsigned char)*p>=0xa1&&(unsigned char)*p<=0xfe)&&
	((unsigned char)*(p+1)>=0xa1&&(unsigned char)*(p+1)<=0xfe))
     {
       disp_hz3(x,y,*p,*(p+1),size,direction,color);
       p+=2;
       if(direction==HORIZ_DIR)
	 x+=size*16+2;
       if(direction==VERT_DIR)
	 y-=size*16+2;
       moveto(x,y);
      }
      else{
      char q[2];
      moveto(x,y);
      *q=*p;*(q+1)='\0';
      outtextxy(x,y+4,q);
      x+=8;p++;
      }
      }
      setcolor(oldcolor);
 }

int disp_hz3(int left,int top,unsigned char byte1,
	    unsigned char byte2,int size,int direction,int color)
  {
      FILE * cclibfile;
      unsigned char buf[32];
      long p;
      int i,j,x,y,radiumX,radiumY;
      unsigned char mark;

      cclibfile=fopen("CCLIB.DAT","rb");
      if(cclibfile==NULL) {
	 outtextxy(10,10,"Not find CCLIB.DOT!Press any key to exit...");
	 getch();
	 exit(1);
	 }
      if((byte1>=0xa1&&byte1<=0xfe)&&(byte2>=0xa1&&
	       byte2<=0xfe)){
      p=(byte1-0xa1)*0x5e+byte2-0xa1;
      p*=32;
      fseek(cclibfile,(long)p,SEEK_SET);
      fread(buf,sizeof(unsigned char),32,cclibfile);
      fclose(cclibfile);
      if((left+size*16-1)>getmaxx()||(top+size*16-1)>getmaxy())
	      return 0;
      if(size==1){
	 if(direction==HORIZ_DIR){
	     for(i=0,y=top;i<31;i+=2,y++)
		for(mark=0x80,j=0;mark>0;mark=mark>>1,j++){
		   if((buf[i]&mark)!=0)
		     putpixel(left+j,y,color);
		   if((buf[i+1]&mark)!=0)
		     putpixel(left+j+8,y,color);
		 }
	 }
	 if(direction==VERT_DIR){
	    for(i=0,x=left;i<31;i+=2,x++)
	       for(mark=0x80,j=0;mark>0;mark=mark>>1,j++){
		  if((buf[i]&mark)!=0)
		     putpixel(x,top-j,color);
		  if((buf[i+1]&mark)!=0)
		     putpixel(x,top-j-8,color);
	       }
	 }
      return 1;
      }
      if(size==2){
	 radiumX=size/2+1;
	 radiumY=size/2;
       }
       else{
	  radiumX=size/2+1;
	  radiumY=size/2+1;
       }
       if(direction==VERT_DIR){
	  for(i=0,x=left;i<31;i+=2,x+=size)
	      for(mark=0x80,j=0;mark>0;mark=mark>>1,j++){
		 if((buf[i]&mark)!=0)
		   bar(x+size/2,top-j*size-size/2,
		       x+size/2+radiumX,top-j*size-size/2+radiumY);
		 if((buf[i+1]&mark)!=0)
		   bar(x+size/2,top-(j+8)*size-size/2,
		       x+size/2+radiumX,top-(j+8)*size-size/2+radiumY);
		}
	     return 1;
	}
	if(direction==HORIZ_DIR){
	for(i=0,y=top;i<31;i+=2,y+=size)
	   for(mark=0x80,j=0;mark>0;mark=mark>>1,j++){
	      if((buf[i]&mark)!=0)
		   bar(left+j*size+size/2,y+size/2,
		       left+j*size+size/2+radiumX,y+size/2+radiumY);
	      if((buf[i+1]&mark)!=0)
		   bar(left+(j+8)*size+size/2,y+size/2,
		       left+(j+8)*size+size/2+radiumX,y+size/2+radiumY);
	    }
	    return 1;
	}
	}
	fclose(cclibfile);
	return 0;
 }

int outhzxy1(int x,int y,char *p,int color)
  {
   int oldcolor;
   oldcolor=getcolor();
   setcolor(color);
   while(*p)
      {
	if(((unsigned char)*p>=0xa1&&(unsigned char)*p<=0xfe)&&
	((unsigned char)*(p+1)>=0xa1&&(unsigned char)*(p+1)<=0xfe))
          {
            if((x+16-1)>getmaxx()||(y+16-1)>getmaxy())
            return 0;
            disp_hz1(x,y,*p,*(p+1),color);
            p+=2;
            x+=16+2;
            moveto(x,y);
           }
         else{
           char q[2];
           moveto(x,y);
           *q=*p;*(q+1)='\0';
           settextstyle(DEFAULT_FONT,HORIZ_DIR,1);
           outtextxy(x,y+4,q);
           x+=8+1;p++;
              }
        }
    setcolor(oldcolor);
    return 1;
  }


int disp_hz1(int left,int top,unsigned char byte1,
	     unsigned char byte2,int color)
{
   FILE *cclibfile;
   unsigned char buf[32];
   unsigned char mark;
   long p;
   int x,y,i,j;
   int quma,weima;
   cclibfile=fopen("CCLIB.DAT","rb");
   if(cclibfile==NULL)
     {
      outtextxy(10,10,"Can't open CCLIB.DAT file! Press any key to halt ...");
      exit(1);
     }
   if((byte1>=0xa1&&byte1<=0xfe)&&(byte2>=0xa1&&byte2<=0xfe))
    {
   quma=byte1-0xa0;
   weima=byte2-0xa0;
   p=(quma-1)*94+weima-1;
   p*=32;
   fseek(cclibfile,(long)p,SEEK_SET);
   fread(buf,sizeof(unsigned char),32,cclibfile);
   fclose(cclibfile);
   for(i=0,y=top;i<31;i+=2,y++)
   for(mark=0x80,j=0;mark>0;mark=mark>>1,j++)
        {
	 if((buf[i]&mark)!=0)
         putpixel(left+j,y,color);
         if((buf[i+1]&mark)!=0)
	 putpixel(left+j+8,y,color);
        }
    }
   fclose(cclibfile);
   return 1;
}
     void coordc(int x,int y,double l,double a,double u,int c)
      {
       int i;
       double p,q,x1,y1,x2,x3,y3,y2,b,L;
       a=(a-0.01)*3.1415926548/180.0;
       b=0.197395559;
       L=10.19803903;
       x1=x+l*cos(a);
       y1=y-l*sin(a);
       x2=x1-L*cos(b-a);
       y2=y1-L*sin(b-a);
       x3=x1-L*cos(b+a);
       y3=y1+L*sin(b+a);
       setcolor(c);
       line(x,y,(int)x1,(int)y1);
       if(l<11.0)return;
       moveto((int)x1,(int)y1);
       lineto((int)x2,(int)y2);
       lineto((int)x3,(int)y3);
       lineto((int)x1,(int)y1);
       for(i=0;i<l/u-1;i++)
       {
       p=x+u*cos(a);
       q=y-u*sin(a);
       moveto(p,q);
       lineto(p-1*sin(a),q-1*cos(a));
       x=p;y=q;
       }
       }


    void coord(int x,int y,double l,double a,double u)
      {
       int i;
       double p,q,x1,y1,x2,x3,y3,y2,b,L;
       a=(a-0.01)*3.1415926548/180.0;
       b=0.197395559;
       L=10.19803903;
       x1=x+l*cos(a);
       y1=y-l*sin(a);
       x2=x1-L*cos(b-a);
       y2=y1-L*sin(b-a);
       x3=x1-L*cos(b+a);
       y3=y1+L*sin(b+a);
       setcolor(15);
       line(x,y,(int)x1,(int)y1);
       if(l<11.0)return;
       moveto((int)x1,(int)y1);
       lineto((int)x2,(int)y2);
       lineto((int)x3,(int)y3);
       lineto((int)x1,(int)y1);
       for(i=0;i<l/u-1;i++)
       {
       p=x+u*cos(a);
       q=y-u*sin(a);
       moveto(p,q);
       lineto(p-1*sin(a),q-1*cos(a));
       x=p;y=q;
       }
       }
void  coil1(int x0,int y0,int l,int h,int n,int r,int p,int m)
{
int i;
setcolor(n);
setfillstyle(1,m);
bar(x0,y0,x0+l,y0+h);
for(i=0;i<p;i++)
{
arc(x0+l,y0+3*r+6*r*i,-90,90,r);
line(x0+l,y0+4*r+6*r*i,x0,y0+7*r+6*r*i);
arc(x0,y0+8*r+6*r*i,90,270,r);
line(x0,y0+2*r,x0-50,y0+2*r);

}
arc(x0+l,y0+3*r+6*r*i,-90,90,r);
line(x0+l,y0+4*r+6*r*i,x0,y0+7*r+6*r*i);
line(x0,y0+7*r+6*r*i,x0-50,y0+7*r+6*r*i);
arc(x0-50,y0+7*r+6*r*i,0,360,3);
arc(x0-50,y0+2*r,0,360,3);
}
void coil2(int x0,int y0,int l,int h,int n,int r,int p,int m)
{
int i;
setcolor(m);
setfillstyle(1,n);
bar(x0,y0,x0+h,y0+l);
for(i=0;i<p;i++)
{
arc(x0+2*r+6*r*i,y0,0,180,r);
line(x0+3*r+6*r*i,y0,x0+6*r+6*r*i,y0+l);
arc(x0+7*r+6*r*i,y0+l,180,360,r);
line(x0+2*r,y0+l,x0+2*r,y0+50+l);

}
arc(x0+2*r+6*r*i,y0,0,180,r);
line(x0+3*r+6*r*i,y0,x0+6*r+6*r*i,y0+l);
line(x0+6*r+6*r*i,y0+l,x0+6*r+6*r*i,y0+50+l);
arc(x0+6*r+6*r*i,y0+50+l,0,360,3);
arc(x0+2*r,y0+50+l,0,360,3);
}


void coil3(int x0,int y0,int l,int h,int m,int r,int p,int n)
{

int i;

setcolor(n);
setfillstyle(1,m);
bar(x0,y0,x0+l,y0+h);

for(i=0;i<p;i++)
{
arc(x0,y0+2*r+6*r*i,90,270,r);
line(x0,y0+3*r+6*r*i,x0+l,y0+6*r+6*r*i);
arc(x0+l,y0+7*r+6*r*i,-90,90,r);
line(x0+l,y0+2*r,x0+50+l,y0+2*r);

}
arc(x0,y0+2*r+6*r*i,90,270,r);
line(x0,y0+3*r+6*r*i,x0+l,y0+6*r+6*r*i);
line(x0+l,y0+6*r+6*r*i,x0+50+l,y0+6*r+6*r*i);
arc(x0+50+l,y0+6*r+6*r*i,0,360,3);
arc(x0+50+l,y0+2*r,0,360,3);
}

void coil4(int x0,int y0,int l,int h,int n,int r,int p,int m)
{
int i;
setcolor(m);
rectangle(x0,y0,x0+l,y0+h);
setcolor(n);
for(i=0;i<p;i++)
{
arc(x0,y0+2*r+6*r*i,90,270,r);
line(x0,y0+3*r+6*r*i,x0+l,y0+6*r+6*r*i);
arc(x0+l,y0+7*r+6*r*i,-90,90,r);
line(x0+l,y0+2*r,x0+50+l,y0+2*r);

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -