C语言实现爱情红玫瑰的方法

  介绍

这篇文章将为大家详细讲解有关C语言实现爱情红玫瑰的方法,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。

本文实例为大家分享了C语言实现爱情红玫瑰的具体代码,供大家参考,具体内容如下

一朵红玫瑰,记得要安装easyX,否则运行不了,建议vs2015, 2017系列。看起开舒服一点。

 # include & lt; graphics.h>
  # include & lt; conio.h>
  # include & lt; math.h>//定义全局变量
  int rosesize=500;
  int h=-250;//定义结构体
  结构体点
  {
  双x;
  双y;
  双z;
  双r;//红色
  双g;//绿色//b(蓝色)通过r计算
  };//计算点
  bool calc(双、双b,双c点,d)
  {
  双j, n, o w z;
  
  如果(c比;60)//花柄
  {
  d。x=罪(* 7)*(13 + 5/(0.2 +战俘(b * 4, 4))) - sin (b) * 50;
  d。y=b * rosesize + 50;
  d。z=625 + cos(* 7) *(13 + 5/(0.2 +战俘(b * 4, 4))) + b * 400;
  d。r=* 1 - b/2;
  d。g=;
  返回true;
  }
  
  双=* 2 - 1;
  双B=B * 2 - 1;
  如果(* + * B & lt;1)
  {
  如果(c比;37)//叶
  {
  j=(int (c),1);
  n=j, # 63;6:4;
  o=0.5/(a + 0.01) + cos (b * 125) * 3 - * 300;
  w=b * h;
  
  d。x=o * cos (n) + w * sin (n) + j * 610 - 390;
  d。y=o * sin (n) - w * cos (n) + 550 - j * 350;
  d。z=1180 + cos (B + A) * 99 - j * 300;
  d。r=0.4 * 0.1 +战俘(1 - B * B - h * 6) * 0.15 - 0.4 a * B * + cos (a + B)/5 +战俘(cos ((o * (+ 1) + (B比;0,# 63;w: - w))/25), 30) * 0.1 * (1 - B * B);
  d。g=o/1000 + 0.7 - o * w * 0.000003;
  返回true;
  }
  如果(c比;32)//花萼
  {
  c=c * 1.16 - 0.15;
  o=* 45 - 20;
  w=b * * h;
  z=o * sin (c) + w * cos (c) + 620;
  
  d。x=o * cos (c) - w * sin (c);
  d。y=28 + cos (B * 0.5) * 99 - B * a * B * 60 - z/2 h;
  d。z=z;
  d。r=(b * b * 0.3 +战俘((1 - (*)),7)* 0.15 + 0.3)* b;
  d。g=b * 0.7;
  返回true;
  }//花
  o=* (2 - b) * (80 - c * 2);
  w=99 - cos (A) * 120 - cos (b) * 4.9 (- h - c *) + cos(战俘(1 - b, 7)) * 50 + c * 2;
  z=o * sin (c) + w * cos (c) + 700;
  
  d。x=o * cos (c) - w * sin (c);
  d。y=B * 99 - cos(战俘(B, 7)) * 50 - c/z/1.35 + 3 - 450;
  d。z=z;
  d。r=(1 - b/1.2) * 0.9 + 0.1 *;
  d。g=战俘((1 - b), 20)/4 + 0.05;
  返回true;
  }
  
  返回错误;
  }//主函数
  void main ()
  {//定义变量
  短* zBuffer;
  int x, y, z, zBufferIndex;
  点点;//初始化
  initgraph (640、480);//创建绘图窗口
  setbkcolor(白色);//设置背景色为白色
  清除设备();//清屏//初始化z-buffer
  zBuffer=new短(rosesize * rosesize);
  memset (zBuffer 0 sizeof(短)* rosesize * rosesize);
  
  for (int j=0;j & lt;2000年,,! _kbhit ();j + +)//按任意键退出
  {
  for (int i=0;我& lt;10000;我+ +)//减少是否有按键的判断
  如果(calc(双(rand ())/RAND_MAX,双(rand ())/RAND_MAX rand() % 46/0.74,点))
  {
  z=int(点。z + 0.5);
  x=int(点。x * rosesize/z - h + 0.5);
  y=int(点。y * rosesize/z - h + 0.5);
  如果(y祝辞=rosesize)继续;
  
  zBufferIndex=y * rosesize + x;
  
  如果(!zBuffer [zBufferIndex] | | zBuffer [zBufferIndex]比;z)
  {
  zBuffer [zBufferIndex]=z;//画点
  int r=~ int(点。r * h));如果(r & lt;0)r=0;如果(r比;255)r=255;
  int g=~ int(点。g * h));如果(g & lt;0)g=0;如果(g比;255)g=255;
  int b=~ int(点。r *点。r * -80));如果(b & lt;0)b=0;如果(b比;255)b=255;
  putpixel (50 x + y - 20, RGB (r, g, b));
  }
  }
  
  睡眠(1);
  }//退出
  删除[]zBuffer;
  _getch ();
  closegraph ();
  }

效果图:

 C语言实现爱情红玫瑰的方法

关于C语言实现爱情红玫瑰的方法就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看的到。

C语言实现爱情红玫瑰的方法