国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

李峋同款愛心代碼

這篇具有很好參考價值的文章主要介紹了李峋同款愛心代碼。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

背景

最近大火的電視劇《點燃我溫暖你》出現(xiàn),令我的家庭地位進一步下降,因為男主“李峋”已經(jīng)變成了她的大老公,而我就被打入冷宮. 為了滿足她的“攀比心”,我連夜給她實現(xiàn)了粉紅色愛心的跳動,讓她看到滿滿的愛意.

本文特意將兩種代碼都進行分享, 為了能夠讓大家體會到兩種代碼實現(xiàn)的效果, 特意放出下面的效果圖來幫助大家對比

  • 效果1

愛心代碼需要安裝的包,# 說點啥呢,默認(rèn)歸檔,python

愛心代碼需要安裝的包,# 說點啥呢,默認(rèn)歸檔,python

  • 效果2
    愛心代碼需要安裝的包,# 說點啥呢,默認(rèn)歸檔,python

愛心代碼需要安裝的包,# 說點啥呢,默認(rèn)歸檔,python

代碼

import random
from math import sin, cos, pi, log
from tkinter import *

CANVAS_WIDTH = 840  # 畫布的寬
CANVAS_HEIGHT = 680  # 畫布的高
CANVAS_CENTER_X = CANVAS_WIDTH / 2  # 畫布中心的X軸坐標(biāo)
CANVAS_CENTER_Y = CANVAS_HEIGHT / 2  # 畫布中心的Y軸坐標(biāo)
IMAGE_ENLARGE = 11  # 放大比例

HEART_COLOR = "RED"  # 引號內(nèi)修改顏色!


def heart_function(t, shrink_ratio: float = IMAGE_ENLARGE):
    """
    “愛心函數(shù)生成器”
    :param shrink_ratio: 放大比例
    :param t: 參數(shù)
    :return: 坐標(biāo)
    """
    # 基礎(chǔ)函數(shù)
    x = 17 * (sin(t) ** 3)
    y = -(16 * cos(t) - 5 * cos(2 * t) - 2 * cos(3 * t) - cos(3 * t))

    # 放大
    # x *= shrink_ratio
    # y *= shrink_ratio
    x *= IMAGE_ENLARGE
    y *= IMAGE_ENLARGE
    # 移到畫布中央
    x += CANVAS_CENTER_X
    y += CANVAS_CENTER_Y

    return int(x), int(y)


def scatter_inside(x, y, beta=0.15):
    """
    隨機內(nèi)部擴散
    :param x: 原x
    :param y: 原y
    :param beta: 強度
    :return: 新坐標(biāo)
    """
    ratio_x = - beta * log(random.random())
    ratio_y = - beta * log(random.random())

    dx = ratio_x * (x - CANVAS_CENTER_X)
    dy = ratio_y * (y - CANVAS_CENTER_Y)

    return x - dx, y - dy


def shrink(x, y, ratio):
    """
    抖動
    :param x: 原x
    :param y: 原y
    :param ratio: 比例
    :return: 新坐標(biāo)
    """
    force = -1 / (((x - CANVAS_CENTER_X) ** 2 + (y - CANVAS_CENTER_Y) ** 2) ** 0.6)  # 這個參數(shù)...
    dx = ratio * force * (x - CANVAS_CENTER_X)
    dy = ratio * force * (y - CANVAS_CENTER_Y)
    return x - dx, y - dy


def curve(p):
    """
    自定義曲線函數(shù),調(diào)整跳動周期
    :param p: 參數(shù)
    :return: 正弦
    """
    # 可以嘗試換其他的動態(tài)函數(shù),達到更有力量的效果(貝塞爾?)
    return 2 * (2 * sin(4 * p)) / (2 * pi)


class Heart:
    """
    愛心類
    """

    def __init__(self, generate_frame=20):
        self._points = set()  # 原始愛心坐標(biāo)集合
        self._edge_diffusion_points = set()  # 邊緣擴散效果點坐標(biāo)集合
        self._center_diffusion_points = set()  # 中心擴散效果點坐標(biāo)集合
        self.all_points = {}  # 每幀動態(tài)點坐標(biāo)
        self.build(2000)
        self.random_halo = 1000
        self.generate_frame = generate_frame
        for frame in range(generate_frame):
            self.calc(frame)

    def build(self, number):
        # 愛心
        for _ in range(number):
            t = random.uniform(0, 2 * pi)  # 隨機不到的地方造成愛心有缺口
            x, y = heart_function(t)
            self._points.add((x, y))

        # 愛心內(nèi)擴散
        for _x, _y in list(self._points):
            for _ in range(3):
                x, y = scatter_inside(_x, _y, 0.05)
                self._edge_diffusion_points.add((x, y))

        # 愛心內(nèi)再次擴散
        point_list = list(self._points)
        for _ in range(10000):
            x, y = random.choice(point_list)
            x, y = scatter_inside(x, y, 0.27)
            self._center_diffusion_points.add((x, y))

    @staticmethod
    def calc_position(x, y, ratio):
        # 調(diào)整縮放比例
        force = 1 / (((x - CANVAS_CENTER_X) ** 2 + (y - CANVAS_CENTER_Y) ** 2) ** 0.420)  # 魔法參數(shù)

        dx = ratio * force * (x - CANVAS_CENTER_X) + random.randint(-1, 1)
        dy = ratio * force * (y - CANVAS_CENTER_Y) + random.randint(-1, 1)

        return x - dx, y - dy

    def calc(self, generate_frame):
        ratio = 15 * curve(generate_frame / 10 * pi)  # 圓滑的周期的縮放比例

        halo_radius = int(4 + 6 * (1 + curve(generate_frame / 10 * pi)))
        halo_number = int(3000 + 4000 * abs(curve(generate_frame / 10 * pi) ** 2))

        all_points = []

        # 光環(huán)
        heart_halo_point = set()  # 光環(huán)的點坐標(biāo)集合
        for _ in range(halo_number):
            t = random.uniform(0, 2 * pi)  # 隨機不到的地方造成愛心有缺口
            x, y = heart_function(t, shrink_ratio=-15)  # 魔法參數(shù)
            x, y = shrink(x, y, halo_radius)
            if (x, y) not in heart_halo_point:
                # 處理新的點
                heart_halo_point.add((x, y))
                x += random.randint(-60, 60)
                y += random.randint(-60, 60)
                size = random.choice((1, 1, 2))
                all_points.append((x, y, size))
                all_points.append((x + 20, y + 20, size))
                all_points.append((x - 20, y - 20, size))
                all_points.append((x + 20, y - 20, size))
                all_points.append((x - 20, y + 20, size))

        # 輪廓
        for x, y in self._points:
            x, y = self.calc_position(x, y, ratio)
            size = random.randint(1, 3)
            all_points.append((x, y, size))

        # 內(nèi)容
        for x, y in self._edge_diffusion_points:
            x, y = self.calc_position(x, y, ratio)
            size = random.randint(1, 2)
            all_points.append((x, y, size))

        for x, y in self._center_diffusion_points:
            x, y = self.calc_position(x, y, ratio)
            size = random.randint(1, 2)
            all_points.append((x, y, size))

        self.all_points[generate_frame] = all_points

    def render(self, render_canvas, render_frame):
        for x, y, size in self.all_points[render_frame % self.generate_frame]:
            render_canvas.create_rectangle(x, y, x + size, y + size, width=0, fill=HEART_COLOR)


def draw(main: Tk, render_canvas: Canvas, render_heart: Heart, render_frame=0):
    render_canvas.delete('all')
    render_heart.render(render_canvas, render_frame)
    main.after(1, draw, main, render_canvas, render_heart, render_frame + 1)


if __name__ == '__main__':
    root = Tk()
    root.title("晚上星月爭輝,美夢陪你入睡")
    canvas = Canvas(root, bg='black', height=CANVAS_HEIGHT, width=CANVAS_WIDTH)
    canvas.pack()
    heart = Heart()
    draw(root, canvas, heart)
    root.mainloop()

效果2地址(將冒號后地址復(fù)制后放入瀏覽器即可): docs.qq.com/doc/DUWJNYmx0TkVNY0VP

運行

運行代碼(用pycharm打開改代碼然后運行即可)

愛心代碼需要安裝的包,# 說點啥呢,默認(rèn)歸檔,python

注意: 該代碼為Python代碼, 運行時需要安裝 pycharm 或 IDLE 等開發(fā)環(huán)境工具. 下面介紹下pycharm基本安裝和使用方法. 在最后我們還會介紹如何將代碼打包成可以直接運行的exe程序. 無需pycharm即可運行

pycharm

PyCharm 出自 JetBrains 之手. 是一種 Python IDE,帶有一整套可以幫助用戶在使用 Python 語言開發(fā)時提高其效率的工具.
類似 IDEA, 作為 企業(yè)級軟件, 用于快速開發(fā) Python 程序, 之前使用過 IDEA 的非常推薦使用.

PyCharm破姐版下載地址(將冒號后地址復(fù)制后放入瀏覽器即可): docs.qq.com/doc/DUVpEeXh2dEtrQXhU

Pycharm 的優(yōu)點

  • 方便的環(huán)境管理
  • 自動導(dǎo)入包
  • 方便的代碼調(diào)試
  • Git 管理

Pycharm 的缺點

  • 剛開始打開,索引包較慢
  • 內(nèi)存占用太高(3G 左右)

安裝使用步驟

  1. 安裝
    直接運行 PyCharm.exe, 然后一直 next , 然后點擊 install , 最后點擊 Finish

  2. 新建項目
    愛心代碼需要安裝的包,# 說點啥呢,默認(rèn)歸檔,python
    愛心代碼需要安裝的包,# 說點啥呢,默認(rèn)歸檔,python

  3. 開發(fā)和運行項目
    打開項目后,右鍵單擊項目,new -> FIle , 創(chuàng)建 Python 文件 mypy01
    愛心代碼需要安裝的包,# 說點啥呢,默認(rèn)歸檔,python
    點擊 Run-> Run xxx 或者直接 Shift+ F10 運行即可
    愛心代碼需要安裝的包,# 說點啥呢,默認(rèn)歸檔,python

  4. 交互模式和控制臺
    愛心代碼需要安裝的包,# 說點啥呢,默認(rèn)歸檔,python
    控制臺(Terminal )相當(dāng)于直接進入了 Windows 的 shell 界面
    愛心代碼需要安裝的包,# 說點啥呢,默認(rèn)歸檔,python
    交互模式相當(dāng)于進入類似 IDLE 的交互模式:
    愛心代碼需要安裝的包,# 說點啥呢,默認(rèn)歸檔,python

  5. 項目創(chuàng)建后引用的包版本配置
    愛心代碼需要安裝的包,# 說點啥呢,默認(rèn)歸檔,python

打包成exe程序

在將上面代碼運行無誤之后, 我們總不能每次都用pycharm來打開這段代碼吧. 所以我們可以利用pycharm打包代碼的庫 - pyinstaller.用于將代碼打包成可以執(zhí)行的.exe程序

步驟

  1. 安裝pyinstall
    在左上角工具欄找到 File->Setting, 然后按照下圖配置
    愛心代碼需要安裝的包,# 說點啥呢,默認(rèn)歸檔,python

  2. 將代碼打包成.exe程序
    pyinstaller -F -w .\愛心代碼文件名.py
    愛心代碼需要安裝的包,# 說點啥呢,默認(rèn)歸檔,python

  3. 打包成功后, 會在當(dāng)前代碼所在目錄下, 創(chuàng)建 build和dist目錄, 而打包好的程序就在 dis目錄下
    愛心代碼需要安裝的包,# 說點啥呢,默認(rèn)歸檔,python

  4. 找到改代碼所在目錄, 雙擊運行即可
    愛心代碼需要安裝的包,# 說點啥呢,默認(rèn)歸檔,python

  5. 運行效果如圖
    愛心代碼需要安裝的包,# 說點啥呢,默認(rèn)歸檔,python文章來源地址http://www.zghlxwxcb.cn/news/detail-807938.html

到了這里,關(guān)于李峋同款愛心代碼的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • 《點燃我,溫暖你》理工男神李峋同款C語言版本愛心

    《點燃我,溫暖你》理工男神李峋同款C語言版本愛心

    近期很火的《 點燃我,溫暖你 》很火,里面的 愛心代碼 也很驚艷,但是程序員看了覺得尬的扣腳, 網(wǎng)上也有他其他的語言愛心源碼,但都不是C語言的,用語言描述一下,就是好多愛心,然后從內(nèi)到外,從小到大的顯示。今天就給大家分享: 愛心代碼, 邊看邊用! 2.實現(xiàn) C語

    2024年02月21日
    瀏覽(18)
  • 跳動的愛心代碼--李峋愛心代碼(完整源碼)

    跳動的愛心代碼--李峋愛心代碼(完整源碼)

    本文章分為兩部分: 第一部分為實現(xiàn)效果展示,第二部分是實現(xiàn)跳動愛心源碼。 關(guān)注微信公眾號: ClassmateJie 關(guān)注微信公眾號【 ClassmateJie 】獲取完整源碼,回復(fù) 愛心代碼 。 1.建一個html文件,代碼如下: 建立一個css文件 運行html文件 關(guān)注微信公眾號「 ClassmateJie 」 更多驚喜

    2024年02月16日
    瀏覽(19)
  • 李峋愛心代碼

    李峋愛心代碼

    溫馨提示:此代碼涉及Tkinter庫,小伙伴們運行前需確保Tkinter庫函數(shù)有安裝 windows下安裝python tkinter,如果使用pip install tkinter或conda install tkinter都出錯: ERROR: Could not find a version that satisfies the requirement tkinter (from versions: none) ERROR: No matching distribution found for tkinter 可嘗試方法:

    2024年02月11日
    瀏覽(17)
  • 【李峋】一分鐘就能學(xué)會的愛心代碼
  • HTML愛心代碼 | 一起體驗理工男的極致浪漫(電視劇男主同款)

    HTML愛心代碼 | 一起體驗理工男的極致浪漫(電視劇男主同款)

    大家好,我是陳橘又青,今天中午刷微博,看到最近《點燃我溫暖你》中男主角——理工男李峋的愛心代碼撩到了無數(shù)人,于是把代碼開源分享給大家。 遇見你溫暖你 李峋愛心代碼 因為代碼比較簡單,就不做過多講解了,大家需要自取即可, 拿到代碼不知道怎么運行 或 想

    2024年01月20日
    瀏覽(32)
  • 如何確認(rèn)linux的包管理器是yum還是apt,確認(rèn)之后安裝其他程序的時候就需要注意安裝命令

    如何確認(rèn)linux的包管理器是yum還是apt,確認(rèn)之后安裝其他程序的時候就需要注意安裝命令

    打開終端 輸入apt,下圖中提示未找到命令,則基本上包管理工具就是用yum的 ?輸入yum,我們看到有打印信息,則說明包管理工具是yum的,離線安裝命令使用rpm

    2024年02月09日
    瀏覽(33)
  • HBuilderx發(fā)布蘋果的包需要注意什么

    在HBuilderX中發(fā)布蘋果的包,需要注意以下幾點: 開發(fā)者賬號注冊:在發(fā)布應(yīng)用到App Store之前,需要先注冊一個蘋果開發(fā)者賬號。注冊過程較為繁瑣,需要提供個人信息并支付年費。應(yīng)用標(biāo)識和證書:在發(fā)布iOS應(yīng)用之前,需要在蘋果開發(fā)者中心創(chuàng)建應(yīng)用標(biāo)識和應(yīng)用證書。應(yīng)用標(biāo)

    2024年01月20日
    瀏覽(22)
  • 如何在PyCharm添加清華鏡像源加速下載需要的包?

    如何在PyCharm添加清華鏡像源加速下載需要的包?

    1.首先點擊下方的Python Packages,再點擊上面的設(shè)置圖標(biāo)(Manage repositories) 2.第二步是點擊下圖的+號 3.第三步是填入名稱(可隨便填)和地址(一定要正確)(這里以清華源為例,個人也推薦,附上URL: https://pypi.tuna.tsinghua.edu.cn/simple),點擊ok后完成設(shè)置 4.這里以安裝pandas包為例,看到下圖

    2024年02月08日
    瀏覽(26)
  • 【python】import時,python是如何找到我們需要的包的?

    【python】import時,python是如何找到我們需要的包的?

    參考:https://docs.python.org/3/tutorial/modules.html#the-module-search-path 當(dāng)執(zhí)行 import spam 時,編譯器首先從內(nèi)嵌模塊(buil-in module)中尋找 spam 庫,如果內(nèi)嵌模塊不含有 spam ,編譯器將依據(jù) sys.path 所給的一系列文件夾路徑尋找名為 spam.py 的文件。 其中: sys.path 由以下內(nèi)容初始化: 輸入

    2023年04月08日
    瀏覽(22)
  • html愛心特效代碼——愛心代碼

    html愛心特效代碼——愛心代碼

    今天閑來無事,教大家一個哄妹子的小case。我們需要創(chuàng)建一個心形圖案,按照心形圖案的位置和長度,對所創(chuàng)建的字符串進行截斷并在所需的位置上輸出,最終能呈現(xiàn)在屏幕上滿滿的愛心。廢話不多說,直接上源碼看效果 ~

    2024年02月09日
    瀏覽(30)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包