为「IT女神勋章」而战

news2025/1/31 11:14:19

大家好,我是空空star,今天为「IT女神勋章」而战


文章目录

  • 前言
  • 一、IT女神勋章
  • 二、绘制爱心
    • 1.html+css+js
      • 来源:一行代码
      • 代码
      • 效果
    • 2.python
      • 来源:C知道
      • 代码
      • 效果
    • 3.go
      • 来源:复制代码片
      • 代码
      • 效果
    • 4.java
      • 来源:download
      • 代码
      • 效果
    • 5.people
      • 来源
      • 代码
      • 效果
  • 祝愿


前言

你用勤劳敲打创意的键盘,你用智慧编辑巧妙的方案,你用坚持创造神奇的页面,你用勇气开发网络的资源,你就是多才可爱的程序媛。
在这个特殊的日子里,我停止了刷题,写下这篇文章,为「IT女神勋章」而战。


一、IT女神勋章

本篇就通过不同的语言来为女神绘制❤️。

二、绘制爱心

1.html+css+js

来源:一行代码

一行代码

代码

<!DOCTYPE html>
<html>
  <head>
    <title></title>
  </head>
  <style>
    * {
      padding: 0;
      margin: 0;
    }
    html,
    body {
      height: 100%;
      padding: 0;
      margin: 0;
      background: white;
    }
    canvas {
      position: absolute;
      width: 100%;
      height: 100%;
    }
    .aa {
      position: fixed;
      left: 50%;
      bottom: 10px;
      color: #ccc;
    }
  </style>
  <body>
    <canvas id="pinkboard"></canvas>

    <script>
      /*
       * Settings
       */
      var settings = {
        particles: {
          length: 500, // maximum amount of particles
          duration: 2, // particle duration in sec
          velocity: 100, // particle velocity in pixels/sec
          effect: -0.75, // play with this for a nice effect
          size: 30 // particle size in pixels
        }
      };

      /*
       * RequestAnimationFrame polyfill by Erik M?ller
       */
      (function () {
        var b = 0;
        var c = ["ms", "moz", "webkit", "o"];
        for (var a = 0; a < c.length && !window.requestAnimationFrame; ++a) {
          window.requestAnimationFrame = window[c[a] + "RequestAnimationFrame"];
          window.cancelAnimationFrame =
            window[c[a] + "CancelAnimationFrame"] ||
            window[c[a] + "CancelRequestAnimationFrame"];
        }
        if (!window.requestAnimationFrame) {
          window.requestAnimationFrame = function (h, e) {
            var d = new Date().getTime();
            var f = Math.max(0, 16 - (d - b));
            var g = window.setTimeout(function () {
              h(d + f);
            }, f);
            b = d + f;
            return g;
          };
        }
        if (!window.cancelAnimationFrame) {
          window.cancelAnimationFrame = function (d) {
            clearTimeout(d);
          };
        }
      })();

      /*
       * Point class
       */
      var Point = (function () {
        function Point(x, y) {
          this.x = typeof x !== "undefined" ? x : 0;
          this.y = typeof y !== "undefined" ? y : 0;
        }
        Point.prototype.clone = function () {
          return new Point(this.x, this.y);
        };
        Point.prototype.length = function (length) {
          if (typeof length == "undefined")
            return Math.sqrt(this.x * this.x + this.y * this.y);
          this.normalize();
          this.x *= length;
          this.y *= length;
          return this;
        };
        Point.prototype.normalize = function () {
          var length = this.length();
          this.x /= length;
          this.y /= length;
          return this;
        };
        return Point;
      })();

      /*
       * Particle class
       */
      var Particle = (function () {
        function Particle() {
          this.position = new Point();
          this.velocity = new Point();
          this.acceleration = new Point();
          this.age = 0;
        }
        Particle.prototype.initialize = function (x, y, dx, dy) {
          this.position.x = x;
          this.position.y = y;
          this.velocity.x = dx;
          this.velocity.y = dy;
          this.acceleration.x = dx * settings.particles.effect;
          this.acceleration.y = dy * settings.particles.effect;
          this.age = 0;
        };
        Particle.prototype.update = function (deltaTime) {
          this.position.x += this.velocity.x * deltaTime;
          this.position.y += this.velocity.y * deltaTime;
          this.velocity.x += this.acceleration.x * deltaTime;
          this.velocity.y += this.acceleration.y * deltaTime;
          this.age += deltaTime;
        };
        Particle.prototype.draw = function (context, image) {
          function ease(t) {
            return --t * t * t + 1;
          }
          var size = image.width * ease(this.age / settings.particles.duration);
          context.globalAlpha = 1 - this.age / settings.particles.duration;
          context.drawImage(
            image,
            this.position.x - size / 2,
            this.position.y - size / 2,
            size,
            size
          );
        };
        return Particle;
      })();

      /*
       * ParticlePool class
       */
      var ParticlePool = (function () {
        var particles,
          firstActive = 0,
          firstFree = 0,
          duration = settings.particles.duration;

        function ParticlePool(length) {
          // create and populate particle pool
          particles = new Array(length);
          for (var i = 0; i < particles.length; i++)
            particles[i] = new Particle();
        }
        ParticlePool.prototype.add = function (x, y, dx, dy) {
          particles[firstFree].initialize(x, y, dx, dy);

          // handle circular queue
          firstFree++;
          if (firstFree == particles.length) firstFree = 0;
          if (firstActive == firstFree) firstActive++;
          if (firstActive == particles.length) firstActive = 0;
        };
        ParticlePool.prototype.update = function (deltaTime) {
          var i;

          // update active particles
          if (firstActive < firstFree) {
            for (i = firstActive; i < firstFree; i++)
              particles[i].update(deltaTime);
          }
          if (firstFree < firstActive) {
            for (i = firstActive; i < particles.length; i++)
              particles[i].update(deltaTime);
            for (i = 0; i < firstFree; i++) particles[i].update(deltaTime);
          }

          // remove inactive particles
          while (
            particles[firstActive].age >= duration &&
            firstActive != firstFree
          ) {
            firstActive++;
            if (firstActive == particles.length) firstActive = 0;
          }
        };
        ParticlePool.prototype.draw = function (context, image) {
          // draw active particles
          if (firstActive < firstFree) {
            for (i = firstActive; i < firstFree; i++)
              particles[i].draw(context, image);
          }
          if (firstFree < firstActive) {
            for (i = firstActive; i < particles.length; i++)
              particles[i].draw(context, image);
            for (i = 0; i < firstFree; i++) particles[i].draw(context, image);
          }
        };
        return ParticlePool;
      })();

      /*
       * Putting it all together
       */
      (function (canvas) {
        var context = canvas.getContext("2d"),
          particles = new ParticlePool(settings.particles.length),
          particleRate =
            settings.particles.length / settings.particles.duration, // particles/sec
          time;

        // get point on heart with -PI <= t <= PI
        function pointOnHeart(t) {
          return new Point(
            160 * Math.pow(Math.sin(t), 3),
            130 * Math.cos(t) -
              50 * Math.cos(2 * t) -
              20 * Math.cos(3 * t) -
              10 * Math.cos(4 * t) +
              25
          );
        }

        // creating the particle image using a dummy canvas
        var image = (function () {
          var canvas = document.createElement("canvas"),
            context = canvas.getContext("2d");
          canvas.width = settings.particles.size;
          canvas.height = settings.particles.size;
          // helper function to create the path
          function to(t) {
            var point = pointOnHeart(t);
            point.x =
              settings.particles.size / 2 +
              (point.x * settings.particles.size) / 350;
            point.y =
              settings.particles.size / 2 -
              (point.y * settings.particles.size) / 350;
            return point;
          }
          // create the path
          context.beginPath();
          var t = -Math.PI;
          var point = to(t);
          context.moveTo(point.x, point.y);
          while (t < Math.PI) {
            t += 0.01; // baby steps!
            point = to(t);
            context.lineTo(point.x, point.y);
          }
          context.closePath();
          // create the fill
          context.fillStyle = "#ea80b0";
          context.fill();
          // create the image
          var image = new Image();
          image.src = canvas.toDataURL();
          return image;
        })();

        // render that thing!
        function render() {
          // next animation frame
          requestAnimationFrame(render);

          // update time
          var newTime = new Date().getTime() / 1000,
            deltaTime = newTime - (time || newTime);
          time = newTime;

          // clear canvas
          context.clearRect(0, 0, canvas.width, canvas.height);

          // create new particles
          var amount = particleRate * deltaTime;
          for (var i = 0; i < amount; i++) {
            var pos = pointOnHeart(Math.PI - 2 * Math.PI * Math.random());
            var dir = pos.clone().length(settings.particles.velocity);
            particles.add(
              canvas.width / 2 + pos.x,
              canvas.height / 2 - pos.y,
              dir.x,
              -dir.y
            );
          }

          // update and draw particles
          particles.update(deltaTime);
          particles.draw(context, image);
        }

        // handle (re-)sizing of the canvas
        function onResize() {
          canvas.width = canvas.clientWidth;
          canvas.height = canvas.clientHeight;
        }
        window.onresize = onResize;

        // delay rendering bootstrap
        setTimeout(function () {
          onResize();
          render();
        }, 10);
      })(document.getElementById("pinkboard"));
    </script>
  </body>
