用Python绘制浪漫玫瑰动画:表白要有创意,代码比玫瑰更动人!无需python环境,可直接电脑上运行!


想象一下,你轻轻敲下一行指令,屏幕上呈现的是一朵缓缓绽放的ASCII玫瑰,伴随着专属于你的祝福语。表白和浪漫不只是鲜花和烛光,代码的世界同样可以如此温柔动人。今天,我们一起用Python的魅力,为你的表达赋予新的生命。


1. 玫瑰动画的核心功能

这段代码的核心,是借助动态的ASCII图形,通过Python在终端中绘制一朵从含苞到盛开的玫瑰。结合终端操作与动画延迟,它以“帧”的概念呈现玫瑰的变化过程。而最终,通过 colorama 实现了带颜色的花朵,让画面更显生动。

1.1 完整代码如下

import os
import time
from colorama import init, Fore
import ctypes
init()

def set_fullscreen():
    kernel32 = ctypes.WinDLL('kernel32', use_last_error=True)
    hwnd = kernel32.GetConsoleWindow()
    if hwnd:
        user32 = ctypes.WinDLL('user32', use_last_error=True)
        SW_MAXIMIZE = 3
        user32.ShowWindow(hwnd, SW_MAXIMIZE)

def clear_screen():
    if os.name == 'nt':
        os.system('cls')
    else:
        os.system('clear')

def print_rose_stage1():
    return '''
                                                                                 
                    *********************                             
               *****                     *****                        
             **            *                  ***                     
            **         *  *          **         **                    
           **         *  **  *        *          *                    
          **          * **  *** ****** *     *   ***                  
          *           * *  *      *    ** *  *      ***               
          *           *    *  **        * *   **      ***             
          *            *   * *          *  *  *         *             
          *         ****    *           ***** *        **             
           *    *** *  *                    ***       **              
           *** *  ** ***                            ***               
             ***   **  **   **    *  ***        ****                  
                *   **  **    **** **    **   **                      
                 *   **  **          ****    **                       
                 **   **  **       ***        **                      
                  ***      **    ***                                  
                *   *****                  *****                      
             ***        ***              **                           
             * *           *    *********                             
             ***           * * **                                     
                           *  *                                       
                           *    *                                     
                           **** *                                     
                               * *                                    
                               * *                                    
                               * *                                    
                               * *                                    
                               * *                                    
                               * *                                    
                               * *                                    
                               * *                                    
                               * *                                    
    '''

def print_rose_stage2():
    return '''
                         *  ******************                                            
                       ** **                  **********                                  
                   ****                                 ****                              
                 **                                *        ***                           
                **                **          **   *          **                          
               **       *        ** *  **    *  **  *          *                          
              **      **       ***   **       *   ***     *    *                          
             **      **        *    *    **** *     * *   *     **                        
             *      **         *   *    * *   *  *  ****  *      *****                    
            *       *          *  * ***** ***  * ***   *   **        ***                  
             *      *          *  *   *      **     *  *    *          **                 
             *      *            ******             *  *    *           *                 
             *       *                              ***    **          **                 
              *     * *                                *****          **                  
              ***   * ***                              *             **                   
                **  *   **                            *           ***                     
                 ****    **        ****          ***  *       ****                        
                     *    **           **********    **     **                            
                      *    **                    ****      **                             
                      *     **                ****        **                              
                      **     **             ***      ***   ***                            
                       ***                 **      **       *                             
                         **                *     **     ******                            
                    ****   ******                    ***                                  
                ****     *       *****      **     ***                                    
                *  * ****          * *    **  *****                                       
                ****               *   ****                                               
                                   * ** *                                                 
                                   *     *                                                
                                   *     **                                               
                                   ****** *                                               
                                       *  *                                               
                                        * *                                               
                                        * *                                               
                                        * *                                               
                                        * *                                               
                                        *  *                                              
                                        *  *                                              
                                        *  *                                              
                                        *  *                                              
                                        *  *                                              
                                        *  *                                              
                                        *  *                                              
    '''

