只用五个字符,就能完成一幅像素画的绘制了。
这是一种新的绘图语言,一共支持8种颜色,画幅可达256*256。
它包含了“CFR[]”这五个符号,因此名字也就叫CFR[]了,主打的就是一个直观。
而且CFR[]免费开源,无需部署安装,在线就能体验。
![](https://www.chatgptb.com/jiaocheng/wp-content/uploads/2023/10/cf114301709bcf3933fb2b143cc684af.png)
虽然只有5个符号,但是它能绘制出的图像可并不简单,比如作者展示的这个DEMO:
![](https://www.chatgptb.com/jiaocheng/wp-content/uploads/2023/10/6ed2747f47ddd6b0560542487c925684.png)
CFR[]推出之后,在Reddit和The Hacker News上都引发了热烈讨论,网友们也纷纷晒出了自己的作品:
![](https://www.chatgptb.com/jiaocheng/wp-content/uploads/2023/10/9f3580c21d6a65bcae60d05f333d1490.png)
![](https://www.chatgptb.com/jiaocheng/wp-content/uploads/2023/10/d647760c4061644ee93633a598d3c1ec.png)
网友看了这些展示以后,不由得评价说真的是泰裤辣~
![](https://www.chatgptb.com/jiaocheng/wp-content/uploads/2023/10/46d7de8492d87c377876fafc5ec60e3b.png)
那么,这五个符号各自代表了什么含义,又该如何使用呢?
五个字符就能绘图
前面已经说到,这种绘图语言包含了“C”“F”“R”“[”和“]”这五个字符。
直观的不只是名字,这几个符号本身也是直观的英文首字母,它们的含义和用法是这样的:
C代表color,用来切换颜色,支持的颜色一共有八种,依次为黑、蓝、绿、蓝绿(Cyan)、红、品红(Magenta)、黄和白。
![](https://www.chatgptb.com/jiaocheng/wp-content/uploads/2023/10/0fe5640764810adeb27101a89cc8d072.jpg)
△最左边发灰的是白色
如果不输入C指令则默认为白色(画布为黑色),其他颜色则输入相应数量的C。
![](https://www.chatgptb.com/jiaocheng/wp-content/uploads/2023/10/686e0f0de82e9ebb28558390b115ed44.gif)
F则代表Forward,每输入一个F指令都会向前前进(绘制)出一个点(初始方向向上)。
![](https://www.chatgptb.com/jiaocheng/wp-content/uploads/2023/10/fe77fde1d43f0037295f19d3ffb7847f.gif)
R则是Rotate的首字母,也就是旋转,每一个R指令会使前进方向顺时针旋转45度。
![](https://www.chatgptb.com/jiaocheng/wp-content/uploads/2023/10/8f9102224e51f42330a68c27de536166.gif)
有了上面这三个命令,就已经可以拿来画一些简单的图了。
不过这个工具一次性最多输入256个字符,所以只靠这些基本指令还没办法画得太复杂。
没关系,我们还有两个符号——“[”和“]”。
这两个符号是成对使用的,用来表示循环结构。
假如我们要画一条长度为32的线,直接输入32个F显然太麻烦了。
利用循环结构,我们就可以把它化简成[[[FFFF]]]。
![](https://www.chatgptb.com/jiaocheng/wp-content/uploads/2023/10/e8d27ead906609b1f348fd3f7e868806.jpg)
在这样一个洋葱结构中,红色部分的FFFF会因为绿色括号的存在被执行两次。
同理,蓝色括号是把整个绿色括号执行两次,黑色则是执行两次蓝色,最终就画出了长度为2×[2×(2×4)]=32的线。
为了更好地理解循环的执行方式,我们来对比看看这两个命令:
![](https://www.chatgptb.com/jiaocheng/wp-content/uploads/2023/10/6b88e12c9ef635f7e931865019a78ecb.jpg)
先说结论,它们绘制出的效果分别是这样的:
![](https://www.chatgptb.com/jiaocheng/wp-content/uploads/2023/10/99979913686b164dd47e17b5746f445b.jpg)
还是同样的道理,绿色括号中的内容,即第一个指令中CF(这部分的一串F将用一个字母代替)首先重复一次形成最内部的循环体(CFCF),然后再经两次循环得到[(CFCF)(CFCF)]和{[(CFCF)(CFCF)]},其间颜色一共发生了8次变化。
而第二组命令中,F首先被绿色括号变成(FF),这样蓝色括号中的内容就是C(FF),重复后得到[C(FF)C(FF)],最终被黑色括号变成{[C(FF)C(FF)][C(FF)C(FF)]},一共涉及四次颜色变化,且每一个色条的长度都是第一种命令的两倍。