</html>

效果

2.python

来源:C知道

C知道:帮我使用python画一个爱心

代码

对回答的代码进行简单调整如下:

import turtle
# 设置画布大小和背景颜色
turtle.setup(width=700, height=700)
turtle.bgcolor("white")
# 定义画爱心的函数
def draw_heart():
    turtle.color('Pink')  # 设置画笔颜色
    turtle.begin_fill()  # 开始填充
    turtle.left(45)  # 向左旋转45度
    turtle.forward(200)  # 向前走200步
    turtle.circle(100, 180)  # 画半圆
    turtle.right(90)  # 向右旋转90度
    turtle.circle(100, 180)  # 画半圆
    turtle.forward(200)  # 向前走200步
    turtle.end_fill()  # 结束填充
# 调用画爱心的函数
draw_heart()
# 隐藏画笔
turtle.hideturtle()
# 显示画布
turtle.done()

效果

3.go

来源:复制代码片

博客代码块

代码

package main

import (
	"image"
	"image/color"
	"image/gif"
	"math"
	"os"
)

// 申明画板的颜色组
var palette = []color.Color{color.White, color.Black, color.RGBA{0xff, 0x00, 0x00, 0xff}}

func main() {
	const (
		nframes = 50  // GIF的帧数
		delay   = 10  // 每帧间的时间间隔
		size    = 400 // 图片大小
	)

	a := 0.0
	anim := gif.GIF{LoopCount: nframes} // GIF文件对象

	for i := 0; i < nframes; i++ {
		rect := image.Rect(0, 0, size+1, size+1)
		img := image.NewPaletted(rect, palette) // 新建一个画板,指定宽度、高度和调色板只要色彩

		for x := -2.0; x < 2.0; x += 0.0001 {
			f1 := math.Pow(math.Abs(x), 2.0/3)
			f2 := math.E / 4 * math.Sqrt(math.Pi-math.Pow(x, 2.0)) * math.Sin(math.Pi*a*x)
			if math.IsNaN(f2) {
				f2 = 0
			}
			y := -(f1 + f2)
			img.SetColorIndex(int(x*size/4)+200, int(y*size/4)+250, 2)
		}
		a++

		anim.Delay = append(anim.Delay, delay)
		anim.Image = append(anim.Image, img)
	}

	var filename = "test.gif"
	if len(os.Args) > 1 {
		filename = os.Args[1] + ".gif"
	}
	file, _ := os.Create(filename)
	defer file.Close()

	gif.EncodeAll(file, &anim)
}

效果

4.java

来源:download

下载资源

代码

package java_src;
import javax.swing.*;
import java.awt.*;

public class LoveHeart extends JFrame {
    private static final long serialVersionUID = -1284128891908775645L;

    // 定义加载窗口大小

    public static final int GAME_WIDTH = 500;

    public static final int GAME_HEIGHT = 500;
    // 获取屏幕窗口大小
    public static final int WIDTH = Toolkit.getDefaultToolkit().getScreenSize().width;

    public static final int HEIGHT = Toolkit.getDefaultToolkit().getScreenSize().height;

    public LoveHeart() {

        // 设置窗口标题
        this.setTitle("心形曲线");
        // 设置窗口初始位置
        this.setLocation((WIDTH - GAME_WIDTH) / 2, (HEIGHT - GAME_HEIGHT) / 2);
        // 设置窗口大小
        this.setSize(GAME_WIDTH, GAME_HEIGHT);
        // 设置背景色
        this.setBackground(Color.BLACK);
        // 设置窗口关闭方式
        this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        // 设置窗口显示
        this.setVisible(true);
    }
    @Override
    public void paint(Graphics g) {
        double x, y, r;
        Image OffScreen = createImage(GAME_WIDTH, GAME_HEIGHT);
        Graphics drawOffScreen = OffScreen.getGraphics();
        for (int i = 0; i < 90; i++) {
            for (int j = 0; j < 90; j++) {
                r = Math.PI / 45 * i * (1 - Math.sin(Math.PI / 45 * j)) * 18;
                x = r * Math.cos(Math.PI / 45 * j) * Math.sin(Math.PI / 45 * i) + GAME_WIDTH / 2;
                y = -r * Math.sin(Math.PI / 45 * j) + GAME_HEIGHT / 4;
                //设置画笔颜色
                drawOffScreen.setColor(Color.red);
                // 绘制椭圆
                drawOffScreen.fillOval((int) x, (int) y, 2, 2);
            }
            // 生成图片
            g.drawImage(OffScreen, 0, 0, this);
        }
    }

