大家好,我是空空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 particlesduration: 2, // particle duration in secvelocity: 100, // particle velocity in pixels/seceffect: -0.75, // play with this for a nice effectsize: 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 poolparticles = 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 queuefirstFree++;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 particlesif (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 particleswhile (particles[firstActive].age >= duration &&firstActive != firstFree) {firstActive++;if (firstActive == particles.length) firstActive = 0;}};ParticlePool.prototype.draw = function (context, image) {// draw active particlesif (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/sectime;// get point on heart with -PI <= t <= PIfunction 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 canvasvar 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 pathfunction 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 pathcontext.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 fillcontext.fillStyle = "#ea80b0";context.fill();// create the imagevar image = new Image();image.src = canvas.toDataURL();return image;})();// render that thing!function render() {// next animation framerequestAnimationFrame(render);// update timevar newTime = new Date().getTime() / 1000,deltaTime = newTime - (time || newTime);time = newTime;// clear canvascontext.clearRect(0, 0, canvas.width, canvas.height);// create new particlesvar 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 particlesparticles.update(deltaTime);particles.draw(context, image);}// handle (re-)sizing of the canvasfunction onResize() {canvas.width = canvas.clientWidth;canvas.height = canvas.clientHeight;}window.onresize = onResize;// delay rendering bootstrapsetTimeout(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 mainimport ("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.0anim := 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);}@Overridepublic 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

效果


祝愿

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

为「IT女神勋章」而战相关推荐

  1. 「IT女神勋章」挑战赛#

    缓存 本地缓存 本地缓存为了保证线程安全问题,一般使用ConcurrentMap的方式保存在内存之中 分布式缓存. 常见的分布式缓存则有Redis,MongoDB等. 一致性:本地缓存由于数据存储于内 ...

  2. 【IT女神勋章挑战赛名单公布】:看看谁获奖啦!

    致敬女性开发者,为那些IT女神而战!「IT女神勋章挑战赛」已落下帷幕,博主们的比拼结果也已新鲜出炉,快来看看此次征文中,有哪些精彩文章不容错过! 活动官网:https://activity.csdn. ...

  3. 交易所步入「后FTX 时代」,WEEX唯客等后发新秀拉开补位战?

    太阳底下没有新鲜事,11月上旬 FTX此轮的骤然崩溃,再次证明了加密行业没有「大而不能倒」的神话,也在一定程度上引爆了加密行业的信任危机与流动性困境. 但把盖子掀开.暴露出里面的风险,未尝不是一件好事 ...

  4. 国产游戏手机的「押宝」之战:众雄起跑,谁来破局?

    5G风口下的云游戏浪潮将会进一步催生游戏手机的市场需求,当大众消费市场被打开,需求多点开花的时候,机会就悄然而至. 作者| 咸鱼鱼 编辑| 吴怼怼 2018年,被称为国产游戏手机的起跑之年. 自黑鲨拉 ...

  5. 「不会开会」是个病,这本书能治吗?

    身边总有不少人抱怨,说工作中最耽误时间的事儿就是开会,而更耽误时间的事儿就是和一群「不会开会」的人在一起开会. 不得不说,如果想把一件事儿做成,开会是必不可少的.小到「家里人商量晚上吃什么」,大到「联 ...

  6. 猪心移植人体背后竟有个川妹子!36岁哈佛女学霸敲除猪致病基因,获赞「基因剪刀手」...

    点击上方"AI遇见机器学习",选择"星标"公众号 重磅干货,第一时间送达 编辑:桃子 时光 好困 [导读]几天前,美国57岁男子成功接受了转基因猪心的移植手术. ...

  7. 哥德尔90年前的「不完备性定理」,奠定了计算机与AI的理论基础

    大神早已远去,而他的光芒仍在人间. 1931 年,奥地利裔美国著名数学家库尔特 · 哥德尔(Kurt Gödel)在一篇论文<Über formal unentscheidbare Sätze ...

  8. 最后一场「屏之争」:汽车大佬与硅谷巨头的贴身肉搏

    作者 | Tim Higgins .William Boston 来源:机器之能编译 摘要:安卓的跨平台生态系统允许用户在手机和车机等不同屏幕上访问他们的数字生活,在去年,它帮助谷歌获得了 820 亿 ...

  9. MindCon | 当「赛博朋克」遇到「AI极客」会发生什么?

    「赛博朋克2077」不论你玩不玩游戏,这几天应该都见到过这个名字.知乎多次推荐的关键词.微博热搜,朋友圈刷屏,甚至b站发现页的整个背景都换成了"赛博朋克".这款游戏究竟有什么魅力, ...

最新文章

  1. java springcloud版b2b2c社交电商spring cloud分布式微服务 (七)高可用的分布式配置中心(Spring Cloud Config)...
  2. java代码读取dbsequence的值_MongoDB自增序列实现 - Java多线程同步 synchronized 用法
  3. SAP SD 销售凭证如何设置字段必填
  4. mysql数据库,创建只读用户
  5. S5PV210的地址映射图
  6. 如何停止在技术债上浪费时间?
  7. System Center VMM请注意不同语言版本的差异
  8. php flock 使用实例
  9. LVS学习系列(1)--入门
  10. /etc/mtab is not writable
  11. Ubuntu下局域网内+花生壳远程调试程序
  12. 【C语言】Linux 文件读写
  13. Revit API之获取复合结构和材质
  14. D - Oil Deposits
  15. 阿里云 Aliplayer高级功能介绍(三):多字幕 1
  16. java 行政区划 三级_Java学习-056-Jsoup爬虫获取中国所有的三级行政区划数据
  17. Chrome浏览器内置截图工具(不需要安装插件)
  18. 读《如何有效阅读一本书:超实用笔记读书法》
  19. Codeforces Problemset
  20. 第五次面试----中软国际有限公司

热门文章

  1. 图数据集Zachary‘s karate club network详细介绍,包括其在NetworkX、PyG上的获取和应用方式
  2. 海南计算机的初中学校有哪些,2018海南初中部排名表
  3. 2021年塔式起重机司机找解析及塔式起重机司机模拟试题
  4. [linux] 循序渐进学运维-mv
  5. (算法练习)蓝桥杯——饮料换购
  6. 什么蓝牙耳机好用?盘点2021年最值得入手的蓝牙耳机
  7. LCP创建bond接口
  8. VScode 调试JavaScript两种方式
  9. 可爱的 __exit__() 方法(配合 with ... as ... 作用,优雅实现 try: ... except ... 的排错“功能”)
  10. Html页面配置多国语言,Nginx 页面多国语言处理