温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

怎么用C++实现万花模拟器

发布时间:2021-10-20 15:03:40 来源:亿速云 阅读:138 作者:iii 栏目:编程语言

本篇内容介绍了“怎么用C++实现万花模拟器”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!

还记得小时候玩的万花尺么?好好玩,各种不同的点距能画出各种各样形状图形。

C语言程序万花尺模拟

函数功能:每隔5秒随机生成万花图形 并自动保存作图参数以及图形到当前目录,图像格式为jpg

提示:

  • 相关参数范围可以自行设置,用自定义mySetRand函数设置作图尺寸范围

注意:

  • 内圆半径不能大于外圆半径,内圆作图点不能大于内圆半径

/*以下是完整代码,可自行个性化更改参数*/

#include  #include  #include  #include  #include  #include  int mySetRand(int num, int min, int max);  #define PI 3.1415926536  int main()  {  int k = 0;  wchar_t s[255] = { NULL };  int R; // 静圆半径  int r; // 动圆半径  int dr; // 动圆上的作图点到圆心的距离  while (1)  {  //产生一个100-395之间的随机数  R = mySetRand(1, 100, 395);  r = R - mySetRand(1, 5, 95);  dr = r - mySetRand(1,2, r-5);  // 求执行次数(最小公倍数/静圆半径)  int m = R, n = r;  int tmp;  while (n != 0)  {  tmp = m % n;  m = n;  n = tmp;  }  double maxdegree = r / m * 2 * PI;  //清屏  //cleardevice();  system("cls");  initgraph(800, 610);  setbkcolor(RGB(200, 200, 200));  // 设置作图原点坐标,使其在窗口中心画图  setorigin(400, 300);  // 开始绘图  int x, y;  for (double degree = 0; degree < maxdegree; degree += 0.01)  {  x = (int)(dr * cos(degree*(double(R) / r - 1)) + (R - r) * cos(degree));  y = (int)(dr * sin(degree*(double(R) / r - 1)) - (R - r) * sin(degree));  putpixel(x, y, RGB(255,255,0));  }  //归位原点坐标  setorigin(0, 0);  _stprintf_s(s, _T("作图参数:外圆半径%.3d像素\\内圆半径%.3d像素\\作图点到圆心距离%.3d像素"), R, r, dr);  settextstyle(20, 0, _T("黑体"));  settextcolor(RED);  outtextxy(60, 587, s);  //保存图形到当前目录  k++;  _stprintf_s(s, _T("%.6d.jpg"), k);  saveimage(s);  //画面停留5秒后,清屏重新画另一个图  Sleep(5000);  closegraph();  }  return 0;  }  //指定范围随机数产生  //num产生个数,产生范围min到max(包括min和max)  int mySetRand(int num, int min, int max)  {  int *p_num = &num;  int *p_min = &min;  int *p_max = &max;  int a = 0;  int p1 = 0, p2 = 0;  if ((*p_num)<0 || (*p_min>*p_max))  {  printf("最大值与最小值反过来了?\n元素个数为负数了?");  getchar();  return -1;  }  srand((unsigned int)time(0));  for (size_t i = 0; i < *p_num; i++)  {  a = rand();  if (*p_min == 0)  {  p2 = a % (*p_max + 1);  }  else if (*p_min>0)  {  p1 = a / (*p_max - *p_min + 1);  p2 = a - p1*(*p_max - *p_min + 1) + *p_min;  }  else  {  printf("处理出错!");  getchar();  return -2;  }  if (p2>*p_max || p2<*p_min)  {  printf("数据有误!");  getchar();  }  }  return p2;  }

//部分代码截图以及效果图展现如下

怎么用C++实现万花模拟器
怎么用C++实现万花模拟器
怎么用C++实现万花模拟器
怎么用C++实现万花模拟器
怎么用C++实现万花模拟器
怎么用C++实现万花模拟器
怎么用C++实现万花模拟器
怎么用C++实现万花模拟器
怎么用C++实现万花模拟器

“怎么用C++实现万花模拟器”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注亿速云网站,小编将为大家输出更多高质量的实用文章!

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI