📄 advertisement.c
字号:
#include <sys/types.h>#include <sys/stat.h>#include <fcntl.h>#include <stdlib.h>#include <stdio.h>#include <vga.h>#include <vgagl.h>void draw_bmp(int x,int y,int w,int h,char *filename);void draw_text(int x,int y,unsigned char *ch);main (){int i;vga_init();vga_setmode(G800x600x256);gl_setcontextvga(G800x600x256);for(;;){sleep(2);draw_hello();sleep(2);gl_clearscreen(0);draw_bmp(200,200,320,200,"thi.bmp");for(i=200;i>0;i-=5){gl_fillbox(0,570,800,30,0);draw_text(i,580,(unsigned char *)"你猜你中什么毒了?");usleep(200000);//gl_clearscreen(0);}gl_clearscreen(0);//sleep(1);draw_bmp(0,0,800,600,"0002.bmp");sleep(2);gl_clearscreen(0);}vga_getch();vga_setmode(TEXT);return 0;}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); } } }void draw_bmp(int x,int y,int w,int h,char *filename){int fd;char header[50];void *image;unsigned char *rgb;unsigned char *data;int i;gl_setrgbpalette();image = alloca(w*h);if((fd = open(filename,O_RDONLY)) == -1){printf("can not open file\n");exit(0);}read(fd, header, 54);rgb = alloca(3);data = alloca(4);for (i=0; i<256; i++) {read(fd, data, 4);rgb[0] = (char)((int)data[2] /4);rgb[1] = (char)((int)data[1] /4);rgb[2] = (char)((int)data[0] /4);gl_setpalettecolors(i,1,rgb);}read(fd, image, w*h);close(fd);gl_putbox(x,y,w,h,image);}draw_hello(){int i;unsigned char *colors;for(i=0;i<100;i++) { vga_drawscansegment(colors,70,10+i,30); vga_drawscansegment(colors,145,10+i,30); vga_drawscansegment(colors,100,50+i/4,45); } for(i=0;i<100;i++) { vga_drawscansegment(colors,220,10+i,30); vga_drawscansegment(colors,220,10+i/4,80); vga_drawscansegment(colors,220,50+i/4,80); vga_drawscansegment(colors,220,90+i/4,80); } for(i=0;i<100;i++) { vga_drawscansegment(colors,350,10+i,30); vga_drawscansegment(colors,350,90+i/4,80); } for(i=0;i<100;i++) { vga_drawscansegment(colors,470,10+i,30); vga_drawscansegment(colors,470,90+i/4,80); } for(i=0;i<100;i++) { vga_drawscansegment(colors,600,10+i,30); vga_drawscansegment(colors,630,10+i/4,30); vga_drawscansegment(colors,630,85+i/4,30); vga_drawscansegment(colors,660,10+i,30); }}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -