小兔子在终端给大家拜年啦

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了小兔子在终端给大家拜年啦相关的知识,希望对你有一定的参考价值。

耐心和持久胜过激烈和狂热。

哈喽大家好,我是陈明勇,本文分享的内容是 使用 Go 语言实现小兔子在终端给大家拜年。如果觉得作品有趣,不妨点个赞,如果本文有错误的地方,欢迎指出!

前言

使用 ​​Go​​ 语言创作,没有想到好的创意,最后打算在终端动态打印小兔子,给大家拜年!先来看看效果图:

小兔子在终端给大家拜年啦_Go

创作过程

小兔子模型制作

小兔子在终端给大家拜年啦_Go_02

大部分的时间,都花在了画兔子图案的工作上。创建一个 ​​txt​​ 文档,在文档里通过特殊符号,一步一步将模型搭好,然后附上一副春节对联。

实现思路

整个动态过程是由几个不同的图案依次打印而成,一共有 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 := []stringr1, r2, r3, r4, r5, r6, r7
for _, rabbit := range rabbits
// 通过终端控制符进行清屏
//fmt.Println("\\033c")
cmd := exec.Command("cmd", "/c", "cls")
cmd.Stdout = os.Stdout
cmd.Run()
// 打印图案
fmt.Printf("%s", rabbit)
time.Sleep(time.Millisecond * 500)

  • 首先,使用七个字符串变量,保存七个不同的图案,用于后续打印。
  • 其次,将七个字符串变量放入字符串切片里,后续易于操作。
  • 接下来,循环遍历切片,打印图案。
  • 打印图案之前,先通过 ​​exec.Command​​​ 函数,执行 ​​cls​​​ 命令,达到在 ​​windows​​​ 系统上清屏的效果。​​cls​​​ 的缺点就是清屏时会闪屏,而上面注释掉的一行代码是通过终端控制符进行清屏,基本上不闪烁,适用于 ​​linux​​​ 终端,在 ​​windows​​​ 的命令行模式下清屏无效。同时 ​​cls​​ 命令和终端控制符在码上掘金上也没有看到清屏的效果,如果读者有好的方法,请多多指教!
  • 打印一个图案之后,延时 ​​0.5​​ 秒后打印下一个图案,让肉眼可观察到整个过程。

小结

动一动手指,让小兔子在终端给大家拜年,简单又有趣。

除了动手制作图案以外,本次创作遇到最大困难是如何在终端清屏时不闪烁。通过打印 ​​\\033c​​​ 终端控制符进行清屏,基本上不闪烁,但是此操作在 ​​windows cmd​​​ 终端下不起作用,无奈只能通过执行 ​​cls​​ 命令,达到清屏的效果。

新的一年,祝大家前兔似锦、谈兔不凡、颜值兔出、成绩兔出!

以上是关于小兔子在终端给大家拜年啦的主要内容,如果未能解决你的问题,请参考以下文章

拜年啦,2022

拜年啦,2022

提前给大家拜年

历途机器人给大家拜年喽

rpc 给您拜年啦!

大树编程祝大家鼠年大吉!