    public static void main(String[] args) {
        LoveHeart demo = new LoveHeart();
        demo.setVisible(true);
    }
}

效果

5.people

来源

本次活动页

代码

control+command+a
command+v

效果


祝愿

祝你女神节快乐,愿你永远美丽动人、自信勇敢;愿你的每一天都充满阳光和温馨,幸福永远伴随着你。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/396530.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

游戏算法-游戏AI状态机,python实现

AI概述 游戏AI是对游戏内所有非玩家控制角色的行为进行研究和设计&#xff0c;使得游戏内的单位能够感知周围环境&#xff0c;并做出相应的动作表现的技术。游戏AI作为游戏玩法的一大补充&#xff0c;在各种游戏中都有广泛的应用&#xff0c;比如可以和玩家交互聊天的NPC&#…

用户体验设计—影响定制化设计的因素

0 前言最近在上信息构建这门课&#xff08;名为信息构建&#xff0c;但感觉叫用户体验设计更好。。。&#xff09;老师是研究信息行为、人智交互这块的&#xff0c;所以实验课要求我们先学习一个实际的设计案例&#xff0c;让我们搞懂影响定制化设计的因素。所以这篇文章讲讲我…

七色电子标签

机种名 电子会议桌牌 型号 ESL_7color_7.3_D 外观尺寸 176.2x137.15x80mm 产品重量 268g 可视区域 163.297.92mm 外观颜色 银色 供电方式 锂电池供电2300mAh&#xff08;Type-C 接口可充电&#xff09; 显示技术 E-INK电子纸&#xff0c;双屏 像素 800x480 像…

ByteTrack: Multi-Object Tracking by Associating Every Detection Box 论文详细解读

ByteTrack: Multi-Object Tracking by Associating Every Detection Box 论文详细解读 文章目录ByteTrack: Multi-Object Tracking by Associating Every Detection Box 论文详细解读ByteTrackByteTrack算法简介ByteTrack算法流程ByteTrack算法描述一&#xff1a;对检测框进行分…

SOA架构的理解

1. SOA概述 SOA&#xff08;Service-Oriented Architecture&#xff0c;面向服务的架构&#xff09;是一种在计算机环境中设计、开发、部署和管理离散模型的方法。SOA不是一种新鲜事物&#xff0c;它是在企业内部IT系统重复构建以及效率低下的背景下提出的。在SOA模型中&#x…

Nexus 3 清理docker镜像

该文章提供了一种清理nexus3中存储的docker镜像的一种新思路 查看docker repo 比如你的docker repo名字叫做test-repo&#xff0c;然后在nexus3首页的seatch下面找到docker&#xff0c;点进去随便查看一个已经上传的镜像 记住上面的Name选项&#xff0c;之后要用到 设定清理…

centos7 oracle19c安装||新建用户|| ORA-01012: not logged on

总共分三步 1.下载安装包:里面有一份详细的安装教程 链接&#xff1a;https://pan.baidu.com/s/1Of2a72pNLZ-DDIWKrTQfLw?pwd8NAx 提取码&#xff1a;8NAx 2.安装后,执行初始化:时间较长 /etc/init.d/oracledb_ORCLCDB-19c configure 3.配置环境变量,不配置环境变量,sq…

【Linux快速入门】文件目录操作

文章目录概念1. Linux文件系统概述2. Linux文件目录结构3. Linux文件和目录操作3.1 文件操作3.1.1 创建文件3.1.2 复制文件3.1.3 移动文件3.1.4 删除文件3.1.5 查看文件3.1.6 输出指令3.1.7 >和>>指令3.2 目录操作3.2.1 创建目录3.2.2 复制目录3.2.3 移动目录3.2.4 删…

Lesson 8.3 ID3、C4.5 决策树的建模流程 Lesson 8.4 CART 回归树的建模流程与 sklearn 参数详解

文章目录一、ID3 决策树的基本建模流程二、C4.5 决策树的基本建模流程1. 信息值&#xff08;information value&#xff09;2. C4.5 的连续变量处理方法三、CART 回归树的基本建模流程1. 数据准备2. 生成备选规则3. 挑选规则4. 进行多轮迭代5. 回归树的预测过程四、CART 回归树…

关于推荐系统的详细介绍

简介推荐系统是一种信息过滤系统&#xff0c;能够自动预测用户对特定产品或服务的偏好&#xff0c;并向其提供个性化的推荐。它通常基于用户的历史行为、个人喜好、兴趣和偏好等&#xff0c;通过数据挖掘和机器学习算法&#xff0c;在大数据的支持下生成个性化的推荐内容&#…

智云通CRM:与权力者沟通的策略有哪些?

权力者通常具备两个特点&#xff1a;忙和目标导向 1.忙 权力者都很忙&#xff08;不忙也会装出很忙的样子&#xff09;&#xff0c;时间精力有限&#xff0c;销售人员眼里的大项目在权力者看来很有可能只是他诸多工作中的一项。因此&#xff0c;即使有不满者的引荐&#xff0c;…

ChatGPT露馅了,它明明就是人

让人工智能理解句子成分和语义&#xff0c;这看起来是件不可能的事&#xff0c;看过流浪地球的都知道&#xff0c;那里面的人工智能哪怕发展到2057年&#xff0c;也听不懂比喻和反问。 那最近大火的chatGPT能不能听懂冷笑话呢&#xff1f;它不仅能写代码、论文&#xff0c;居然…

Spring学习——拦截器

拦截器概念 拦截器&#xff08;Interceptor )是一种动态拦截方法调用的机制&#xff0c;在SpringMVC中动态拦截控制器方法的执行作用: 在指定的方法调用前后执行预先设定的代码阻止原始方法的执行 拦截器与过滤器区别 归属不同&#xff1a;Filter属于Servlet技术&#xff0…

[oeasy]python0101_尾声_PC_wintel_8080_诸神的黄昏_arm_riscv

尾声 回忆上次内容 回顾了 ibm 使用开放架构 用 pc兼容机 战胜了 dec 小型机apple 个人电脑 触击牺牲打 也破掉了 自己 软硬一体全自主的 金身 借助了 各种 软硬件厂商的 力量 最终完成了 pc架构上 的 大一统 操作系统层面 IBM 计划让 msdos和cp/m 分庭抗礼为什么 最后微软…

NC xml配置文件不能生产java文件

在NC开发过程中&#xff0c;新增、或修改了xml文件&#xff0c;在开发工具eclipse中生成或重新生成Java文件&#xff0c;发现生成不了相对应的Java文件。如下图&#xff0c;选中xml文件后&#xff0c;右键点击SpringXml to Java 这种情况其实一般都是xml配置文件有问题&#…

敏捷项目管理的概念,以及与传统项目管理的区别

较之瀑布等传统项目管理模式&#xff0c;敏捷是“适应性的”&#xff0c;而非“预设性的”。团队采用敏捷项目管理可以提高交付速度、协作效率、以及响应市场变化的能力。在这里向大家详细介绍敏捷项目管理的定义、与传统项目管理的区别&#xff0c;以及一些主流的敏捷项目框架…

下一代ERP系统是什么样的呢?什么是智能化ERP系统?AI能改变ERP系统吗?

下一代ERP系统是什么样的呢&#xff1f;什么是智能化ERP系统&#xff1f;AI能改变ERP系统吗&#xff1f;导读1. 用户体验&#xff1a;2. 作业、分析和智能一体化2.1 ERP之采购管理&#xff1a;2.2 ERP之零售商品管理&#xff1a;2.3 ERP之会计和财务管理3. 系统处理大数据导读 …

嵌入式Linux从入门到精通之第十六节:U-boot分析

简介 u-boot最初是由PPCBoot发展而来的,可以引导多种操作系统、支持多种架构的CPU,它对PowerPC系列处理器的支持最为完善,而操作系统则对Linux系统的支持最好目前已成为Armboot和PPCboot的替代品。 特点: 主要支持操作系统:Linux、NetBSD、 VxWorks、QNX、RTEMS、ARTOS、L…

Vue3分页器(Pagination)

自定义传入&#xff1a; 当前页数&#xff08;current&#xff09;&#xff0c;默认为1每页条数&#xff08;pageSize&#xff09;&#xff0c;默认为10只有一页时是否隐藏分页器&#xff08;hideOnSinglePage&#xff09;&#xff0c;默认为false数据总数&#xff08;total&a…

Java进阶(下篇2)

Java进阶&#xff08;下篇2&#xff09;一、IO流01.File类的使用1.1、File类的实例化1.2、File类的常用方法11.3、File类的常用方法21.4、课后练习02、IO流原理及流的分类2.1、IO流原理2.2、流的分类2.3、IO 流体系03、节点流(或文件流)3.1、FileReader读入数据的基本操作3.2、…