用代碼畫一只小兔子給大家拜年啦!
新的一年,祝大家前兔似錦、談兔不凡、顏值兔出、成績兔出!
前言
春節(jié)將至必須把節(jié)日氣氛搞起來。
使用 Go 語言創(chuàng)作,想到了一丟丟的創(chuàng)意,打算在終端動態(tài)打印小兔子,給大家拜年!
先來看看效果吧:
創(chuàng)作過程
小兔子模型制作

大部分的時間,都花在了畫兔子圖案的工作上。
創(chuàng)建一個 txt 文檔,在文檔里通過特殊符號,一步一步將模型搭好,然后附上一副春節(jié)對聯(lián)。
實現(xiàn)思路
整個動態(tài)過程是由幾個不同的圖案依次打印而成,一共有 7 個圖案。起初我是將這 7 個圖案放到 txt 文件里,然后通過讀取文件,分割圖案,最后打印圖案,這樣做的好處是圖案和代碼分開了,降低圖案與代碼間的耦合度。
到最后,由于代碼要放到碼上掘金上面,而碼上掘金不支持讀取文件的操作,因此只能將圖案放到代碼里,用字符串變量接收。
代碼
package?main
import?(
?"fmt"
?"os"
?"os/exec"
?"time"
)
var?r1?=?"\n????????????????????/\???/\"?+
?"\n???????????????????/??:?/??|"?+
?"\n??????????????????:???:`??/"?+
?"\n???????????????????\?????."?+
?"\n????????????????????\???:."?+
?"\n????????????????????.`?????`."?+
?"\n???????????????????:?????0???\"?+
?"\n?????????????????..`??????????;"?+
?"\n?????????????.?`???????????`.ˉ"?+
?"\n???????????.`????????????????:"?+
?"\n????????.`???????????????????."?+
?"\n??????.`?????????????????????:"?+
?"\n?????.????Happy?New?Year?????."?+
?"\n????.?????????????????????.`"?+
?"\n?..?`??????????????????.`"?+
?"\n:??``?????????????;.??`、"?+
?"\n`..`._____________::____)"
var?r2?=?"\n????????????????????????/\???/\"?+
?"\n???????????????????????/??:?/??|"?+
?"\n??????????????????????:???:`??/"?+
?"\n???????????????????????\?????."?+
?"\n????????????????????????\???:."?+
?"\n????????????????????????.`?????`."?+
?"\n???????????????????????:?????0???\"?+
?"\n?????????????????????..`??????????;"?+
?"\n?????????????????.?`???????????`.ˉ"?+
?"\n???????????????.`????????????????:"?+
?"\n????????????.`???????????????????."?+
?"\n??????????.`?????????????????????:"?+
?"\n?????????.????Happy?New?Year?????."?+
?"\n????????.?????????????????????.`"?+
?"\n?????..?`??????????????????.`"?+
?"\n????:??``?????????????;.??`、"?+
?"\n????`..`._____________::____)"
var?r3?=?"\n????????????????????????????/\???/\"?+
?"\n???????????????????????????/??:?/??|"?+
?"\n??????????????????????????:???:`??/"?+
?"\n???????????????????????????\?????."?+
?"\n????????????????????????????\???:."?+
?"\n????????????????????????????.`?????`."?+
?"\n???????????????????????????:?????0???\"?+
?"\n?????????????????????????..`??????????;"?+
?"\n?????????????????????.?`???????????`.ˉ"?+
?"\n???????????????????.`????????????????:"?+
?"\n????????????????.`???????????????????."?+
?"\n??????????????.`?????????????????????:"?+
?"\n?????????????.????Happy?New?Year?????."?+
?"\n????????????.?????????????????????.`"?+
?"\n?????????..?`??????????????????.`"?+
?"\n????????:??``?????????????;.??`、"?+
?"\n????????`..`._____________::____)"
var?r4?=?"\n????????????????????????????????/\???/\"?+
?"\n???????????????????????????????/??:?/??|"?+
?"\n??????????????????????????????:???:`??/"?+
?"\n???????????????????????????????\?????.?????????????????________________"?+
?"\n????????????????????????????????\???:.????????????????|??喜??辭??舊??歲?|"?+
?"\n????????????????????????????????.`?????`.??????????????ˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉ"?+
?"\n???????????????????????????????:?????0???\"?+
?"\n?????????????????????????????..`??????????;"?+
?"\n?????????????????????????.?`???????????`.ˉ"?+
?"\n???????????????????????.`????????????????:"?+
?"\n????????????????????.`???????????????????."?+
?"\n??????????????????.`?????????????????????:"?+
?"\n?????????????????.????Happy?New?Year?????."?+
?"\n????????????????.?????????????????????.`"?+
?"\n?????????????..?`??????????????????.`"?+
?"\n????????????:??``?????????????;.??`、"?+
?"\n????????????`..`._____________::____)"
var?r5?=?"\n????????????????????????????????/\???/\"?+
?"\n???????????????????????????????/??:?/??|"?+
?"\n??????????????????????????????:???:`??/"?+
?"\n???????????????????????????????\?????.?????????????????________________"?+
?"\n????????????????????????????????\???:.????????????????|??喜??辭??舊??歲?|"?+
?"\n????????????????????????????????.`?????`.??????????????ˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉ"?+
?"\n???????????????????????????????:?????0???\?????????____"?+
?"\n?????????????????????????????..`??????????;???????|?兔?|"?+
?"\n?????????????????????????.?`???????????`.ˉ????????|?躍?|"?+
?"\n???????????????????????.`????????????????:????????|?龍?|"?+
?"\n????????????????????.`???????????????????.????????|?騰?|"?+
?"\n??????????????????.`?????????????????????:????????|?辭?|"?+
?"\n?????????????????.????Happy?New?Year?????.????????|?舊?|"?+
?"\n????????????????.?????????????????????.`??????????|?歲?|"?+
?"\n?????????????..?`??????????????????.`??????????????ˉˉˉ"?+
?"\n????????????:??``?????????????;.??`、"?+
?"\n????????????`..`._____________::____)"
var?r6?=?"\n????????????????????????????????/\???/\"?+
?"\n???????????????????????????????/??:?/??|"?+
?"\n??????????????????????????????:???:`??/"?+
?"\n???????????????????????????????\?????.?????????????????________________"?+
?"\n????????????????????????????????\???:.????????????????|??喜??辭??舊??歲?|"?+
?"\n????????????????????????????????.`?????`.??????????????ˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉ"?+
?"\n???????????????????????????????:?????0???\?????????____????????????????____"?+
?"\n?????????????????????????????..`??????????;???????|?兔?|???????????????|?龍?|"?+
?"\n?????????????????????????.?`???????????`.ˉ????????|?躍?|???????????????|?騰?|"?+
?"\n???????????????????????.`????????????????:????????|?龍?|???????????????|?虎?|"?+
?"\n????????????????????.`???????????????????.????????|?騰?|???????????????|?躍?|"?+
?"\n??????????????????.`?????????????????????:????????|?辭?|???????????????|?賀?|"?+
?"\n?????????????????.????Happy?New?Year?????.????????|?舊?|???????????????|?新?|"?+
?"\n????????????????.?????????????????????.`??????????|?歲?|???????????????|?春?|"?+
?"\n?????????????..?`??????????????????.`??????????????ˉˉˉ??????????????????ˉˉˉ"?+
?"\n????????????:??``?????????????;.??`、"?+
?"\n????????????`..`._____________::____)"
var?r7?=?"\n????????????????????????????????/\???/\"?+
?"\n???????????????????????????????/??:?/??|"?+
?"\n??????????????????????????????:???:`??/"?+
?"\n???????????????????????????????\?????.?????????????????________________"?+
?"\n????????????????????????????????\???:.????????????????|??喜??辭??舊??歲?|"?+
?"\n????????????????????????????????.`?????`.??????????????ˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉ"?+
?"\n???????????????????????????????:?????0???\?????????____????????????????____"?+
?"\n?????????????????????????????..`??????????;???????|?兔?|???????????????|?龍?|"?+
?"\n?????????????????????????.?`???????????`.ˉ????????|?躍?|???????2???????|?騰?|"?+
?"\n???????????????????????.`????????????????:????????|?龍?|???????0???????|?虎?|"?+
?"\n????????????????????.`???????????????????.????????|?騰?|???????2???????|?躍?|"?+
?"\n??????????????????.`?????????????????????:????????|?辭?|???????3???????|?賀?|"?+
?"\n?????????????????.????Happy?New?Year?????.????????|?舊?|???????????????|?新?|"?+
?"\n????????????????.?????????????????????.`??????????|?歲?|???????????????|?春?|"?+
?"\n?????????????..?`??????????????????.`??????????????ˉˉˉ??????????????????ˉˉˉ"?+
?"\n????????????:??``?????????????;.??`、"?+
?"\n????????????`..`._____________::____)"
func?main()?{
?rabbits?:=?[]string{r1,?r2,?r3,?r4,?r5,?r6,?r7}
?for?_,?rabbit?:=?range?rabbits?{
??//?通過終端控制符進(jìn)行清屏
??//fmt.Println("\033c")
??cmd?:=?exec.Command("cmd",?"/c",?"cls")
??cmd.Stdout?=?os.Stdout
??cmd.Run()
??//?打印圖案
??fmt.Printf("%s",?rabbit)
??time.Sleep(time.Millisecond?*?500)
?}
}
詳解一下
-
首先,使用七個字符串變量,保存七個不同的圖案,用于后續(xù)打印。
-
其次,將七個字符串變量放入字符串切片里,后續(xù)易于操作。
-
接下來,循環(huán)遍歷切片,打印圖案。
-
打印圖案之前,先通過
exec.Command函數(shù),執(zhí)行cls命令,達(dá)到在windows系統(tǒng)上清屏的效果。cls的缺點就是清屏?xí)r會閃屏,而上面注釋掉的一行代碼是通過終端控制符進(jìn)行清屏,基本上不閃爍,適用于linux終端,在windows的命令行模式下清屏無效。同時cls命令和終端控制符在碼上掘金上也沒有看到清屏的效果,如果讀者有好的方法,請多多指教!
-
打印圖案之前,先通過
-
打印一個圖案之后,延時
0.5秒后打印下一個圖案,讓肉眼可觀察到整個過程。
注意問題
除了動手制作圖案以外,本次創(chuàng)作遇到最大困難是如何在終端清屏?xí)r不閃爍。通過打印 \033c 終端控制符進(jìn)行清屏,基本上不閃爍,但是此操作在 windows cmd 終端下不起作用,無奈只能通過執(zhí)行 cls 命令,達(dá)到清屏的效果。
也來試試
相信看完之后,你也想體驗一下,滿足你。
已經(jīng)把代碼開源出來了,分享到自帶運行環(huán)境的1024Code平臺,大家可以點擊下面的鏈接直接運行:
https://1024code.com/codecubes/ahKzVWY
有好的想法和創(chuàng)意也歡迎和我們交流哈,歡迎在評論區(qū)留言。
PS:你想擁有自己獨一無二的紅包封面嗎?你想做春節(jié)最靚的崽嗎?彰顯個性,表達(dá)心意,你也可以送一個紅包封面給TA哦,歡迎找我咨詢。
推薦明勇
原文鏈接是明勇的掘金首頁, 推薦大家關(guān)注,見證又一位技術(shù)博主的成長 。
新的一年,一起加油!??????