def print_rose_stage3():
    return '''
                                       *************  **                                                               
                                 *******             **  ******  **                                                     
                              ***                              **  ********                                             
                          ****                                             *****                                        
                        **                                                      **                                      
                       **               **          **               *   *        ***                                   
                      **               **     *   **  *       **     *   *          *                                   
                     **                *     *  *   ** *        *    *   ***        *                                   
                    **                 *   **  *  **    *    **  *** *   *  **  *   *                                   
                   **                  *   *  *  **     **    *    ** *       * *   **                                  
                 ***                   *  *  *  **  *      ** *       *      *  * **  **                                
                 *                     *  * *  *    * *      * ***   *****    * * *    *****                            
                 *                     * *    *   *** * ***       ****   **   **  *         ***                         
                 *                     * * * *   * *  *    **         *  *     **             **                        
                 *                     * ** *      *     **         * *  *      *              **                       
                 *       **      * *   *    ***  **        *        **   **     *               *                       
                  *       *       * ***        **  *                    **     **               *                       
                  *      * ***         **                            ****     **               **                       
                   *      *  **    **    ***                              ** *                **                        
                   **      *  **     ****                                 * *                **                         
                    ***    *   **        ***                              *                **                           
                      **   *    **                                                     ****                             
                        ** *     **            ******              ***             ****                                 
                          *  *    **                 **************   ***       ***                                     
                            **     **                              ****        **                                       
                             *      **                          ****           *                                        
                             **      **                       ***        **   **                                        
                              **      ***                    *        ***    **  ***                                    
                               **       **                 **        **      *** * *                                    
                                **       **               **       ***         * ***                                    
                                  ***                            **        ****                                         
                               **   ****  *                    ***      ***                                             
                         *****    **    *****                         ***                                               
                     ****      * *           *****        ******* * **                                                  
                     *  * ****                   *      **       * *                                                    
                     ****                     ***      **                                                               
                                              *  *******                                                                
                                              * ** *  *                                                                 
                                              *    * *  *                                                               
                                              **       **                                                               
                                               **    ** *                                                               
                                                ******  *                                                               
                                                     *  *                                                               
                                                     *  *                                                               
                                                     *   *                                                              
                                                     *   *                                                              
                                                      *  *                                                              
                                                      *  *                                                              
                                                      *  *                                                              
                                                      *  *                                                              
                                                      *  *                                                              
                                                      *  *                                                              
                                                      *  *                                                              
                                                      *  *                                                              
                                                      *  *                                                              
                                                      *  *                                                              
                                                      *  *                                                              
                                                      *  *                                                              
    '''

def print_rose_stage4():
    return '''
                                                                                                                                                   
                                                     *          **                                                                          
                                          *********** **********  *****                                                                     
                                     *****                             ************                                                         
                                 ****                                              *******                                                  
                              ***                                                         ***                                               
                            **                                                               ***                                            
                           **                                **                                 **                                          
                          **                               **                                    **                                         
                         **                          *** **              **     *    ** *         *                                         
                        **                    *     **  *   **        **   **   *      * **       *                                         
                       **                     *    *   *  **   ***     ***  **** *        *       *                                         
                      **                      *   *  **  **       *      *     * *         *      ***                                       
                    ***                      *    * **  *       **       *  ***  **       **        ***                                     
                    *                        **  * **  *       * *       * **  * * ****   *           ******                                
                   *                          *    *  *  * * * * *********   *  *     *   ***               **                              
                   *                          * * *  *    * *  **        *** ***   *  *     **               **                             
                    *                         * *** *   ** *   *  *   ***         *   *      **               ***                           
                    *                        *     *      *     *  **         *  *    *       *                 *                           
                     *        **       ****  *     ********                    ***   *        *                 *                           
                     *         **         ****             *                     *  **       **                 *                           
                     *           *            *                                 *****      ***                 **                           
                      *        * ***           ****                            *          **                  **                            
                      **       *   **     *****                                       ****                   **                             
                       **      *    **         ****                                                        ***                              
                        ***    *     **                                              ****               ***                                 
                          **    * *   **                                          **  *              ***                                    
                            ***   *    **                 ****                 ***               ****                                       
                               ** *     **                    *****************   ***         ***                                           
                                 *       **                                    ****          **                                             
                                  *       **                                ****             *                                              
                                  *        **                            ****          *    **                                              
                                  **        **                                      ****  ***                                               
                                   **        **                                   ***     *   ***                                           
                                    **        **                                **        *** * *                                           
                                     ***       **                             ***           * ***                                           
                                       ****                                 ***         *****                                               
                                     **    ***                            ***        ***                                                    
                                   **         *****                      **        ***                                                      
                             **** *    ****        ***                           ***                                                        
                         *****    ** ***              ****          ********* ***                                                           
                         * * ******                    * *       ***         *                                                              
                         ***                           **       **                                                                          
                                                       *  *******                                                                           
                                                      ** *     * *                                                                          
                                                      *       **  *                                                                         
                                                      *  *   *   *                                                                          
                                                      ** *     * *                                                                          
                                                       **   ***  *                                                                          
                                                        ****  *   *                                                                         
                                                              *   *                                                                         
                                                              *   *                                                                         
                                                              *   *                                                                         
                                                              *   *                                                                         
                                                              *   *                                                                         
                                                               *  *                                                                         
                                                               *  *                                                                         
                                                               *   *                                                                        
                                                               *   *                                                                        
                                                               *   *                                                                        
                                                               *   *                                                                        
                                                               *   *                                                                        
                                                               *   *                                                                        
                                                               *   *                                                                        
                                                               *   *                                                                        
                                                               *   *                                                                        
                                                               *   *                                                                        
                                                               *   *                                                                        
                                                                *  *                                                                        
    '''



