回 帖 发 新 帖 刷新版面

主题:[原创]雪花专辑

程序下载http://upload.programfan.com/upfile/200706241223541.rar
 专辑地址http://hucheng.programfan.com
/*01递归生成雪
花*/
#include <stdio.h>
#include <graphics.h>
#include <math.h>
#define PI 3.141592653
int main()
  {
    int gd=DETECT,gm;
    float x0=320,y0=240,r=100;
    void drawsnow(int x,int y,int r,float b);
      registerbgidriver(EGAVGA_driver);
      initgraph(&gd,&gm,"");
      drawsnow(x0,y0,r,PI/6);
      getch();
      closegraph();
      return 1;
  }
void drawsnow(int x,int y,int r,float b)
  {
        int i;
        float add,x1,y1,x2,y2;
           if (r<2) return ;
           for(add=PI/6;add<6.27;add+=PI/3)
              {
                  x1=x+r*2.0/3.0*cos(add+b);y1=y+r*2.0/3.0*sin(add+b);
                  line(x,y,x1,y1);
                  drawsnow(x1,y1,r/3.0,add+b);
              }
  }

回复列表 (共17个回复)

11 楼

/*koch雪花4 动态-飘零*/
#include <stdio.h>
#include <graphics.h>
#include <math.h>
#include <bios.h>
#include <alloc.h>
#define R 20
#define MAX 1000
typedef struct {float x,y;}dotxy;
typedef struct lnode
  {
      dotxy loc,centre;
      struct lnode *next; }lnode,*lnlink;
int main()
  {
    int makesnow(dotxy *loclist);
    int gd=DETECT,gm,n,i,j,flag;
    float b,len,y1;
    dotxy loclist[MAX],temp[MAX];
      /* registerbgidriver(EGAVGA_driver);*/
       initgraph(&gd,&gm,"d:\\tc\\bgi");
       n=makesnow(loclist);
       b=0,y1=0;
       while(!bioskey(1))
          {
              flag=0;
              for(i=0;i<n;i++)
                 {
                    len=sqrt(loclist[i].x*loclist[i].x+loclist[i].y*loclist[i].y);
                    temp[i].x=320+len*(cos(b)*(loclist[i].x)/len+sin(b)*(loclist[i].y)/len);
                    temp[i].y=y1+len*(cos(b)*(loclist[i].y)/len+sin(b)*(loclist[i].x)/len);
                    if (temp[i].y>550) flag=1,y1=0; 
                 }
              if (flag)
                 for(i=0;i<n;i++) temp[i].y-=500;   
              y1+=1; 
            cleardevice();   
            for(j=0;j<2;j++)
               {
                  for(i=0;i<n-1;i++)
                     {
                        line(temp[i].x,temp[i].y,temp[i+1].x,temp[i+1].y); 
                        line(temp[i].x-60,temp[i].y-60,temp[i+1].x-60,temp[i+1].y-60); 
                        line(temp[i].x+60,temp[i].y+60,temp[i+1].x+60,temp[i+1].y+60);
                        line(temp[i].x+60,temp[i].y-60,temp[i+1].x+60,temp[i+1].y-60);  
                        line(temp[i].x-60,temp[i].y+60,temp[i+1].x-60,temp[i+1].y+60); 
                     }
               }
               
            b+=5e-2; 
          }
       getch();
       closegraph();
  }

12 楼

[quote]如遇到这样的错误:
fatal error C1083: Cannot open include file: 'graphics.h': No such file or directory
请问怎解决?
[/quote]

这些程序必须是在古董TURBOC环境中编译
'graphics.h'是TURBO的图形库头文件

13 楼

/*接上11楼*/
int makesnow(dotxy *loclist)
  {
      lnlink p,q,pr,s,newnode;
      int i,x,y;
      float r,amount,num;
        p=(lnlink)malloc(sizeof(lnode)*3);
        if (p==NULL) exit(0);
        p[0].loc.x=R/2*1.73;p[0].loc.y=-R/2;
        p[1].loc.x=-R/2*1.73;p[1].loc.y=-R/2;
        p[2].loc.x=0;p[2].loc.y=R;
      p[0].centre.x=p[1].centre.x=p[2].centre.x=0;
      p[0].centre.y=p[1].centre.y=p[2].centre.y=0;
      p[0].next=p+1;p[1].next=p+2;p[2].next=p;
      q=p,r=R,amount=3;
      while(r>1)
        { 
          num=0;
          for(i=0;i<amount;i++)
             {
               pr=q->next;            
               newnode=(lnlink)malloc(sizeof(lnode));
               if (newnode==NULL) exit(0);
               s=newnode;
               newnode->next=q->next;
               q->next=s;
               s->loc.x=(2.0*q->loc.x+pr->loc.x)/3.0;
               s->loc.y=(2.0*q->loc.y+pr->loc.y)/3.0;
               newnode=(lnlink)malloc(sizeof(lnode));
               if (newnode==NULL) exit(0);
               newnode->next=s->next;
               s->next=newnode;
               newnode->loc.x=q->loc.x+ pr->loc.x - q->centre.x;
               newnode->loc.y=q->loc.y+ pr->loc.y - q->centre.y;
               newnode->centre.x=(q->centre.x+2*newnode->loc.x)/3;
               newnode->centre.y=(q->centre.y+2*newnode->loc.y)/3;
               s->centre.x=newnode->centre.x;s->centre.y=newnode->centre.y;
               s=newnode;
               newnode=(lnlink)malloc(sizeof(lnode));
               if (newnode==NULL) exit(0);
               newnode->next=s->next;
               s=s->next=newnode;
               s->loc.x=(q->loc.x+2*pr->loc.x)/3;
               s->loc.y=(q->loc.y+2*pr->loc.y)/3;
               s->centre.x=(q->centre.x+2*pr->loc.x)/3;
               s->centre.y=(q->centre.y+2*pr->loc.y)/3;
               q->centre.x=(q->centre.x+2*q->loc.x)/3;
               q->centre.y=(q->centre.y+2*q->loc.y)/3;
               q=pr;
               num+=3;
             }    
          r/=3.0;amount+=num;   
        }
     for(i=0,q=p;i<amount;i++,q=q->next) loclist[i].x=q->loc.x,loclist[i].y=q->loc.y;
     return amount;
  }

14 楼

回12楼在菜单栏里找:OPTIONS->LINKS..打开一个对话框,然后把里面的 GRAPHICS LIBRARY的选项选中再试一下

15 楼

楼主真是怀古啊,还忘不了graphics.h

16 楼

问一下,在VC6.0里怎么修改可以运行?

17 楼


VC里用不了呀,因为没有graphics.h, graphics.lib

我来回复

您尚未登录,请登录后再回复。点此登录或注册