• 控制台下的字符图像界面


     
    // 输出流
    var stream = process.stdout;
     
    // 输出
    var write = function (str) {
      stream.write(str);
    };
     
    // 生成ANSI escape sequences代码:http://en.wikipedia.org/wiki/ANSI_escape_code
    var CSI = exports.CSI = function (str, c) {
      return '\x1b[' + str + c;
    };
     
    // 生成带颜色的文本
    var color = exports.color = function (text, c, bgc) {
      if (isNaN(bgc)) bgc = 0;
      c = Number(c) + 30;
      bgc = Number(bgc) + 40;
      var ret = CSI(c + ';' + bgc, 'm') + text + CSI('37;40', 'm');
      return ret;
    };
     
    // 设置光标位置,位置从1开始
    var setCursor = exports.setCursor = function (row, column) {
      write(CSI(row + ';' + column, 'H'));
    };
     
    // 清屏
    var clear = function (bgcolor) {
      setCursor(1, 1);
      for (var i = 0; i < stream.rows; i++) {
        var line = '';
        for (var j = 0; j < stream.columns; j++) {
          line += ' ';
        }
        write(color(line, 0, 6));
      }
    };
     
    // 画矩形
    var DOUBLE_LINE = '══════════════════════════════════════════════════════════' +
                      '══════════════════════════════════════════';
    var SPACE_LINE = '                                                           ' +
                     '                                         ';
    var drawRect = function (top, left, width, height, bgcolor) {
      setCursor(top, left);
      var w = width / 2 - 2;
      var c = function (str) {
        return color(str, 0, 7);
      };
      write(c('╔') + c(DOUBLE_LINE.substr(0, w)) + c('╗'));
      for (var i = 1; i < height - 1; i++) {
        setCursor(top + i, left)
        write(c('‖') + color(SPACE_LINE.substr(0, w), 0, bgcolor) +
              color(SPACE_LINE.substr(0, w), 0, bgcolor) + c('‖'));
      }
      setCursor(top + height - 1, left);
      write(c('╚') + c(DOUBLE_LINE.substr(0, w)) + c('╝'));
      setCursor(top + 1, left + 2);
    };
     
     
    // -----------------------------------------------------------------------------
    // --------------- 开始 --------------------------------------------------------
     
    // 开始
    clear();
    // 要绘制的窗口宽度和高度
    var w = 68;
    var h = 5;
    var t = (stream.rows - h) / 2;
    var l = (stream.columns - w) / 2;
    drawRect(t, l, w, h, 7);
    var randomColor = function () {
      var r = Math.round(Math.random() * 5);
      return r + 1;
    };
    var updateTime = function () {
      setCursor(t + 2, (stream.columns - 48) / 2);
      write(color(new Date().toLocaleString() + '   ', randomColor(), 7));
    };
    updateTime();
    setInterval(updateTime, 1000);
    
    机器瞎学/数据掩埋/模式混淆/人工智障/深度遗忘/神经掉线/计算机幻觉/专注单身二十五年
  • 相关阅读:
    Hibernate 3入門
    如何调整液晶显示器保护你的视力
    WEB前端开发经验总结实战篇
    【JS】引用类型之Array
    Oracle的DBA管理常用sql
    使用cos组建上传文件
    前台js将json转换成json对象的方法
    关于父页面访问iframe中元素和js的那点事
    数据库中IN和EXISTS的区别
    关于google浏览器有时莫名自动提交表单的问题
  • 原文地址:https://www.cnblogs.com/rubylouvre/p/2888075.html
Copyright © 2020-2023  润新知