JS打印图形

/**
 * @describe of 打印图片
 * @author 孤雪飘寒 <38197125@qq.com>
 * @copyright (c) 2016
 * @datetime 2016-8-8  0:58:01
 */
var printStr = "";
/**
 * 文字说明
 * @method Name
 * @param  {[String]} name [文字说明]
 * @param  {[String]} c    [长度]
 * @param  {[String]} k    [宽度]
 */
function Name(name, c, k) {
    n(1);
    console.log(name + "长度:" + c + "," + "宽度:" + k + ".");
}
/**
 * 换行:美观
 * @method n
 * @param  {[type]} i [1:打印换行 0:字符串加入换行符号]
 */
function n(i) {
    if (i) {
        console.log('\n');
    } else {
        printStr += "\n";

    }
}
/**
 * 选择传入字符,以及一行显示多少
 * @method printChar
 * @param  {[type]}  char [description]
 * @param  {[type]}  n    [description]
 */
function printChar(char, n) {
    for (var i = 0; i < n; i++) {
        printStr += char;
    }
}
/**
 * 矩形
 * @method rectangle
 * @param  {[type]}  name    [名字]
 * @param  {[type]}  c       [长度]
 * @param  {[type]}  k       [宽度]
 * @param  {[type]}  boolean [是否显示空心]
 */
function rectangle(name, c, k, boolean) {
    Name("打印图形:" + name + ":", c, k);
    if (boolean) {
        if (k < 3) {
            printStr = "宽度低于3不可以显示空心";
        } else {
            for (var i = 1; i <= k; i++) {
                if (i == 1 || i == k) {
                    printChar(' *', c);
                } else {
                    printChar(' *', 1);
                    printChar('  ', c - 2);
                    printChar(' *', 1);
                }
                n();
            }
        }
    } else {
        for (var i = 0; i < k; i++) {
            printChar(' *', c);
            n();
        }
    };
    console.log(printStr);
    printStr = "";

}
/**
 * 正方形
 * @method quadrate
 * @param  {[type]} name    [名字]
 * @param  {[type]} a       [边长]
 * @param  {[type]} boolean [是否显示空心]
 */
function quadrate(name, a, boolean) {
    rectangle(name, a, a, boolean);
}
/**
 * 等腰三角形
 * @method triangle
 * @param  {[type]} w       [宽度]
 * @param  {[type]} boolean [是否显示空心]
 */
function triangle(w, boolean) {
    var h = w;
    if (boolean) {
        if (w <= 4) {
            printStr = "空心等腰三角形边长小于4看不出来效果";
        } else {
            Name("打印图形: 空心等腰三角形" + ":", w, w);
            for (var i = 0; i < w; i++) {
                if (i < 2 || i == (w - 1)) {
                    // console.log(i + ":" + w);
                    printChar(" ", h - 1);
                    printChar(" *", i + 1);
                } else {
                    printChar(" ", h - 1);
                    printChar(" *", 1);
                    printChar(" ", i * 2 - 2);
                    printChar(" *", 1);
                }
                n();
                h--;
            }
        }
    } else {
        Name("打印图形: 实心等腰三角形" + ":", w, w);
        for (var i = 0; i < w; i++) {
            printChar(" ", h - 1);
            printChar(" *", i + 1);
            n();
            h--;
        }
    }
    console.log(printStr);
    printStr = "";
}

/**
 * 等腰梯形
 * @method trapezium
 * @param  {[type]}  w       [宽度]
 * @param  {[type]}  boolean [是否显示空心]
 */
function trapezium(w, boolean) {
    var h = w;
    if (boolean) {
        if (w < 5) {
            printStr = "空心等腰梯形长度小于4效果不好看";
        } else {
            Name("打印图形: 空心等腰梯形" + ":", w, w);
            for (var i = 0; i < w; i++) {
                if (i > (w / 2) - 1) {
                    if (i < (w / 2) || i == (w / 2) || i == (w - 1)) {
                        printChar(" ", h - 1);
                        printChar(" *", i + 1);
                    } else {
                        printChar(" ", h - 1);
                        printChar(" *", 1);
                        printChar(" ", i * 2 - 2);
                        printChar(" *", 1);
                    }
                    n();
                }
                h--;
            }
        }
    } else {
        if (w < 5) {
            printStr = "为了更好的效果,请输入大于4的长度";
        } else {
            Name("打印图形: 实心等腰梯形" + ":", w, w);
            for (var i = 0; i < w; i++) {
                if (i > (w / 2) - 1) {
                    printChar(" ", h - 1);
                    printChar(" *", i + 1);
                    n();
                }
                h--;
            }
        }
    }

    console.log(printStr);
    printStr = "";

}




rectangle("矩形", 10, 5);
quadrate("正方形", 5);
triangle(5);
trapezium(5);
rectangle("矩形", 10, 5, true);
quadrate("正方形", 5, true);
triangle(5, true);
trapezium(15, true);

这里写图片描述

这里写图片描述

这里写图片描述 这里写图片描述

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值