程序员的情人节:如何用代码表白(附代码)

不会说情话?那就用代码写一句“可运行的浪漫”。本文给你 6 个不同难度的表白点子:终端动画、网页爱心、Canvas 烟花、Git 提交记录、二维码彩蛋、自动发送定时消息,并附上可直接改名就能用的示例。

12 分钟阅读
小明

程序员的情人节:如何用代码表白(附代码)

你可能不擅长“油嘴滑舌”,但你会写代码。

那就把“喜欢”写成一个能运行的东西:

  • 能打开
  • 能看到
  • 能留下来

这比一句“我喜欢你”更有记忆点。

下面给你 6 个不同难度的点子,从 5 分钟到 2 小时都有,挑一个就能用。


1) 最简单:一段终端表白(Node.js)

思路:在终端打印逐字出现的文字,最后输出一个小心形。

const sleep = (ms) => new Promise(r => setTimeout(r, ms))

async function type(text, delay = 60) {
  for (const ch of text) {
    process.stdout.write(ch)
    await sleep(delay)
  }
  process.stdout.write('\n')
}

async function main() {
  await type('Hi,我想认真地跟你说一件事。')
  await type('我喜欢你。')
  await sleep(300)
  console.log('  ♥   ♥')
  console.log(' ♥♥♥♥♥')
  console.log('  ♥♥♥')
  console.log('   ♥')
}

main()

把“我喜欢你”改成对方名字 + 你们的梗,会更像“专属”。


2) 网页表白:一个打开就心动的页面

你可以做一个超轻量页面:

  • 标题:你愿意和我一起...
  • 背景:渐变
  • 中间:按钮(YES/NO)
  • NO 按钮会逃跑(经典整活)

示例(HTML + CSS + JS):

<button id="yes">愿意</button>
<button id="no">再想想</button>
<script>
  const no = document.getElementById('no')
  no.addEventListener('mouseenter', () => {
    const x = Math.random() * 300
    const y = Math.random() * 200
    no.style.transform = `translate(${x}px, ${y}px)`
  })
  document.getElementById('yes').addEventListener('click', () => {
    alert('那我们从今天开始,认真在一起。')
  })
</script>

小技巧:把 alert 换成你们的合照/纪念日倒计时。


3) Canvas 爱心:可视化浪漫

思路:用 Canvas 画一个爱心曲线。

const c = document.querySelector('canvas')
const ctx = c.getContext('2d')

function heart(t) {
  const x = 16 * Math.pow(Math.sin(t), 3)
  const y = 13 * Math.cos(t) - 5 * Math.cos(2*t) - 2 * Math.cos(3*t) - Math.cos(4*t)
  return [x, y]
}

ctx.translate(200, 200)
ctx.scale(10, -10)
ctx.beginPath()
for (let t = 0; t < Math.PI * 2; t += 0.01) {
  const [x, y] = heart(t)
  ctx.lineTo(x, y)
}
ctx.fillStyle = '#ff4d6d'
ctx.fill()

这类作品“视觉冲击”很强,适合发给对方:点开就看到。


4) Git 提交记录:把喜欢写进时间线

你可以在 GitHub 贡献图里拼字(比如拼对方名字/一个心形)。

做法:

  • 建一个私有仓库(更安全)
  • 用脚本按日期造提交
  • 每天一个点,拼出图案

注意:别在公司仓库干这事。


5) 二维码彩蛋:扫描之后才看到

思路:二维码里放一个短链接,打开是一句“只有你能看到的话”。

你可以把二维码:

  • 做成卡片
  • 放在奶茶杯套里
  • 贴在礼物盒上

彩蛋感直接拉满。


6) 定时消息:在你们的时间点出现

比如:

  • 你们第一次见面那天的时间
  • 你们的纪念日

写一个定时任务(或者简单一点,用手机自动化)发送一句话。

工程师的浪漫不是炫技,是“把细节做对”。


结尾:最重要的不是代码

代码只是载体。

最重要的是:

  • 你愿意为对方花时间
  • 你把它做成了“只属于你们”的东西

祝你表白成功。

如果你想,我也可以帮你把第 2/3 个方案写成一个完整的可部署页面(带移动端适配)。