Linux Shell编程绘制国际象棋棋盘

2019-09-23 08:51:53于海丽

将几种颜色作为选择菜单,通过select实现选择并赋给变量COL1 COL2

完整的效果如下:

以下是完整的代码,请遵循GPL:

#!/bin/bash
 
#==================================================================
# Copyright (C) 2018Westos All rights reserved.
#  
#  FileName:chess.sh
#  Author: 知行至之
#  Mail: 291556677@qq.com
#  Date:2018-05-07
#  Description: 知行至之的国际象棋棋盘
#  Blog: http://blog.51cto.com/4081735 
#  Lisense: GPL 
#
#=================================================================
read -p "Please input cell's height: " HI
echo
read -p "Please input cell's width: " WI
echo
[[ "$HI" =~ ^[0-9]+$ ]] && [[ "$WI" =~ ^[0-9]+$ ]] || { echo "Invalid argu,Please input Numeric"; exit; }
echo "====================="
PS3="Please choose the Player1's Board Color(1-7): "
select COL1 in red green yellow blue purple skyblue white;do
    case $COL1 in
    red)
        echo Player's color is $COL1
        let COL1=1
        break
        ;;
    green)
        echo Player's color is $COL1
        let COL1=2
        break
        ;;
    yellow)
        echo Player's color is $COL1
        let COL1=3
        break
        ;;
    blue)
        echo Player's color is $COL1
        let COL1=4
        break
        ;;
    purple)
        echo Player's color is $COL1
                let COL1=5
        break
        ;;
    skyblue)
        echo Player's color is $COL1
        let COL1=6
        break
        ;;
    white)
        echo Player's color is $COL1
        let COL1=7
        break
        ;;
    esac
done
 
echo
echo "====================="
echo
 
PS3="Please choose the Player2's Board Color(1-7): "
select COL2 in red green yellow blue purple skyblue white;do
    case $COL2 in
    red)
        echo Player2's color is $COL2
        let COL2=1
        break
        ;;
    green)
        echo Player2's color is $COL2
        let COL2=2
        break
        ;;
    yellow)
        echo Player2's color is $COL2
        let COL2=3
        break
        ;;
    blue)
        echo Player2's color is $COL2
        let COL2=4
        break
        ;;
    purple)
        echo Player2's color is $COL2
        let COL2=5
        break
        ;;
    skyblue)
        echo Player2's color is $COL2
        let COL2=6
        break
        ;;
    white)
        echo Player2's color is $COL2
        let COL2=7
        break
        ;;
    esac
done
 
echo
echo "====================="
echo
 
for i in {1..8};do
 if [ $[i%2] -eq 1 ];then
    for j in `seq $HI`;do
        for k in {1..8};do
            if [ $[k%2] -eq 1 ];then
                echo -e "33[1;4$[$COL1]m`printf "%$[$WI]s"`33[0mc"
            else
                echo -e "33[1;4$[$COL2]m`printf "%$[$WI]s"`33[0mc"
            fi
            let k++
        done
        echo
        let j++
    done
 else
    for j in `seq $HI`;do
        for k in {1..8};do
            if [ $[k%2] -eq 1 ];then
                echo -e "33[1;4$[$COL2]m`printf "%$[$WI]s"`33[0mc"
            else
                echo -e "33[1;4$[$COL1]m`printf "%$[$WI]s"`33[0mc"
            fi
            let k++
        done
        echo
        let j++
    done
 fi
let i++
done