AI大乱斗——用python写一个烟花秀

文章讲述了作者通过请求AI大模型如文心一言、通义千问、智谱清言和天工编写Python代码生成烟花秀的过程,展示了不同AI的回答和效果,同时也探讨了AI在编程领域的应用和学习Python的重要性。
摘要由CSDN通过智能技术生成

故事从一个B站视频开始。

我看到有人上传了一段烟花秀的视频,并注明是由python程序生成,如果需要源代码,需要关注和三连,然后私信他。

我禁不住好奇,打算找他要到源代码学习一番。

于是按照up主的要求操作,并私信了他。

很快我收到一个网址,打开一看是个论坛发帖。

如果要看帖子的内容需要注册账号并回复帖子。

我耐着性子操作完毕,然后看到因为级别不够,需要充值购买金币,才能下载附件中的源码包。

鲁迅说过,我走过很多路,都不如你的套路。

忽然想起,AI大模型也可以写代码,看不懂还可以生成注释。

我何不让国产AI们各写一段烟花秀的代码,然后评比一番呢?

故事的结局非常耐人寻味。

我打算让文心一言、通义千问、智谱清言和天工这4个AI大模型,都回答这个问题——麻烦用python写一个烟花秀。

然后在我的电脑上运行一番。

以下是他们给出的答案。

文心一言

创建一个烟花秀涉及到图形界面的渲染,Python中常用的库有turtle和pygame。这里我将为你提供一个使用turtle库的基础烟花秀示例。请注意,这只是一个简单的示例,如果你想要一个更复杂、更逼真的烟花效果,你可能需要使用更高级的图形库,如pygame,并结合物理和数学的知识来模拟烟花的轨迹和爆炸效果。

首先,确保你已经安装了Python,并且你的环境中包含turtle库。

下面是一个简单的烟花秀示例代码:


python
import turtle
import random
# 设置屏幕
screen = turtle.Screen()
screen.bgcolor("black") # 设置背景颜色为黑色
# 创建烟花发射器
firework_launcher = turtle.Turtle()
firework_launcher.hideturtle() # 隐藏发射器
firework_launcher.speed(0) # 设置速度为最快
firework_launcher.penup() # 提起笔,移动不留痕迹
firework_launcher.goto(0, -200) # 将发射器放在屏幕底部中央
firework_launcher.color("white") # 设置烟花颜色为白色
# 定义烟花爆炸函数
def explode(x, y):
    firework = turtle.Turtle()
    firework.hideturtle()
    firework.speed(0)
    firework.penup()
    firework.goto(x, y)
    firework.color(random.choice(["red", "orange", "yellow", "green", "blue", "purple"])) # 随机选择烟花颜色
    firework.pendown() # 放下笔,移动留痕迹
    firework.begin_fill() # 开始填充颜色
    for _ in range(36): # 画一个圆形作为烟花爆炸效果
        firework.forward(10)
        firework.right(10)
    firework.end_fill() # 结束填充颜色
# 定义发射烟花函数
def launch_firework():
    angle = random.randint(0, 360) # 随机选择发射角度
    power = random.randint(5, 15) # 随机选择发射力量(决定烟花的高度)
    x = power * random.uniform(-1, 1) # 计算烟花的初始x坐标,使烟花在发射时有一些水平偏移
    y = -power # 烟花的初始y坐标(发射器在y=-200)
    firework_launcher.setheading(angle) # 设置发射器的朝向
    firework_launcher.forward(power) # 移动发射器,模拟烟花的发射轨迹
    explode(firework_launcher.xcor(), firework_launcher.ycor()) # 在烟花的落点处爆炸
    firework_launcher.home() # 将发射器移回原位,准备下一次发射
# 主循环,不断发射烟花
while True:
    launch_firework()
    screen.update() # 更新屏幕显示
    screen.ontimer(lambda: None, 50) # 每50毫秒发射一次烟花,调整这个值可以改变烟花的发射频率

