python与分形0016 - 【教程】字符矩阵

今天写一个简单点的教程,画一个字符矩阵,成品图如下:

6ccce31d121d7fed012571963717ca3c.png

想要打印这样一个字符矩阵,需要具备如下一些基本知识:

  1. turtle如何画字符?

  2. turtle的画布上如何排版?

如何画字符?

turtle提供了一个函数,write,可以画文本,具体参数可以参考手册:

turtle.write(arg, move=False, align="left", font=("Arial", 8, "normal"))

Write text - the string representation of arg - at the current turtle position according to align (“left”, “center” or “right”) and with the given font. If move is true, the pen is moved to the bottom-right corner of the text. By default, move is False.

字符的Unicode码可以在这个网站上查到:

https://unicode-table.com/

比如,“安”字的unicode码是5B89。

697180d934db484b8a6b610a7b6aac36.png

在python中,可以通过ord函数得到一个字符串的unicode码:

>>> x=u'安'
>>> x
'安'
>>> hex(ord(x))
'0x5b89'

通过write函数写一个“安”字,楷体,300p:

turtle.write(u'安', align="center", font=("simkai", 300, "normal"))
78042ce62f17d296c70ab9f272f3b76b.gif

画布上如何排版?

又得用点数学知识了。

假设我们画COUNT*COUNT的矩阵,每个字符间距为DIST,为了保证矩阵居中绘制,起始位置必须在左上角位置:

STARTX=-DIST*COUNT//2
STARTY=DIST*COUNT//2

当遍历整个COUNT*COUNT时,我们可以通过求商和取余得到行列值,确定每个字符的位置。

这样就可以很简单的推导出源码了:

# coding: utf-8

import turtle
import math
import time

turtle.setup(width=1.0, height=1.0, startx=None, starty=None)
#turtle.tracer(0)
turtle.ht()

turtle.up()
COUNT=19
DIST=30
FONTSIZE=16
STARTX=-DIST*COUNT//2
STARTY=DIST*COUNT//2

time.sleep(6)

turtle.goto(STARTX, STARTY)
for c in range(COUNT*COUNT):
    x = c%COUNT
    y = c//COUNT
    turtle.goto(STARTX+DIST*x, STARTY-DIST*y)
    turtle.write(chr(0x2600+c), align="center", font=("Arial", FONTSIZE, "normal"))
9b33b1466960c8c273465372b62cce15.gif 33571b9fcc12e9a6f27c94d8a6c8f2fc.png c13c778d3682b3d063b34bbfe14775f7.gif
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值