📄 rainbow.c
字号:
#include <stdlib.h>#include <stdio.h>#include <unistd.h>#include <string.h>#include <time.h>#include <vga.h>#include <vgagl.h>#include <math.h>void draw_wjx(int x,int y,int r);int draw_bo(int pointx,int pointy);void draw_text(int x,int y,int xlarge, int ylarge,unsigned char *ch) ;int main() { int i,j; int flag; unsigned char *colors; vga_init(); vga_setmode(G800x600x256); vga_setcolor(4); for(;;) { for(i=0;i<255;i++) { if(i%2) { vga_setcolor(i); draw_wjx(200,100,50); draw_wjx(400,100,50); draw_wjx(600,100,50); usleep(200000); } else if(i%3) { vga_setcolor(i); draw_bo(0,200); draw_bo(0,250); draw_bo(0,300); draw_bo(0,350); draw_bo(0,400); usleep(200000); } else { vga_setcolor(i); draw_text(220,240,6,6,(unsigned char *)"神疯小组"); usleep(200000); } } } vga_getch(); vga_setmode(TEXT);//回到控制台字符模式 free(colors); return 0; } void draw_wjx(int x,int y,int r){ int m[5],n[5],i; float t=6.28318/5; for(i=0;i<5;i++) { m[i]=r*cos(i*t)+x; n[i]=r*sin(i*t)+y; } //vga_setcolor(5); for(i=0;i<5;i++) //vga_setcolor(5); vga_drawline(m[i],n[i],m[(i+2)%5],n[(i+2)%5]);}int draw_bo(int pointx,int pointy){ int i,g; g=pointy; for(i=1;i<800;i++) { vga_drawline(pointx,pointy,i,g+30*sin(i*M_PI/90)); pointx=i; pointy=g+30*sin(i*M_PI/90); }}void draw_text(int x,int y,int xlarge, int ylarge,unsigned char *ch) { int i,k,j,c,l,m,n; unsigned char mat[16][2]; unsigned char mat1[16]; char *p; FILE *hzk,*ywk; //vga_setcolor(i); 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,0,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(m=0;m<xlarge;m++) for(j=0;j<2;j++) for(k=0;k<8;k++) for(n=0;n<ylarge;n++) if(mat[i][j]&(0x80>>k)) vga_drawpixel(x+c*8*xlarge+8*j*xlarge+k*xlarge+n,y+i*ylarge+m); 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*xlarge+k*xlarge+n,y+i*ylarge+m); } } }
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -