七夕——不一样的浪漫表达方式(进阶)

1. 用Java写一个“爱心跳动”动画

为了创建一个完整的“爱心跳动”动画,我们可以使用Java的Swing库来创建一个图形用户界面(GUI),并在其中实现爱心的绘制和动态跳动效果。以下是一个完整的Java代码示例,它展示了如何实现这个动画:

import javax.swing.*;
import java.awt.*;
​
public class BouncingHeartAnimation extends JPanel implements Runnable {
    private int heartSize = 50;
    private int x = 100;
    private int y = 100;
    private boolean isGrowing = true;
    private static final int MAX_SIZE = 70;
    private static final int MIN_SIZE = 50;
​
    public BouncingHeartAnimation() {
        // 创建一个新线程来运行动画
        new Thread(this).start();
    }
​
    @Override
    protected void paintComponent(Graphics g) {
        super.paintComponent(g);
        // 绘制爱心
        drawHeart(g, x, y, heartSize);
    }
​
    private void drawHeart(Graphics g, int x, int y, int size) {
        g.setColor(Color.RED);
        // 使用两个圆弧和一个三角形来绘制爱心
        g.fillArc(x - size / 2, y - size / 2, size, size, 0, 180);
        g.fillArc(x + size / 4, y - size / 2, size / 2, size / 2, 0, 180);
        g.fillPolygon(new int[]{x, x + size / 2, x}, new int[]{y + size, y + size * 2, y + size}, 3);
    }
​
    @Override
    public void run() {
        while (true) {
            try {
                Thread.sleep(50); // 控制动画的速度
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
​
            // 更新爱心的大小和位置
            if (isGrowing) {
                heartSize++;
                if (heartSize >= MAX_SIZE) {
                    isGrowing = false;
                    y--; // 可以在这里添加简单的垂直移动效果
                }
            } else {
                heartSize--;
                if (heartSize <= MIN_SIZE) {
                    isGrowing = true;
                    y++; // 反向移动
                }
            }
​
            // 重绘组件
            repaint();
        }
    }
​
    public static void main(String[] args) {
        JFrame frame = new JFrame("爱心跳动动画");
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.add(new BouncingHeartAnimation());
        frame.setSize(400, 400);
        frame.setLocationRelativeTo(null); // 居中显示
        frame.setVisible(true);
    }
}

代码解释:

(1)类定义BouncingHeartAnimation 类继承自 JPanel 并实现了 Runnable 接口,允许我们在自己的线程中运行动画。

(2)初始化:在构造函数中,我们启动了一个新线程来运行动画。

(3)绘制方法paintComponent 方法用于在面板上绘制爱心。我们使用 Graphics 对象来绘制两个圆弧和一个三角形,从而形成一个爱心的形状。

(4)动画逻辑:在 run 方法中,我们使用一个无限循环来不断更新爱心的大小和位置,并使用 Thread.sleep 来控制动画的速度。当爱心大小达到最大值或最小值时,我们改变其大小变化的方向,并简单地改变其垂直位置以模拟跳动效果。

(5)主类main 方法中,我们创建了一个 JFrame 窗口,并将 BouncingHeartAnimation 组件添加到其中。然后,我们设置了窗口的大小、位置和可见性。

这样,当我们运行这个程序时,我们将看到一个在窗口中跳动的爱心动画。

2.爱心代码程序展示

2.1 Python

Python 语言中,我们可以使用 turtle 模块来绘制爱心。以下是一个简单的示例:

import turtle
​
turtle.speed(1)
turtle.hideturtle()
turtle.color('red', 'pink')
turtle.begin_fill()
turtle.left(135)
turtle.forward(133)
turtle.circle(-50, 180)
turtle.left(120)
turtle.circle(-50, 180)
turtle.forward(133)
turtle.end_fill()
​
turtle.done()

2.2 C语言

C 语言中,我们可以使用循环和条件语句来打印出爱心图案。以下是一个简单的示例:

#include <stdio.h>
​
int main()
{
    int i, j, k, n = 0, x = 0, y = 50;
    
    printf("\n\n\n\n\n");
    printf("         lovelove                   lovelove\n");
    printf("       lovelovelove               lovelovelove\n");
    printf("     lovelovelovelove           lovelovelovelove\n");
    printf("   lovelovelovelovelove       lovelovelovelovelove\n");
    printf("  lovelovelovelovelovelo     lovelovelovelovelovelo\n");
    printf(" lovelovelovelovelovelove   lovelovelovelovelovelov\n");
    
    for (i = 0; i < 2; i++)
    {
        printf("lovelovelovelovelovelovellovellovellovellovelovelove\n");
    }
    
    for(i=0;i<5;i++)    
    {
        y = 50;
        y = y - i*2;
        n++;
        for (k = 0; k < n; k++)    
        {
            printf(" ");
        }
        while(1)    
        {
            if (x < y)
            {
                printf("l");
                y--;
            }
            else
                break;
            if (x < y)
            {
                printf("o");
                y--;
            }
            else
                break; 
            if (x < y)
            {
                printf("v");
                y--;
            }
            else
                break; 
            if (x < y)
            {
                printf("e");
                y--;
            }
            else
                break; 
        }
        printf("\n");
    }
    
    return 0;
}

2.3 JavaScript

JavaScript 中,我们可以使用 canvas API 来绘制爱心。以下是一个简单的示例:

var canvas = document.getElementById('canvas');
var ctx = canvas.getContext('2d');
canvas.width = 400;
canvas.height = 400;
​
var heartFunc = function(x, y, size) {
    var heart = '';
    for (var i = 0; i < size; i++) {
        var x1 = 1 - Math.pow(Math.sin(i * (Math.PI / size)), 3);
        var y1 = 1 - Math.pow(Math.cos(i * (Math.PI / size)), 2);
        var pos = (x1 * 50 + x) + ',' + (y1 * 50 + y);
        heart += 'm' + pos + 'c0,-0.1 0.1,0.05 -0.1,0.2 0,0.2 0.1,0.05 0,-0.1 -0.1,-0.2z';
    }
    ctx.path = heart;
    ctx.stroke();
    ctx.fill();
}
​
heartFunc(150, 150, 100);

这些示例代码仅用于演示,您可以根据需要进行修改和扩展。对于更复杂和个性化的爱心代码,您可以参考网上已有的资源或自行设计。

3. python浪漫星空代码

以下是一个Python代码示例,用于绘制一个简单的浪漫星空:

import turtle
import random
​
# 设置画布大小和背景颜色
turtle.setup(800, 600, 0, 0)
turtle.bgcolor('black')
​
# 定义星星函数
def draw_star(x, y, size):
    turtle.penup()
    turtle.goto(x, y)
    turtle.pendown()
    turtle.color('white')
    turtle.begin_fill()
    for _ in range(5):
        turtle.forward(size)
        turtle.right(144)
    turtle.end_fill()
​
# 画星星
for _ in range(50):
    x = random.randint(-400, 400)
    y = random.randint(-300, 300)
    size = random.randint(5, 20)
    draw_star(x, y, size)
​
# 隐藏画笔
turtle.hideturtle()
​
# 等待用户关闭窗口
turtle.done()

此代码首先导入了turtle和random库,然后设置了画布大小和背景颜色。接下来,定义了一个函数draw_star来绘制星星,并使用循环和随机函数来生成星星的位置和大小。最后,隐藏画笔并等待用户关闭窗口。

为了增加浪漫元素,我们可以根据需求添加流星、爱心等图形,或者修改星星的颜色、大小、移动速度等参数来增强效果。

如果我们希望实现动态效果,可以通过设置一个定时器来定期更新星星的位置,并清除画布上的旧星星。这需要一些额外的逻辑来处理,涉及到使用Python的time模块和循环来重复绘制。

4. python绘制满屏玫瑰盛开

在Python中,我们可以使用多种方法来绘制满屏的玫瑰盛开效果。下面是一种基于matplotlib库的简单实现方法:

import numpy as np
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
​
# 设置画布大小
fig = plt.figure(figsize=(10,10))
ax = fig.add_subplot(111, projection='3d')
​
# 玫瑰花的参数
a = 1
n = 5
d = 0.05
​
# 计算坐标值
theta = np.linspace(0, 2*np.pi, 200)
r = a * np.sin(n*theta)
x = r * np.cos(theta)
y = r * np.sin(theta)
z = d * theta
​
# 绘制3D图像
ax.plot(x, y, z)
​
# 设置花瓣颜色
ax.set_facecolor('pink')
​
# 隐藏坐标轴
ax.set_xticks([])
ax.set_yticks([])
ax.set_zticks([])
​
# 显示图形
plt.show()

上述代码将会绘制一个基于3D的玫瑰图像。如果我们想在控制台/终端上绘制玫瑰图案,我们可能需要采用字符画的方式。下面是一个基于字符画和ASCII艺术的简单实现:

def draw_rose():
    for i in range(360):
        angle = 0.1 * i
        x = int(10 * math.sin(angle) * math.cos(angle))
        y = int(10 * math.sin(angle))
        print(' ' * y + '*' * x)
​
# 绘制满屏的玫瑰花
draw_rose()

这段代码将会使用字符“*”来绘制玫瑰花的图案。

然而,需要注意的是,上述代码并不完全满足我们的需求,即“玫瑰盛开”的动态效果。我们可以通过加入循环和延时来实现这一效果,但由于控制台/终端的特性,这样的动态效果可能并不明显。如果我们希望实现更明显的动态效果,可能需要使用更复杂的图形库,如pygame,或者考虑使用web框架来制作交互式的动态图形。

5. python制作超炫流星雨表白

为了制作一个超炫的流星雨表白效果,我们可以使用Python的turtle库来绘制流星。以下是一个简单的示例代码,它会在终端上显示一个动态的流星雨效果:

import turtle
import random
​
# 设置画布大小
turtle.setup(800, 600)
​
# 定义流星类
class Meteor:
    def __init__(self):
        self.x = random.randint(-400, 400)
        self.y = random.randint(-300, 300)
        self.size = random.randint(5, 20)
        self.speed = random.randint(1, 5)
​
    def move(self):
        self.y += self.speed
        if self.y > 600:
            self.x = random.randint(-400, 400)
            self.y = random.randint(-300, 300)
            self.size = random.randint(5, 20)
            self.speed = random.randint(1, 5)
​
    def draw(self):
        turtle.penup()
        turtle.goto(self.x, self.y)
        turtle.pendown()
        turtle.color('white')
        for _ in range(self.size):
            turtle.forward(1)
            turtle.right(144)
​
# 创建流星列表
meteors = []
for _ in range(50):  # 50颗流星
    meteor = Meteor()
    meteors.append(meteor)
​
# 循环绘制流星雨
while True:
    for meteor in meteors:
        meteor.move()
        meteor.draw()
    turtle.update()

这段代码会生成50颗流星,并让它们不断移动和绘制。我们可以通过修改流星的数量、大小、速度等参数来定制我们的流星雨效果。

如果我们想在流星雨中添加表白信息,我们可以在代码中加入一个函数来绘制文本或图像。例如,我们可以修改draw函数来在流星下方绘制一段文字:

def draw(self):
    turtle.penup()
    turtle.goto(self.x, self.y)
    turtle.pendown()
    turtle.color('white')
    for _ in range(self.size):
        turtle.forward(1)
        turtle.right(144)
    turtle.penup()
    turtle.goto(self.x, self.y + self.size * 2)
    turtle.pendown()
    turtle.color('red')
    turtle.write("我爱我们!", align="center", font=("Arial", 12, "normal"))

在这个例子中,流星下方的表白信息以红色字体居中显示。我们可以根据需要调整文字的颜色、大小和位置。

记得将上述代码添加到我们的Python环境中,并运行它来查看效果。我们可以根据需要修改和扩展这个代码,以创建更复杂的流星雨效果和更个性化的表白信息。

  • 12
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
七夕情人节,有人会选择使用Python来表达浪漫Python是一种编程语言,具有丰富的库和模块可以实现各种功能。在情人节中,有人使用Python的turtle模块来进行交互式绘画,来创造浪漫的氛围。通过编写创意的代码,可以讲述和亲爱的TA一起经历的故事、初见印象、浪漫的开始、铭记于心的大小事、经历的曲折、经历的幸福与快乐、珍贵的瞬间、对未来的期许和计划等等。使用Python来表达浪漫,可以是一种独特而有趣的方式。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [程序员的七夕用30行代码让Python化身表白神器](https://download.csdn.net/download/weixin_38733382/12860807)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *2* *3* [七夕到了——属于Python浪漫, 祝表白成功](https://blog.csdn.net/qq_44936246/article/details/126167922)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值