• 摸鱼时,我用几百张字符画做了个动画......


    摸鱼时,我用几百张字符画做了个动画…,话不多说,先来看成果:

    在这里插入图片描述

    完整效果视频已上传至B站:摸鱼时我用Java IO流证明了爱坤!

    事情是这样的… …

    学校马上就要开展第20届程序设计大赛了,半年没有练习算法的我,此刻内心可谓战战兢兢。简单复习了些Java数据结构与算法的知识后,就开始了牛客网的刷题之路,这不,遇到个熟悉的N皇后问题:
    在这里插入图片描述
    记得之前遇到这个问题,我是使用数组对是否在同一斜线有皇后进行标记的,当时的思路是,将棋盘格子的行数和列数序号相减或者相加,并+一个常数,使得到的结果均>0,因此,所得结果的序号就可以利用数组索引(从0开始)唯一标识一个对角线,图示如下:

    在这里插入图片描述
    类似这样,之前已经写过解决方法,就不再赘述了,附上链接:【递归与回溯算法】汉诺塔与八皇后问题详解

    这次遇到N皇后的问题,还是用了个回溯算法,就解决了,牛客上也成功通过了所有的样例:
    在这里插入图片描述
    这时,我就在想,既然10以内的皇后可以很快计算出结果,那15个呢?
    说干就干,qwq可是控制台停不下来啦!!!
    在这里插入图片描述
    这个场景,怎么有那么一丝丝似曾相识?

    对啊!何同学曾经就用一万行的备忘录制作成了一段动画,向何同学致敬!
    【何同学】我用一万行备忘录做了个动画…
    在这里插入图片描述

    一个奇怪的想法产生了… … 虽然我没有那么多精力,将动画的每一帧都打成字符的形式,但是 我可以利用软件和Java的IO流实现类似的效果吖! 果然,懒才是社会的第一生产力!(手动狗头保命)
    在这里插入图片描述

    正片开始!

    Step 1. 首先,你需要准备一段视频!(当然,如果你有精力手动打字符的话,也是阔以滴),但是,CV工程师从不妥协~

    Step 2. 将视频的每一帧图像保存(也可以不是每一帧,帧数越大最后效果越流畅)
    在这里插入图片描述

    Step 3. 将图片批量使用Ascgen 软件转换成字符画,如图所示:

    在这里插入图片描述
    Step 4. 查看生成的字符画,并规律命名(方便Java程序读取文件)
    在这里插入图片描述

    Step 5. 检查字符画内容

    在这里插入图片描述

    Step 6. 编写简单的JavaIO流程序,循环读取字符画文件,打印到控制台。注意调用sleep方法,适当休眠线程。String中的文件路径记得改成自己存储的字符画文件路径!

    import java.io.FileInputStream;
    import java.io.IOException;
    
    public class IKun{
        public static void main(String[] args) throws IOException{
    
            String s1 = "C:\\Users\\26510\\Desktop\\cai\\ASCII-cai (";
            String s3 = ").txt";
            FileInputStream fis = new FileInputStream(s1 + 1 + s3);;
            for(int i = 1 ; i < 590; i++){
                try {
                    Thread.sleep(80);
                    fis = new FileInputStream(s1 + i + s3);
                    int data;
                    while((data = fis.read()) != -1){
                        System.out.print((char)data);
                    }
    
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }finally {
                    fis.close();
                }
    
            }
    
    
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29

    Step 7. 适当设置控制台字体的行间距和字号大小等参数,大功告成。

    又是摸鱼的一天~
    在这里插入图片描述

  • 相关阅读:
    二面被 RocketMQ 虐后,狂刷这套实战到源码手册,再战阿里
    Linux上文本处理三剑客之grep
    Transformers基本组件(二)快速入门Datasets、Evaluate、Trainer
    Arm32进行远程调试
    代码随想录 -- day46 --139.单词拆分
    Pytest UI自动化测试实战实例
    SpringBoot+Redis实现不重复消费的队列
    Web进阶
    MongoDB - 安装
    PCA降维Python demo
  • 原文地址:https://blog.csdn.net/m0_60353039/article/details/127684672