亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 開發 > Linux Shell > 正文

Linux Shell編程繪制國際象棋棋盤

2020-07-27 18:44:59
字體:
來源:轉載
供稿:網友

這兩天在學習一些shell編程的知識,在做到一道國際象棋的題目時,覺得有些意思,就將它寫成博客。

先來看看國際象棋棋盤長啥樣:

仔細想了會棋盤的分布規則,這個問題肯定有很多思路,我自己想到的是規則是

1.將棋盤行數作為一個大循環,循環8次,每次循環根據行號的奇偶來確定格子顏色的次序;
2.在單個行中,循環8次并判斷列的奇偶數來確定打印顏色

以上思路能夠打印出最簡單的棋盤,但是shell中一個空格的顯示形狀并非正方形,而且是空格的高度大于寬度。因此需要在單個棋盤的行的打印循環外在加一層控制打印空格行數的循環,以下圖可能對理解有些幫助:

上圖通過echo打印了3個紅色的空格并非正方形,并且可以看到最后一行的綠色光標并非正方形,它構成了整個棋盤的最小打印單元,那我就需要控制單行中空格個數以及由多少行空格組成一個規則正方行,如下圖

上圖中,熒光部分seq 2控制打印兩行,熒光%4s部分控制每行打印多少個空格,通過/n/c來控制一次循環后換行的問題。

綜上,怎個棋盤就分成當行打印由兩個循環來控制寬度和高度,由一個判斷語句根據循環次數的奇偶來控制打印顏色;在此基礎上再加上一個控制打印整個棋盤8行的大循環,并且使用一個判斷語句來根據循環次數的奇偶數來控制每行的顏色和上下行的顏色錯開。打印結果如下:

在以上基礎上,實現用戶可自定義的棋盤格子的長寬,以及自定義的顏色。
基本原理是在:

echo -e "/033[1;4$[$COL1]m`printf "%$[$WI]s"`/033[0m/c"

其中變量COL1是棋盤的第一種顏色,變量WI是棋盤單個格子的寬度。高度則帶入給變量賦值后當作循環的次數。注意這里的寬度/高度最小單元是一個光標的寬度和高度。

高度,寬度的問題解決了,還有控制選擇顏色的問題。在bash中默認顏色有以下幾種:

echo -e "/033[40;37m 黑底白字 /033[0m"
echo -e "/033[41;37m 紅底白字 /033[0m"
echo -e "/033[42;37m 綠底白字 /033[0m"
echo -e "/033[43;37m 黃底白字 /033[0m"
echo -e "/033[44;37m 藍底白字 /033[0m"
echo -e "/033[45;37m 紫底白字 /033[0m"
echo -e "/033[46;37m 天藍底白字 /033[0m"
echo -e "/033[47;30m 白底黑字 /033[0m"

其中的數字40-47分別代表對應背景顏色,這里不需要打印前景字體所以不需要30-37數字。另外剔除黑色背景

