貌似七夕快要来了,好多有女友的或者正在追女孩的,肯定又在绞尽脑汁想买什么别出新裁的礼物,如果女生感觉你的礼物花心思了,那肯定是好感度倍增啊。
但对于穷学生,虽然没钱,但可以靠智慧啊,今天小编就说一个当年小编做过的礼物,成本也就一毛钱


因为小编就用了一张A4纸,打印了个表格,嗯,表格是干啥用?其实就是手绘二维码,当然二维码内容你懂得,利用的下面这个手绘二维码app,会分成格子,提示你哪个涂黑。

七夕还有不到一个月,先提前教各位一招
不过,这种套路貌似被用滥了
所以今天说的这个明显是手绘二维码的升级版,成本依然是一毛钱,不仅你要费心思,女孩也要去费心思,这样才好玩嘛。

「数织游戏」

来,我们一步一步来,我们先说说数织这个游戏,然后你就知道大概用意了。数织(nonogram)是日本人的数独游戏。如下是数织的规则,简单易懂。分行和列,行和列都标记了一些数字,比如下图的第一行7 1 2 7,代表第一行有四条独立的线,分别占了7、1、2和7格,而每条线最少要由一个空格分开。传统上,玩家是以黑色填满格子,以“×”号标记一定不需要填充的格子。所以聪明的你肯定就会知道第一列7 1 1 1 7代表什么意思。

七夕还有不到一个月,先提前教各位一招


所以数织就是如下这样玩,给你的图片只有行列数字,格子需要自己根据规则涂黑,所以你也知道了,我们做的就是下面的图,将二维码隐藏其中。让女孩涂黑,扫码即可。

七夕还有不到一个月,先提前教各位一招

「制作隐藏二维码的数织图」

你说怎么做出上图呢?对于笨办法,就是小编开头说的手绘二维码app,如下它会分21*21或者更多的格子,告诉你哪个该涂黑,相应的你就知道该填写哪些数织数字。

可上面做法确实繁琐了,数字自己写,还得整理打印。所以小编用Python编了一个,省心省力,输入二维码文字,一键生成数织图片,直接打印即可。

import numpy as np
import matplotlib.pyplot as plt
from matplotlib.pyplot import savefig
import qrcode
def qr_matrix(data):
    qr = qrcode.QRCode(version=1, box_size=1, border=1)
    qr.add_data(data)
    return np.asarray(qr.get_matrix(), dtype = int)
def _rle(matrix):
    # find run start and ends
    d = np.diff(matrix)
    row, start_pos = np.where(d > 0)
    _, end_pos = np.where(d < 0)
    # find run lengths
    run_lengths = end_pos - start_pos
    # split runs from different rows into separate arrays
    split_on = np.cumsum(np.bincount(row - 1))[:-1]
    return np.split(run_lengths, split_on)
def run_length_encode(matrix):
    rle_row = _rle(matrix)
    rle_col = _rle(matrix.T)
    return rle_row, rle_col
def nonogram_qr(data):
    qr = qr_matrix(data)
    row_rle, col_rle = run_length_encode(qr)
    shape = np.array(qr.shape) - 2
    return shape, row_rle, col_rle
def draw_nonogram(shape, row_rle, col_rle):
    r, c = shape
    f = open('qr.griddler', "w")
    f.write('MK Version 3.0')
    f.write('n')
    f.write('n')
    f.write(str(r)+' '+str(c))
    f.write('n')
    f.write('n')
    q=np.zeros((r,c),dtype=int)
    for qq in q:
        f.write(str(qq)[1:-1].replace("0", "?"))
        f.write('n')
    f.write('n')
    for col in col_rle:
        f.writelines(str(col[::-1])[1:-1])
        f.write('n')
    f.write('n')
    for row in row_rle:
        f.writelines(str(row[::-1])[1:-1])
        f.write('n')
    fig, ax = plt.subplots(figsize=(10, 10))
    plt.axis('off')
    plt.axis('equal')
    # draw the grid for the nonogram:
    for i in range(r + 1):
        ax.plot([0, c], [-i, -i], 'k-')
    for j in range(c + 1):
        ax.plot([j, j], [0, -r], 'k-')
    # draw the numbers onto the grid
    for i, row in enumerate(row_rle):
        for idx, val in enumerate(row[::-1]):
            ax.annotate(xy=(-idx - 0.5, -i - 0.5), s=val, ha='center', va='center')
    for j, col in enumerate(col_rle):
        for idx, val in enumerate(col[::-1]):
            ax.annotate(xy=(j + 0.5, idx + 0.5), s=val, ha='center', va='center')
    # adjust x and y limits
    lim_left = max([len(x) for x in row_rle + col_rle]) + 1
    lim_right = max(r, c) + 1
    ax.set_xlim(-lim_left, lim_right)
    ax.set_ylim(-lim_right, lim_left)
    return ax
name=input('请输入二维码内容(比如我爱你?):')
ax = draw_nonogram(*nonogram_qr(name))
print('制作完成,图片名字叫做:打印吧.jpg')
savefig("打印吧.jpg")
# plt.show()



其中打印吧.jpg就是你要准备的一毛钱礼物,如下所示:

七夕还有不到一个月,先提前教各位一招

如果不会用python,小编打包了exe程序,大家打开,根据提示,即可在同目录下生成图片哈。

七夕还有不到一个月,先提前教各位一招 

而细心的你肯定还看到另一个箭头的文件:qr.griddler,嗯,这个也很有意思,我们接着说。


「数织解密软件

其实吧,小编这个生成的21*21或者以上大小的数织难度还是挺高的,不能让女友做不出来啊,你得在身边提示一下啊,那么这款解密软件派上用场。我们下载解压打开,如下打开我们前文生成的qr.griddler。然后点击如下箭头指示按钮即可解密,如下动图(小概率会发生多个解的现象,不过二维码有容错率,所以扫到的文字是一样的):

七夕还有不到一个月,先提前教各位一招

这同时也是验证的过程,万一出的题无解,不过小编的程序应该没啥问题,应该不会出现这种现象

「小结」


总之,不管怎样,用心就行,人与人之间相处就是得用真心换真心,真心希望各位都能找到属于自己的另一半。

VIP会员免费

已有人支付

郑重声明:

1. 本站所有内容均由互联网收集整理、网友上传,仅供大家参考、学习,不存在任何商业目的与商业用途。

2. 若您需要商业运营或用于其他商业活动,请您购买正版授权并合法使用。

3. 如果你也有好源码或者教程,可以到审核区发布,分享有金币奖励和额外收入!

4. 荟聚资源不提供任何技术支持及安装服务,并且不保证所有资源都完整可用,下单前请确定自己是否有能力安装。

5. 如有链接无法下载、失效或广告,请联系管理员处理!

6. 源码属于可复制的产品,所有购买的源码无任何理由退款!

7. 如遇到加密压缩包,默认解压密码为"www.huiju.in",如遇到无法解压的请联系管理员!

8. 如无法链接失效或侵犯版权,请先联系我们点击这里给我发消息admin@huiju.in


荟聚资源 » 七夕还有不到一个月,先提前教各位一招
赞助VIP 享更多特权,建议使用 QQ 登录
喜欢我嘛?喜欢就按“ctrl+D”收藏我吧!♡