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

📄 noname.c

📁 游戏系统。星际遨游系统。不妨路过此地的
💻 C
字号:
#include "graphics.h"
#include "stdlib.h"           /*动态分配内存函数的头文件*/
#include "stdio.h"
#include "conio.h"            /*有关屏幕处理函数的头文件*/
#include "math.h"
#define IMAGE_SIZE 10
#define STARTANGLE 130
#define ENDANGLE 50
#define PI 3.1415926
int maxx,maxy,midx,midy;
/*绘制飞船函数*/
void draw_image(int x,int y)
{
    int arw[11];             /*用数组arw来储存飞船的形状*/
    arw[0]=x+10;arw[1]=y-10;arw[2]=x+34;arw[3]=y-6;
    arw[4]=x+34;arw[5]=y+6;arw[6]=x+10;arw[7]=y+10;
    arw[8]=x+10;arw[10]=y-10;
    moveto(x+10,y-4);        /*移动画笔函数*/
    setcolor(14);
    setfillstyle(1,4);
    linerel(-3*10,-2*8);      /*画线函数*/
    moveto(x+10,y+4);
    linerel(-3*10,+2*8);
    moveto(x+10,y);
    linerel(-3*10,0);
    setcolor(3);
    setfillstyle(1,LIGHTBLUE);
    fillpoly(4,arw);         /*绘制飞船本体*/
}
/*绘制星空图形函数*/
void putstar(int seed)
{
    int i,dotx,doty,h,w,color,maxcolor;
    maxcolor=getmaxcolor();        /*得到当前模式下的最多的颜色数*/
    w=getmaxx();                   /*得到屏幕的最大坐标值*/
    h=getmaxy();
    srand(seed);                   /*初始化随机数发生器*/
    for(i=0;i<250;i++)
      {
          dotx=1+random(w-5);      /*利用随机数发生器定义星星的位置*/
          doty=1+random(h-5);
          if(sqrt(pow(dotx-midx,2)+pow(doty-midy,2))<=105)
             continue;
          color=i%2==0?YELLOW:WHITE;    /*利用随机数发生器定义星星的颜色*/
          setcolor(color);
          putpixel(dotx,doty,color);    /*用点表示小星星*/
          circle(dotx+1,doty+1,1);       /*用小圆表示大星星*/
       }
     srand(seed);                       /*再次初始化随机数发生器*/
}
main()
{
     void *p;
     int x,y,i,num=200,time=0,angle=STARTANGLE,x1,y1;
     unsigned int size;
     int gdriver=VGA,gmode=1,color;     /*初始化图形系统*/
     /*将显示器的驱动程序和字库连接到用户程序,以便程序可离开TC环境运行*/
     registerbgidriver(EGAVGA_driver);
     registerbgifont(triplex_font);
     initgraph(&gdriver,&gmode," ");
     maxx=getmaxx();
     maxy=getmaxy();
     midx=maxx/2;
     x=1;
     midy=y=maxy/2-30;
     cleardevice();
     setbkcolor(BLACK);
     setcolor(RED);
     setlinestyle(SOLID_LINE,0,NORM_WIDTH);
     draw_image(x,y);                   /*调用画飞船子函数*/
     size=imagesize(x,y-IMAGE_SIZE,x+(4*IMAGE_SIZE)-4,y+IMAGE_SIZE);
                                        /*计算飞船图形所占的字节数*/
     p=malloc(size);
     getimage(x,y-IMAGE_SIZE,x+(4*IMAGE_SIZE)-4,y+IMAGE_SIZE,p);
     do
     {
         setvisualpage(0);             /*将第0页设置为可视页*/
         delay(500);                   /*保持图形显示500毫秒*/
         setactivepage(1);             /*将第1页设置为活动页*/
         cleardevice();
         setbkcolor(BLACK);
         setcolor(WHITE);              /*画白色边框*/
         setlinestyle(SOLID_LINE,0,NORM_WIDTH);
         rectangle(0,0,maxx,maxy);
         putstar(num=(num>30000?200:num+1));  /*调用画星星子函数*/
         setcolor(YELLOW);                  /*设置文本输出格式*/
         settextstyle(TRIPLEX_FONT,HORIZ_DIR,4);
         settextjustify(CENTER_TEXT,CENTER_TEXT);
         outtextxy(midx,290,"AROUND THE WORLD");
         for(i=0;i<=13;i++)                 /*画地球*/
             {
                  setcolor(BLUE);
                  ellipse(midx,midy-2,0,360,100,100-8*i);
                  ellipse(midx,midy-2,90,270,100-8*i-time%4,100);
                  ellipse(midx,midy-2,270,90,100-8*i+time%4,100);
              }
         setcolor(time++%3!=0?BROWN:WHITE);    /*作环绕地球的光环*/
         setlinestyle(SOLID_LINE,0,THICK_WIDTH);
         ellipse(midx,midy,130,50,160,30);
         setcolor(BLACK);
         ellipse(midx,midy,130,50,160,30);
         if(angle>ENDANGLE&angle<STARTANGLE)   /*画卫星*/
            angle=angle+5;
         else
         {
               setcolor(RED);
               setfillstyle(1,YELLOW);
               x1=midx+160*cos(angle*PI/180);
               y1=midy-30*sin(angle*PI/180);
               circle(x1,y1,6);
               floodfill(x1,y1,RED);
               angle=angle>360?5:angle+2;
          }
          putimage(x,y-5-IMAGE_SIZE,p,COPY_PUT);   /*显示内存中的图象*/
          x=x>maxx-40?1:x+4;                       /*显示飞船下次显示的横坐标*/
          setvisualpage(1);                        /*交换可视页与编辑页*/
          delay(500);
          setactivepage(0);
          cleardevice();
          setbkcolor(BLACK);
          setcolor(WHITE);
          setlinestyle(SOLID_LINE,0,NORM_WIDTH);
          rectangle(0,0,maxx,maxy);
          putstar(num=num<30000?200:num+1);
          setcolor(YELLOW);
          settextstyle(TRIPLEX_FONT,HORIZ_DIR,4);
          settextjustify(CENTER_TEXT,CENTER_TEXT);
          outtextxy(midx,290,"AROUND THE WORLD");
          for(i=0;i<=13;i++)
             {
                  setcolor(LIGHTBLUE);
                  ellipse(midx,midy-2,0,360,100,100-8*i);
                  ellipse(midx,midy-2,90,270,100-8*i-time%4,100);
                  ellipse(midx,midy-2,270,90,100-8*i+time%4,100);
              }
          setcolor(time++%3!=0?LIGHTMAGENTA:BLACK);
          setlinestyle(SOLID_LINE,0,THICK_WIDTH);
          ellipse(midx,midy,130,50,160,30);
          setcolor(BLACK);
          ellipse(midx,midy,130,50,160,30);
          if(angle>=ENDANGLE&angle<=STARTANGLE)
             angle=angle+5;
          else
          {
               setcolor(RED);
               setfillstyle(1,YELLOW);
               x1=midx+160*cos(angle*PI/180);
               y1=midy-30*sin(angle*PI/180);
               circle(x1,y1,6);
               floodfill(x1,y1,RED);
               angle=angle>360?5:angle+2;
           }
          putimage(x,y-5-IMAGE_SIZE,p,COPY_PUT);
          x=x>=maxx-40?1:x+4;
      }while(!kbhit());                        /*按任意键退出*/
      free(p);
      getch();
      closegraph();                             /*关闭图形系统*/
      return;
}

⌨️ 快捷键说明

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