將幾種顏色作為選擇菜單,通過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: " HIechoread -p "Please input cell's width: " WIecho[[ "$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        ;;    esacdone echoecho "====================="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        ;;    esacdone echoecho "====================="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 "/033[1;4$[$COL1]m`printf "%$[$WI]s"`/033[0m/c"            else                echo -e "/033[1;4$[$COL2]m`printf "%$[$WI]s"`/033[0m/c"            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 "/033[1;4$[$COL2]m`printf "%$[$WI]s"`/033[0m/c"            else                echo -e "/033[1;4$[$COL1]m`printf "%$[$WI]s"`/033[0m/c"            fi            let k++        done        echo        let j++    done filet i++done

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持武林網。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
久久久91精品| 久久久久久久久综合| 欧美日韩精品在线播放| 久久久久久999| 色七七影院综合| 中文字幕久热精品在线视频| 久久97精品久久久久久久不卡| 国产一区二区视频在线观看| 91精品国产电影| 成人国产精品久久久久久亚洲| 国产视频综合在线| 精品国产美女在线| 91精品国产高清久久久久久| 久久久精品影院| 一区二区欧美在线| 成人精品福利视频| 91精品国产色综合久久不卡98| 久久国产精品偷| 中文字幕欧美精品日韩中文字幕| 亚洲人成伊人成综合网久久久| 欧美肥婆姓交大片| 一区二区三区美女xx视频| 日韩精品在线播放| 一二美女精品欧洲| 日韩麻豆第一页| 亚洲欧美国产一区二区三区| 亚洲第一色中文字幕| 欧美高清不卡在线| 日韩大陆毛片av| 国产精品大片wwwwww| 久操成人在线视频| 91精品国产91久久| 久久av红桃一区二区小说| 国产精品一区久久久| 裸体女人亚洲精品一区| 欧美一级淫片播放口| 亚洲人成啪啪网站| 俺也去精品视频在线观看| 成人黄色激情网| 91国在线精品国内播放| 国产精品久久久久久久久粉嫩av| 欧美激情视频免费观看| 中文字幕久久精品| 精品国产91久久久久久| 九九九久久久久久| 国产精品夫妻激情| 欧洲日韩成人av| 在线观看欧美视频| 国产精品嫩草视频| 精品亚洲国产视频| 国产亚洲人成网站在线观看| 日韩av电影国产| 日韩中文字幕在线视频| 欧美日韩精品在线视频| 国产精品com| 欧美在线视频在线播放完整版免费观看| 茄子视频成人在线| 欧美日韩国产中字| 亚洲视频专区在线| 成人福利在线观看| 一区二区日韩精品| 国产亚洲精品久久久久久777| 国产精品老女人精品视频| 精品亚洲精品福利线在观看| 日本高清不卡的在线| 欧美性猛交xxxxx水多| 日韩国产激情在线| 日韩欧美高清视频| 亚洲精品免费一区二区三区| 久久夜色精品国产亚洲aⅴ| 欧美亚洲国产日本| 欧美大片免费观看在线观看网站推荐| 97在线观看视频国产| 欧美日韩在线视频一区二区| 欧美极品少妇与黑人| www.亚洲男人天堂| 国产精品黄色影片导航在线观看| 亚洲综合小说区| 成人网中文字幕| 91久久精品国产91久久性色| 欧美一区二区大胆人体摄影专业网站| 国产日韩换脸av一区在线观看| 9.1国产丝袜在线观看| 国产精品免费小视频| 日韩天堂在线视频| 国产精品久久久久久久久久尿| 日本中文字幕不卡免费| 日韩欧美福利视频| 国产精品男人的天堂| 国产一区二区在线免费视频| 亚洲精品网址在线观看| 欧美日韩国产限制| 97香蕉超级碰碰久久免费软件| 欧洲成人在线视频| 欧美中文在线观看国产| 久久精品亚洲国产| 97精品视频在线观看| 6080yy精品一区二区三区| 欧美孕妇与黑人孕交| 欧美日韩精品在线播放| 欧美有码在线观看| 992tv在线成人免费观看| 欧美精品在线观看| 亚洲欧美另类在线观看| 欧美激情日韩图片| 国产日韩欧美夫妻视频在线观看| 国产精品99导航| 欧美性猛交99久久久久99按摩| 91探花福利精品国产自产在线| 91精品国产91久久久久久最新| 国产视频亚洲视频| xxav国产精品美女主播| 92裸体在线视频网站| 91po在线观看91精品国产性色| 国产色视频一区| 亚洲免费高清视频| 欧美激情一区二区三区成人| 国产精品高清在线观看| 中文字幕日韩av综合精品| 中文字幕久久亚洲| 久久久女人电视剧免费播放下载| 午夜免费久久久久| 精品久久久久久国产| 国产亚洲精品久久久| 91嫩草在线视频| 亚洲欧美国产高清va在线播| 久久久久久久一区二区三区| 欧美猛少妇色xxxxx| 欧美高清在线视频观看不卡| 97精品一区二区视频在线观看| 国产精品99久久久久久久久| 久久免费精品视频| 国产精品羞羞答答| 清纯唯美亚洲综合| 91久久精品国产91性色| 欧洲日韩成人av| 中文字幕免费精品一区高清| 亚洲精品乱码久久久久久金桔影视| 久久久久久噜噜噜久久久精品| 欧美有码在线观看视频| 国产精品偷伦一区二区| 日韩av第一页| 日韩资源在线观看| 欧美日韩成人黄色| 91久久久久久久久久久久久| 国产一区二区三区在线看| 日韩欧美中文字幕在线播放| 国产97人人超碰caoprom| 欧美电影在线观看高清| 成人有码视频在线播放| 国产噜噜噜噜久久久久久久久| 欧美一区二区三区免费观看| 国产激情999| 亚洲一区二区三区四区视频| 欧美亚洲另类在线| 亚洲精品视频播放| 91国产视频在线| 97人人做人人爱| 欧美性videos高清精品| 日韩精品在线私人| 亚洲精品国产精品国自产观看浪潮| 在线播放国产一区二区三区| 国产精品免费福利| 亚洲黄色有码视频|