这个代码创建了一个简单的烟花秀,每次烟花从屏幕底部的中央位置随机角度发射,并在达到一定高度后爆炸。每个烟花的颜色也是随机的。你可以根据需要调整代码中的参数和逻辑来创建更复杂的烟花效果。

这个烟花秀需要想象力,我发现程序不停地在上方画圆,而且是各种颜色的。

我给文心一言打5分。

通义千问

在Python中,我们可以使用matplotlib库来创建一个动态的烟花动画。虽然matplotlib主要被用于数据可视化,但其强大的绘图功能也可以用来模拟烟花效果。以下是一个简单的示例代码:


python
import numpy as np
import matplotlib.pyplot as plt
from matplotlib.animation import FuncAnimation
import random
# 窗口大小和烟花数量
fig, ax = plt.subplots(figsize=(8, 8))
num_fireworks = 10
# 初始化烟花位置、颜色和速度
fireworks = []
for _ in range(num_fireworks):
    x = random.uniform(-2, 2)
    y = random.uniform(-2, 2)
    vx = random.uniform(-1, 1)
    vy = random.uniform(3, 6)
    color = (random.random(), random.random(), random.random())
    fireworks.append((x, y, vx, vy, color))
def update(frame):
    # 清除上一帧的图像
    ax.clear()
    for i, firework in enumerate(fireworks):
        x, y, vx, vy, color = firework
        # 更新烟花位置
        x += vx
        y -= vy
        vy -= 0.5
        # 当烟花上升到一定高度或下降到地面时,重置其位置和速度
        if y < -2 or y > 2:
            fireworks[i] = (
                random.uniform(-2, 2),
                random.uniform(-2, 2),
                random.uniform(-1, 1),
                random.uniform(3, 6),
                color,
            )
        # 绘制烟花轨迹
        ax.plot([x, x], [y, 0], c=color, alpha=0.7)
        # 绘制烟花爆炸效果(以圆点表示)
        ax.scatter(x, y, s=np.abs(vy) * 40, c=color, alpha=0.9, edgecolors="none")
    ax.set_xlim(-3, 3)
    ax.set_ylim(-3, 3)
    ax.axis("off")
ani = FuncAnimation(fig, update, frames=range(100), interval=50)
plt.show()

这段代码创建了一个包含多个随机初始位置、速度和颜色的烟花数组。每帧动画中,我们更新每个烟花的位置,并根据其垂直速度绘制轨迹和爆炸效果。当烟花到达地面或飞出画面时,我们将其重置为新的随机初始状态。最后,使用FuncAnimation创建并显示动画。

请注意,这只是一个非常基础的模拟,实际的烟花效果可能更为复杂,包括更丰富的颜色变化、形状、粒子效果等。要实现更逼真的烟花秀,可能需要借助更专业的图形库(如Pygame、Panda3D等)或使用专门的物理引擎进行模拟。

这是在白天放烟花吗,我感觉是震天雷,可惜听不到声音。

我给通义千问打4分。

智谱清言

好的,我将使用Python来创建一个简单的烟花秀模拟。这个模拟将使用matplotlib库来生成烟花在空中爆炸的视觉效果。请稍等片刻。

代码生成:已完成


python
import matplotlib.pyplot as plt
import numpy as np
# 设置matplotlib的动画功能
from matplotlib.animation import FuncAnimation
# 初始化图形
plt.style.use('dark_background')
fig, ax = plt.subplots()
ax.set_xlim(-5, 5)
ax.set_ylim(0, 10)
points, = ax.plot([], [], marker='o', color='w', ls='')
# 烟花的初始参数
n_particles = 50
t_max = 2
dt = 0.05
# 生成烟花的轨迹
def generate_firework(start, end):
    t = np.linspace(0, t_max, int(t_max/dt))
    x = start + (end - start) * t
    y = -0.5 * 9.81 * t**2
    return x, y
# 初始化烟花的轨迹
x_data, y_data = generate_firework(-1, 1)
# 更新函数
def update(frame):
    x_data, y_data = generate_firework(-1, 1)
    points.set_data(x_data[:frame], y_data[:frame])
    return points,
