溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶(hù)服務(wù)條款》

怎么用C++實(shí)現(xiàn)萬(wàn)花模擬器

發(fā)布時(shí)間:2021-10-20 15:03:40 來(lái)源:億速云 閱讀:138 作者:iii 欄目:編程語(yǔ)言

本篇內(nèi)容介紹了“怎么用C++實(shí)現(xiàn)萬(wàn)花模擬器”的有關(guān)知識(shí),在實(shí)際案例的操作過(guò)程中,不少人都會(huì)遇到這樣的困境,接下來(lái)就讓小編帶領(lǐng)大家學(xué)習(xí)一下如何處理這些情況吧!希望大家仔細(xì)閱讀,能夠?qū)W有所成!

還記得小時(shí)候玩的萬(wàn)花尺么?好好玩,各種不同的點(diǎn)距能畫(huà)出各種各樣形狀圖形。

C語(yǔ)言程序萬(wàn)花尺模擬

函數(shù)功能:每隔5秒隨機(jī)生成萬(wàn)花圖形 并自動(dòng)保存作圖參數(shù)以及圖形到當(dāng)前目錄,圖像格式為jpg

提示:

  • 相關(guān)參數(shù)范圍可以自行設(shè)置,用自定義mySetRand函數(shù)設(shè)置作圖尺寸范圍

注意:

  • 內(nèi)圓半徑不能大于外圓半徑,內(nèi)圓作圖點(diǎn)不能大于內(nèi)圓半徑

/*以下是完整代碼,可自行個(gè)性化更改參數(shù)*/

#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; // 動(dòng)圓半徑  int dr; // 動(dòng)圓上的作圖點(diǎn)到圓心的距離  while (1)  {  //產(chǎn)生一個(gè)100-395之間的隨機(jī)數(shù)  R = mySetRand(1, 100, 395);  r = R - mySetRand(1, 5, 95);  dr = r - mySetRand(1,2, r-5);  // 求執(zhí)行次數(shù)(最小公倍數(shù)/靜圓半徑)  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));  // 設(shè)置作圖原點(diǎn)坐標(biāo),使其在窗口中心畫(huà)圖  setorigin(400, 300);  // 開(kāi)始繪圖  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));  }  //歸位原點(diǎn)坐標(biāo)  setorigin(0, 0);  _stprintf_s(s, _T("作圖參數(shù):外圓半徑%.3d像素\\內(nèi)圓半徑%.3d像素\\作圖點(diǎn)到圓心距離%.3d像素"), R, r, dr);  settextstyle(20, 0, _T("黑體"));  settextcolor(RED);  outtextxy(60, 587, s);  //保存圖形到當(dāng)前目錄  k++;  _stprintf_s(s, _T("%.6d.jpg"), k);  saveimage(s);  //畫(huà)面停留5秒后,清屏重新畫(huà)另一個(gè)圖  Sleep(5000);  closegraph();  }  return 0;  }  //指定范圍隨機(jī)數(shù)產(chǎn)生  //num產(chǎn)生個(gè)數(shù),產(chǎn)生范圍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("最大值與最小值反過(guò)來(lái)了?\n元素個(gè)數(shù)為負(fù)數(shù)了?");  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("處理出錯(cuò)!");  getchar();  return -2;  }  if (p2>*p_max || p2<*p_min)  {  printf("數(shù)據(jù)有誤!");  getchar();  }  }  return p2;  }

//部分代碼截圖以及效果圖展現(xiàn)如下

怎么用C++實(shí)現(xiàn)萬(wàn)花模擬器
怎么用C++實(shí)現(xiàn)萬(wàn)花模擬器
怎么用C++實(shí)現(xiàn)萬(wàn)花模擬器
怎么用C++實(shí)現(xiàn)萬(wàn)花模擬器
怎么用C++實(shí)現(xiàn)萬(wàn)花模擬器
怎么用C++實(shí)現(xiàn)萬(wàn)花模擬器
怎么用C++實(shí)現(xiàn)萬(wàn)花模擬器
怎么用C++實(shí)現(xiàn)萬(wàn)花模擬器
怎么用C++實(shí)現(xiàn)萬(wàn)花模擬器

“怎么用C++實(shí)現(xiàn)萬(wàn)花模擬器”的內(nèi)容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業(yè)相關(guān)的知識(shí)可以關(guān)注億速云網(wǎng)站,小編將為大家輸出更多高質(zhì)量的實(shí)用文章!

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI