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

📄 scroll.c

📁 svga演示代码,需要安装svgalib方可运行
💻 C
字号:
#include <stdlib.h>#include <vga.h>#include <vgagl.h>#include <unistd.h>#include <fcntl.h>#include <stdio.h>#include <unistd.h>#define FONT_HEIGHT 8#define FONT_WIDTH  8#define LEN sizeof(unsigned char)void prepare_font(void);void draw_text(int x,int y,unsigned char *ch);int main(){	vga_init();	vga_setmode(G800x600x256);	gl_setcontextvga(G800x600x256);	int x,n=2,i,j,m;	char *p;	unsigned char a[100000],b[100],c[2];	FILE *fp;	if((fp=fopen("aaa","r"))==NULL)	{		printf("wrong!\n");		exit(1);	}	for(i=0;;i++)	{		if(feof(fp))			break;		fread(&a[i],LEN,1,fp);	}	j=strlen(a);		if(j<100)	{		for(i=0;i<100;i++)			b[i]=a[i];		for(m=0;;m++)		{			for(x=800;x>=0;x-=8)			{				draw_text(x,100,(unsigned char *)b);				if(m==0)					gl_fillbox(0,100,x,100,0);				gl_fillbox(0,100,16,100,0);				usleep(100000);				gl_clearscreen(0);			}		}	}	else	{		bbb:				for(i=0;i<100;i++)			b[i]=a[i];		for(x=800;x>=0;x-=8)		{			if(x<17)			{				aaa:				for(x=16;x>=0;x-=8)				{					draw_text(x,100,(unsigned char *)b);					gl_fillbox(0,100,16,100,0);					usleep(100000);					gl_clearscreen(0);				}				for(i=0;i<100;i++)					b[i]=a[i+n];				if((i+n)>=j)				{					for(m=0;m<50;m++)					{						for(x=16;x>=0;x-=8)						{							draw_text(x,100,(unsigned char *)b);							gl_fillbox(0,100,16,100,0);							usleep(70000);							gl_clearscreen(0);						}						for(i=0;i<98;i++)							b[i]=b[i+2];						b[i]=c[0];						b[i+1]=c[1];					}				//	goto bbb;							}				else					{					n+=2;					goto aaa;				}			}			else			{				draw_text(x,100,(unsigned char *)b);				gl_fillbox(0,100,x,100,0);				usleep(100000);				gl_clearscreen(0);			}					}		goto bbb;	}	vga_getch();	gl_clearscreen(0);	vga_setmode(TEXT);	return EXIT_SUCCESS;}void draw_text(int x,int y,unsigned char *ch){	int i,j,k,c,l;	unsigned char mat[16][2];	unsigned char mat1[16];	char *p;	FILE *hzk,*ywk;	vga_setcolor(1);	hzk=fopen("hzk16","rb");	ywk=fopen("asc16","rb");	if (hzk==NULL)	{		perror("Open hzk16 file error");		exit(1);	}	if(ywk==NULL)	{		perror("Open asc16 file error");		exit(1);	}	l=strlen(ch);	vga_setrgbcolor(251,251,0);	for(c=0;c<l;c++)	{		if(ch[c]>127)		{			i=ch[c]-0xa0;j=ch[c+1]-0xa0;			fseek(hzk,(94*(i-1)+(j-1))*32,SEEK_SET);			fread(mat,32,1,hzk);			for(i=0;i<16;i++)				for(j=0;j<2;j++)					for(k=0;k<8;k++)						if(mat[i][j]&(0x80>>k))							vga_drawpixel(x+c*8+8*j+k,y+i);			c++;		}		else		{			fseek(ywk,ch[c]*16,SEEK_SET);			fread(mat1,16,1,ywk);			for(i=0;i<16;i++)				for(k=0;k<8;k++)					if(mat1[i]&(0x80>>k))						vga_drawpixel(x+c*8+k,y+i);		}	}}

⌨️ 快捷键说明

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