如何将文本转换为数组中的ascii art

时间:2015-02-25 07:48:33

标签: parsing converter ascii-art

我想知道是否存在一个基本上会改变我的文本的工具,让我们说" 42"进入"地图"我可以使用我编码的一个小程序显示的文件。此文件中数字的位置定义了我投射到屏幕上的点的Z坐标,它们的X和Y显然是我的数组的2维。

以下是我想要获得的地图示例:

0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0
0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0
0  0 10 10  0  0 10 10  0  0  0 10 10 10 10 10  0  0  0
0  0 10 10  0  0 10 10  0  0  0  0  0  0  0 10 10  0  0
0  0 10 10  0  0 10 10  0  0  0  0  0  0  0 10 10  0  0
0  0 10 10 10 10 10 10  0  0  0  0 10 10 10 10  0  0  0
0  0  0 10 10 10 10 10  0  0  0 10 10  0  0  0  0  0  0
0  0  0  0  0  0 10 10  0  0  0 10 10  0  0  0  0  0  0
0  0  0  0  0  0 10 10  0  0  0 10 10 10 10 10 10  0  0
0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0
0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0

哪个输出

fdf42

那么有谁知道如何将任何字符串转换为这种文件? 如果不存在这样的工具,是否有一种获得角色形状的常用方法可以帮助我生成这些地图?

感谢您阅读我,期待阅读您的答案:)

1 个答案:

答案 0 :(得分:1)

粗略的解决方案:

  1. 创建图像对象。
  2. 使用字体库在其上书写文字。由于分辨率非常低,使用位图字体可以改善结果。
  3. 遍历图像像素并输出文本文件。
  4. 更详细的解决方案需要指定编程语言。

    编辑:我掀起了这个:http://phpfiddle.org/lite/code/zr3k-hwbw

    <?php
        $str = isset($_GET['str']) ? $_GET['str'] : "+1";
        $font = isset($_GET['font']) ? $_GET['font'] : 1;
        $w = imagefontwidth($font) * strlen($str);
        $h = imagefontheight($font);
        $img = imagecreate($w, $h);
        $bg = imagecolorallocate($img, 0, 0, 0);
        $tc = imagecolorallocate($img, 255, 0, 0);
        imagestring($img, $font, 0, 0, $str, $tc);
    
        header("Content-Type: text/plain");
        for ($y = 0; $y < $h; $y++) {
            for ($x = 0; $x < $w; $x++) {
                echo (imagecolorat($img, $x, $y) * 10)."\t";
            }
            echo "\n";
        }
    ?>
    

    输出:

    0   0   0   0   0   0   0   0   0   0   
    0   0   10  0   0   0   0   10  0   0   
    0   0   10  0   0   0   10  10  0   0   
    10  10  10  10  10  0   0   10  0   0   
    0   0   10  0   0   0   0   10  0   0   
    0   0   10  0   0   0   0   10  0   0   
    0   0   0   0   0   0   10  10  10  0   
    0   0   0   0   0   0   0   0   0   0