def print_centered(text):
    # 获取终端大小
    terminal_width = os.get_terminal_size().columns
    terminal_height = os.get_terminal_size().lines
    
    # 分割文本为行
    lines = text.split('\n')
    
    # 计算垂直居中的起始位置
    vertical_padding = (terminal_height - len(lines)) // 2
    
    # 打印垂直空行
    print('\n' * vertical_padding)
    
    # 打印每一行,水平居中
    for line in lines:
        print(line.center(terminal_width))

def animate_rose():
    stages = [
        print_rose_stage1(),
        print_rose_stage2(),
        print_rose_stage3(),
        print_rose_stage4(),

    ]
    
    for stage in stages:
        clear_screen()
        print_centered(Fore.RED+ stage + Fore.RESET)
        time.sleep(0.8)

def main():
    try:
        # 设置全屏
        set_fullscreen()
        # 隐藏光标
        os.system('powershell -command "$Host.UI.RawUI.CursorSize = 0"')
        
        # 播放玫瑰花绽放动画
        animate_rose()
        
        # 最终状态
        clear_screen()
        print_centered(Fore.RED + print_rose_stage4() + Fore.RESET)
        #print_centered(Fore.WHITE + "\n按任意键退出..." + Fore.RESET)
        os.system('pause >nul')
        
    except Exception as e:
        print(f"发生错误: {e}")
        os.system('pause')

if __name__ == "__main__":
    main()


stages 内包含多个玫瑰不同成长阶段的图案。通过在每一帧清屏、居中打印,并设置适当延迟来实现。

1.2 使用方法

注意需要提前在windows上安装好python环境,如果不知道可以评论区留言,我教你怎么装python环境。

1.2.1 复制代码保存为rose.py文档
1.2.2 安装必要的包
pip install colorama pyinstaller
1.2.3使用以下命令生成exe文件:
pyinstaller --onefile rose.py

在最后会生成的一个 rose.exe文档, 在dist 文件夹中找到,可以在所有的window电脑上执行了,如有问题,记得在评论区@我!!!如果想要我已经生成好的文档,也可以评论区直接@我!

1.3 最后的效果

请添加图片描述
这里面提供的玫瑰图案实在是太丑了,没来得及弄精美的图案,如果大家有玫瑰图案的便捷制作思路,欢迎大家评论区交流!!!


2. 扩展功能:展示额外的祝福文字

如果你希望在玫瑰旁或者动画结束时,添加祝福语、表白文字等内容,可以通过简单修改满足细腻的表达需求。

2.1 动画结束后显示祝福语

修改方法

动画结束后,加入祝福语的显示逻辑。改造后的代码如下:

def animate_rose():
    stages = [
        print_rose_stage1(),
        print_rose_stage2(),
        print_rose_stage3(),
        print_rose_stage4()
    ]

    for stage in stages:
        clear_screen()
        print_centered(Fore.RED + stage + Fore.RESET)
        time.sleep(0.8)

    # 玫瑰绽放完成后,展示祝福语
    clear_screen()
    print_centered(Fore.GREEN + "玫瑰赠与你,愿未来无比绚烂!🌹" + Fore.RESET)
    print_centered(Fore.CYAN + "爱你的每一天,都是晴天!☀️" + Fore.RESET)
  1. 动画结束后清屏,避免画面杂乱。
  2. 使用不同的颜色(如绿色、青色)区分文字与玫瑰,让内容更具层次感。

你也可以换成自己的文字:

print_centered(Fore.MAGENTA + "与你相遇,便是我今生最美的风景。" + Fore.RESET)

2.2 动态动画中加入祝福文字

如果希望文字在动画进行时出现,可以将文字嵌套到某个阶段的展示逻辑中。例如,当玫瑰到达第3阶段时展示自定义文字:

def animate_rose():
    stages = [
        print_rose_stage1(),
        print_rose_stage2(),
        print_rose_stage3(),
        print_rose_stage4()
    ]

    for index, stage in enumerate(stages):
        clear_screen()
        print_centered(Fore.RED + stage + Fore.RESET)
        if index == 2:  # 第三帧时打印表白文字
            print_centered(Fore.YELLOW + "\n初见你时,仿佛玫瑰正绽放..." + Fore.RESET)
        time.sleep(0.8)
  1. 动态表白时:让对方随着画面呈现感受到心意渐深。
  2. 阶段式祝福:分步骤打印,如在最终阶段补上一句“谢谢你的倾听”。

2.3 打印静态祝福语

如果你希望只显示一段简单的静态祝福语,而没有动态动画的效果,只需借助 print_centered() 直接输出文字即可。

修改方法

在主函数 main() 中使用:

def main():
    try:
        set_fullscreen()
        clear_screen()

        # 居中显示静态祝福语
        print_centered(Fore.CYAN + "在程序和人生中,愿始终与你并肩,拥抱未来!✨" + Fore.RESET)
        print_centered(Fore.MAGENTA + "\n这世上动人的事情千千万,但我只心动于你💖" + Fore.RESET)

        os.system('pause >nul')  # 停止等待用户按键
    except Exception as e:
        print(f"发生错误: {e}")
        os.system('pause')

通过这种方式,你可以快速输出节日问候、婚礼贺词等内容。


2.4 逐行或滚动播放文字

想制作一段逐行滚动播放的祝福语效果,可以借助循环模拟。如下所示:

新增代码
def animate_text():
    messages = [
        "愿你拥有鲜花般灿烂的每一天 🌹",
        "愿我们一起走过所有春夏秋冬 🍁",
        "玫瑰虽易谢,但情常盛 ❤️"
    ]

    for message in messages:
        clear_screen()
        print_centered(Fore.YELLOW + message + Fore.RESET)
        time.sleep(1.5)  # 每段话停留1.5秒
使用方法

main() 中调用:

animate_text()

2.5 用户输入动态内容

如果你希望让用户输入一段话,例如表白内容或祝福,最终在屏幕中借助代码呈现,可以这样实现:

新增代码
def input_custom_message():
    clear_screen()
    message = input("请输入你想展示的祝福语:")
    clear_screen()
    print_centered(Fore.GREEN + message + Fore.RESET)
    os.system('pause >nul')
操作流程
  1. 提示用户输入自定义内容。
  2. 使用 print_centered() 居中显示输入的文字。

3. 给你更多启发

除了显示文字和动态玫瑰,你还可以尝试以下技巧:

  1. 加入动态字体效果:例如逐字打印文字,像打字机特效一样逐步呈现内容。
  2. 画其他图案:除了玫瑰,还可以尝试用ASCII绘制星星、心形等图案,增加多样性。
  3. 生成动态提示:例如在屏幕闪烁“Happy Birthday!”或“我爱你”。

如果你还有更多创意,比如:

  • 如何加入更多层次的动画?
  • 是否可以用代码生成整段情景故事?

欢迎在评论区留言,让我们一起碰撞灵感,为日常的惊喜和浪漫注入Python的魔力!💻🌹
如果想要我已经生成好的rose.exe,也可以评论区直接@我!

表白要有创意,代码的温柔从不会迟到!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值