效果
img
实现思路
将每一个字符设计为1个单位
循环一个区域 x ∈ [-30, 30) y ∈ [-15, 10)
根据心形公式 (x² y² - 1)³ - x³y³
当输入的 (x² y² - 1)³ - x³y³ < 0 说明在心形函数内,那么此时应输出内容
当(x² y² - 1)³ - x³y³ >= 0 则输出空格
Caveat
- js 实现 sleep 函数
const sleep = (ms) => new Promise((resolve) => {setTimeout(() => {resolve()}, ms)});
- js for循环中无法执行异步代码,也就是说
for (let y = -15; y < 10; y ) {
for (let x = -30; x < 30; x ) {
sleep(1000);
}
}
这样的代码无法实现,sleep会在 for执行完成后在执行
为了解决这个问题,我通过递归函数来实现了循环,从而实现了字符一个一个打出来的打字机的效果
具体细节请看
项目地址: https://github.com/bilibiliou/one-line-js-code-draw-a-heart
如果觉得还行,还希望老板们 star 一波
Thanks
用 python 画爱心代码讲解