用C语言写一个跳动爱心的图形
时间: 2023-09-29 19:11:00 浏览: 692
跳动的红心_C语言实现跳动的红心_
5星 · 资源好评率100%
以下是C语言代码实现一个跳动的爱心图形,您可以在终端中运行查看效果:
```c
#include <stdio.h>
#include <math.h>
#include <stdlib.h>
#include <time.h>
#include <unistd.h>
#define PI 3.14159265359
#define HEART_WIDTH 34
#define HEART_HEIGHT 30
// 绘制爱心
void draw_heart(int x, int y, double size, int color) {
int i, j;
double angle, x1, y1;
// 绘制左半边爱心
for (i = HEART_HEIGHT / 2; i >= 0; i--) {
angle = PI - i * PI / HEART_HEIGHT;
x1 = HEART_WIDTH / 2 - sqrt(i * size);
y1 = i * size - 5;
for (j = -x1; j <= x1; j++) {
if (j == 0) continue;
if (color == 0)
printf("\033[31m♥\033[0m");
else if (color == 1)
printf("\033[32m♥\033[0m");
else if (color == 2)
printf("\033[33m♥\033[0m");
else
printf("\033[34m♥\033[0m");
}
for (j = x1; j >= -x1; j--) {
if (j == 0) continue;
if (color == 0)
printf("\033[31m♥\033[0m");
else if (color == 1)
printf("\033[32m♥\033[0m");
else if (color == 2)
printf("\033[33m♥\033[0m");
else
printf("\033[34m♥\033[0m");
}
printf("\n");
}
// 绘制右半边爱心
for (i = 0; i <= HEART_HEIGHT / 2; i++) {
angle = i * PI / HEART_HEIGHT;
x1 = HEART_WIDTH / 2 - sqrt(i * size);
y1 = i * size - 5;
for (j = -x1; j <= x1; j++) {
if (j == 0) continue;
if (color == 0)
printf("\033[31m♥\033[0m");
else if (color == 1)
printf("\033[32m♥\033[0m");
else if (color == 2)
printf("\033[33m♥\033[0m");
else
printf("\033[34m♥\033[0m");
}
for (j = x1; j >= -x1; j--) {
if (j == 0) continue;
if (color == 0)
printf("\033[31m♥\033[0m");
else if (color == 1)
printf("\033[32m♥\033[0m");
else if (color == 2)
printf("\033[33m♥\033[0m");
else
printf("\033[34m♥\033[0m");
}
printf("\n");
}
}
int main() {
int i, j, color;
double size = 0.2;
srand(time(NULL));
while (1) {
// 随机生成颜色
color = rand() % 4;
// 随机生成大小
size += (rand() % 2 == 0 ? 0.1 : -0.1);
size = size < 0.1 ? 0.1 : (size > 0.3 ? 0.3 : size);
// 清空终端
system("clear");
// 绘制爱心
draw_heart(0, 0, size, color);
// 延时
usleep(300000);
}
return 0;
}
```
这段代码使用了 ANSI 转义序列来控制终端输出的颜色,使得爱心可以随机生成颜色。同时,使用了 usleep 函数来实现延时,让爱心可以跳动起来。
阅读全文