C语言/C++学习之万花模拟器(C/C++基础)
小职 2021-01-12 来源 : 阅读 798 评论 0

摘要:本文主要向大家介绍了C语言/C++学习之万花模拟器(C/C++基础),通过具体的内容向大家展现,希望对大家C语言/C++的学习有所帮助。

本文主要向大家介绍了C语言/C++学习之万花模拟器(C/C++基础),通过具体的内容向大家展现,希望对大家C语言/C++的学习有所帮助。

C语言/C++学习之万花模拟器(C/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 = #  

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++学习之万花模拟器(C/C++基础)

C语言/C++学习之万花模拟器(C/C++基础)

C语言/C++学习之万花模拟器(C/C++基础)

C语言/C++学习之万花模拟器(C/C++基础)

C语言/C++学习之万花模拟器(C/C++基础)

C语言/C++学习之万花模拟器(C/C++基础)

C语言/C++学习之万花模拟器(C/C++基础)




关注“职坐标在线”(Zhizuobiao_Online)公众号,免费获取学习视频资料、技术就业咨询

C语言/C++学习之万花模拟器(C/C++基础)

本文由 @小职 发布于职坐标。未经许可,禁止转载。
喜欢 | 0 不喜欢 | 0
看完这篇文章有何感觉?已经有0人表态,0%的人喜欢 快给朋友分享吧~
评论(0)
后参与评论

您输入的评论内容中包含违禁敏感词

我知道了

助您圆梦职场 匹配合适岗位
验证码手机号,获得海同独家IT培训资料
选择就业方向:
人工智能物联网
大数据开发/分析
人工智能Python
Java全栈开发
WEB前端+H5

请输入正确的手机号码

请输入正确的验证码

获取验证码

您今天的短信下发次数太多了,明天再试试吧!

提交

我们会在第一时间安排职业规划师联系您!

您也可以联系我们的职业规划师咨询:

小职老师的微信号:z_zhizuobiao
小职老师的微信号:z_zhizuobiao

版权所有 职坐标-一站式IT培训就业服务领导者 沪ICP备13042190号-4
上海海同信息科技有限公司 Copyright ©2015 www.zhizuobiao.com,All Rights Reserved.
 沪公网安备 31011502005948号    

©2015 www.zhizuobiao.com All Rights Reserved

208小时内训课程