玫瑰花(C语言代码)

玫瑰花(C语言代码)代码用到图形库,有音乐,音乐名为BadApple.mp3,可以找一首mp3形式的歌,歌名改成BadApple.mp3,与.exe文件放在同一个文件夹下,程序执行时会播放名字为BadApple.mp3音乐(会玩的可以去看程序自己改),不同编译器颜色不同左vc,右Dev,颜色也可以通过RGB()进行修改。加个图形库(EasyX)的链接(根据提示来就行):https://blog.csdn…

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

代码用到图形库,有音乐,音乐名为BadApple.mp3,可以找一首mp3形式的歌,歌名改成BadApple.mp3,与.exe文件放在同一个文件夹下,程序执行时会播放名字为BadApple.mp3音乐(会玩的可以去看程序自己改),不同编译器颜色不同左vc,右Dev,颜色也可以通过RGB()进行修改。

玫瑰花(C语言代码)

加个图形库(EasyX)的链接(根据提示来就行):C语言图形库函数easyx下载_Daisyes的博客-CSDN博客_easyx图形库下载

看到评论,大多没用过图形库的可能都不会弄,我上个蓝色玫瑰的.exe文件链接,效果看文章最后图片:

链接:https://pan.baidu.com/s/1ucpoRmS2t30CwpXMnC2PqQ 
提取码:sk63 

#include <stdio.h>
#include <windows.h>?
#include <math.h>
#include <graphics.h>
#include <mmsystem.h>
#pragma comment(lib,"winmm.lib")
//定义全局变量
int rosesize = 500;
int h = -250;
//定义结构体
struct DOT {
	double x;
	double y;
	double z;
	double r;
	double g;
};

