1

嗯,我知道你们此时心里想的是什么:“上次为什么这么短?” “是不是存心搞我们?” 呃······但我的v1.0 beta 1就是这样发布的!!!但不管上次多短,我们的编程还是要继续下去。今天我们的工作:增加状态显示及彩色!
关于前作链接:由于文章太多,我决定只在每篇文章中显示上篇链接。这里就是:从0开始用python写一个命令行小游戏(六)

状态显示

我的v1.0 beta 1发布后,有测试用户说各种内部进行的操作看不出来,我就想到了这个方法:对于每个操作,都输出一个状态,就一目了然了。我的解决方法如下:

class Sunflower(Plant):
    indicating_char = 's'
    
    def __init__(self, pos):
        super().__init__(pos, 50)
        print("Sunflower planted at %d, costing 50 sunlight."
              % self.pos)
    
    def step(self):
        # 其余部分同前
        print("Sunflower at %d produced 25 sunlight."
              % self.pos)

别的类也类似。这里简单的说一下"%d""%s"等的作用。它们都是用来匹配一些动态内容的,只不过匹配的内容类型不同。所有值通过%操作符匹配。%d匹配int类型,%s匹配str类型,等等。有多个匹配值时,%后内容加括号(相当于使用元组)。例:

name = 'peter'
age = 20
print("%s is %d years old." % (name.title(), age))
# 输出:Peter is 20 years old.

这种将不同类型的动态值嵌入字符串的方法在嵌入int类型时十分高效,再也不用"..." + str(val) + "..."这样进行嵌入了。

好了,回到正题。

彩色显示

我的百度结果:\033[显示模式;颜色;背景m字符\033[0m
显示模式:0=正常,1=高亮(在Mac下为粗体)
颜色:30=正常,31=红,32=绿,33=黄,34=蓝,35=紫,36=青,37=白
背景:颜色+10
于是,一个color()函数诞生:

def color(font, text):
    return "\033[1;%dm%s\033[0m" % (font, text)

然后把需要加颜色的字符串变成:

color(颜色数字, "字符")

大功告成!(v1.0 beta 3发布状态)

下集预告

下次,该加上多行了!还有,一种新的僵尸(原创)正蠢蠢欲动······欢迎继续关注!


leosz
30 声望6 粉丝

喜欢Python的业余程序猿