# 创建动画
ani = FuncAnimation(fig, update, frames=int(t_max/dt), blit=True)
plt.show()

这是一个简单的烟花秀模拟。在这个模拟中,烟花从底部发射并上升到空中,然后爆炸。这个效果是通过matplotlib动画功能实现的。如果您想要更复杂或更逼真的烟花效果,可以使用更高级的图形库或专门的烟花模拟软件。希望您喜欢这个简单的烟花秀!

这个烟花很抽象,只能看到地上有一坨东西。

很失望啊,我给智谱清言打1分。

天工

要使用Python创建一个简单的烟花秀效果,我们可以利用`turtle`图形库来实现。以下是一个示例代码,它将绘制一系列随机颜色和位置的烟花:


python
import turtle
import random
# 设置屏幕
screen = turtle.Screen()
screen.bgcolor("black")
screen.title("烟花秀")
# 创建烟花的函数
def create_firework(x, y):
    firework = turtle.Turtle()
    firework.color(random.choice(["red", "orange", "yellow", "green", "blue", "purple", "white"]))
    firework.goto(x, y)
    firework.setheading(random.randint(0, 360))
    firework.speed(0)
    
    # 绘制烟花爆炸效果
    for _ in range(36):
        firework.forward(random.randint(50, 100))
        firework.right(170)
    
    # 隐藏烟花的起点
    firework.hideturtle()
# 创建多个烟花
for _ in range(20):
    create_firework(random.randint(-200, 200), 150)
# 结束绘图
turtle.done()

这段代码首先导入`turtle`和`random`库。然后设置屏幕背景色和窗口标题。`create_firework`函数负责创建单个烟花,它随机选择颜色和位置,并绘制出烟花爆炸的效果。最后,通过循环创建20个烟花,并调用`turtle.done()`结束绘制。

运行这段代码后,你将看到一个黑色背景的窗口,上面随机分布着彩色的烟花。每个烟花由一系列随机长度的线段组成,模拟出烟花爆炸时的效果。

这是我唯一看懂的烟花秀,经过前面几位选手的衬托,我想给天工满分。

咱不能和尿炕的比出息,我给天工打7分。

按照评分排序,天工>文心一言>通义千问>智谱清言。

这个排名,纯主观,纯娱乐,大家就看个乐呵吧。

其实同样的问题,AI每次给出的答案都是不同的。

如果发现效果不尽如人意,也可以让AI按照自己的要求修改。

大家可以自己钻研,如何得出满意的答案。

我忽然发现,国产AI大模型比那些割韭菜的培训营销号有用多了。

关于Python学习指南

学好 Python 不论是就业还是做副业赚钱都不错,但要学会 Python 还是要有一个学习规划。最后给大家分享一份全套的 Python 学习资料,给那些想学习 Python 的小伙伴们一点帮助!

包括:Python激活码+安装包、Python web开发,Python爬虫,Python数据分析,人工智能、自动化办公等学习教程。带你从零基础系统性的学好Python!

👉Python所有方向的学习路线👈

Python所有方向路线就是把Python常用的技术点做整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照上面的知识点去找对应的学习资源,保证自己学得较为全面。(全套教程文末领取)

在这里插入图片描述

👉Python学习视频600合集👈

观看零基础学习视频,看视频学习是最快捷也是最有效果的方式,跟着视频中老师的思路,从基础到深入,还是很容易入门的。

在这里插入图片描述

温馨提示:篇幅有限,已打包文件夹,获取方式在:文末

👉Python70个实战练手案例&源码👈

光学理论是没用的,要学会跟着一起敲,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。

在这里插入图片描述

👉Python大厂面试资料👈

我们学习Python必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有阿里大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。

在这里插入图片描述

在这里插入图片描述

👉Python副业兼职路线&方法👈

学好 Python 不论是就业还是做副业赚钱都不错,但要学会兼职接单还是要有一个学习规划。

在这里插入图片描述

👉 这份完整版的Python全套学习资料已经上传,朋友们如果需要可以扫描下方CSDN官方认证二维码或者点击链接免费领取保证100%免费

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值