bool calc(double a,double b,double c,DOT &d) {
	double j, n, o, w, z;

	if (c > 60) { //花柄
		d.x = sin(a * 7)*(13 + 5 / (0.2 + pow(b * 4, 4))) - sin(b) * 50;
		d.y = b*rosesize + 50;
		d.z = 625 + cos(a * 7)*(13 + 5 / (0.2 + pow(b * 4, 4))) + b * 400;
		d.r = a * 1 - b / 2;
		d.g = a;
		return true;
	}
	double A = a * 2 - 1;
	double B = b * 2 - 1;
	if (A*A + B*B < 1) { //绿叶
		if (c > 37) {
			j = (int(c) & 1);
			n = j ? 6 : 4;
			o = 0.5 / (a + 0.01) + cos(b * 125) * 3 - a * 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 - a * 0.1 + pow(1 - B * B, -h * 6) * 0.15 - a * b * 0.4 + cos(a + b) / 5 +
			      pow(cos((o * (a + 1) + (B > 0 ? w : -w)) / 25), 30) * 0.1 * (1 - B * B);
			d.g = o / 1000 + 0.7 - o * w * 0.000003;
			return true;
		}

		if (c > 32) { //花萼
			c = c*1.16 - 0.15;
			o = a * 45 - 20;
			w = b * 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 * b * b * 60 - z / 2 - h;
			d.z = z;
			d.r = (b * b * 0.3 + pow((1 - (A * A)), 7)*0.15 + 0.3)*b;
			d.g = b * 0.7;
			return true;
		}

//花朵
		o = A*(2 - b)*(80 - c * 2);
		w = 99 - cos(A) * 120 - cos(b)*(-h - c * 4.9) + cos(pow(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(pow(b, 7)) * 50 - c / 3 - z / 1.35 + 450;
		d.z = z;
		d.r = (1 - b / 1.2) * 0.9 + a * 0.1;
		d.g = pow((1 - b), 20) / 4 + 0.05;
		return true;
	}

	return false;
}

int main()
{
	short ?*zBuffer;
	int x, y, z, zBufferIndex;
	DOT dot;
	initgraph(640,480);//创建绘图窗口

	/*添加音乐*/
	mciSendString("open BadApple.mp3 alias BadApple", NULL, 0, NULL);
	mciSendString("play BAdApple", NULL, 0, NULL);

	setbkcolor(YELLOW);
	cleardevice();
	zBuffer = new short[rosesize * rosesize];
	memset(zBuffer, 0, sizeof(short) * rosesize * rosesize);
	for (int j = 0; j < 2000; j++)// && !_kbhit()
	{
		for (int i = 0; i < 10000; i++)
			if (calc(double(rand()) / RAND_MAX, double(rand()) / RAND_MAX, rand() % 46 / 0.74, dot))
			{
				z = int(dot.z + 0.5);
				x = int(dot.x*rosesize / z - h + 0.5);
				y = int(dot.y*rosesize / z - h + 0.5);
				if (y > rosesize) continue;
				zBufferIndex = y*rosesize + x;
				if (!zBuffer[zBufferIndex] || zBuffer[zBufferIndex] > z)
				{
					zBuffer[zBufferIndex] = z;
//画点
					int r = ~int((dot.r*h));
					?
					if (r < 0)r = 0;
					?
					if (r > 255)r = 255;

					int g = ~int((dot.g*h));
					if (g < 0)g = 0;
					if (g > 255)g = 255;

					int b = ~int((dot.r*dot.r*-80));
					if (b < 0)b = 0;
					if (b > 255)b = 255;

					putpixel(x + 50, y - 20, RGB(r, g, b));
				}
			}
		Sleep(100);
	}
	delete[]zBuffer;
	getchar();
	closegraph();
	return 0;
}

玫瑰花(C语言代码)

Dev执行后是蓝色是蓝色:

玫瑰花(C语言代码)

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/159473.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • postman调试rpc接口

    postman调试rpc接口使用postman测试RPC接口PostMan如何调用RPC接口(postman下载)PostMan如何调用RPC接口接口调试之Postman使用方法详解

    2022年10月13日
    0
  • Java指令编译java文件

    Java指令编译java文件Java指令编译java文件1.进入cmd2.编译2.1切换不同JDK编译文件3.运行1.进入cmd如何快速进入/打开cmd–快捷键在源代码目录输入cmd,然后回车2.编译如果出现错误:编码GBK的不可映射字符(0x8D)需要在javac后面加上-encodingUTF-8javac-encodingUTF-8编译的文件.java这时候就会多出.class文件,就是字节码文件了。2.1切换不同JDK编译文件一般JDK配置好了,直接用javac

    2022年6月12日
    33
  • eclipse导入Maven工程层级显示修改方法

    eclipse导入Maven工程层级显示修改方法最近换项目,在导入maven工程的时候发现导入显示的层级关系很不清楚,看的很不习惯,纠结半天之后发现应该如何处理。选择该项后会看到有两个选择,Flat和Hierarchical两个选择,这两个选项的意思分别是平铺与层级显示。将Flat改为Hierarchical即可。这时就变成层级显示了…

    2022年5月31日
    35
  • XXX公司的入职试题(时间:两小时)

    XXX公司的入职试题(时间:两小时)

    2021年5月7日
    97
  • goland 激活码2021.5[在线序列号]

    goland 激活码2021.5[在线序列号],https://javaforall.net/100143.html。详细ieda激活码不妨到全栈程序员必看教程网一起来了解一下吧!

    2022年3月19日
    65
  • 使用javascript实现数组截取

    使用javascript实现数组截取前言:在开发项目的过程中遇到这样的一个问题,就是需要对接口查询出来的数据两个两个的进行截取,之后分别两个两个的放入数组中,再把这些数组放到一个新数组中,实现方法如下:方法一:functionarrayChunk(array,size){ letdata=[]; for(leti=0;i<array.length;i+=size){ data.push(array.slice(i,i+size)) } returndata;}arrayChunk([{i

    2022年6月5日
    35

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号