24、Linux 娱乐玩法大揭秘

Linux 娱乐玩法大揭秘

1. 经典 Unix 游戏体验

在 Linux 系统中,有许多经典的 Unix 游戏可供游玩,这些游戏被收录在 Bsd-games 包中。虽然按照现代标准,它们在感官刺激方面可能有所欠缺,但在过去,它们可是大学校园和计算机实验室的常客,而且现在依然能在任何终端上畅玩,无论是孩子还是怀旧的老玩家都能从中找到乐趣。

1.1 游戏列表

游戏名称 描述
adventure 基于肯塔基州的巨洞(Colossal Cave)的文本模拟游戏,由 William Crowther 和 Don Woods 在 20 世纪 70 年代编写,早于 PC 时代的 Zork。更多历史信息可查看 这里
arithmetic 对一组加减法进行测验,并记录你的答题速度
atc 空中交通管制模拟游戏
backgammon 支持单人或双人的西洋双陆棋游戏,附带规则说明
banner 以长垂直字体输出文本,适合打印大横幅(在 Debian 系统中, banner 包含在 bsdmainutils 包中)
battlestar 具有奇幻主题的文本冒险游戏,由 David Riggle 在 1979 年编写
bcd 将文本过滤为打孔卡片输出
boggle 流行的文字游戏
caesar 解密尤利乌斯·恺撒的密码
canfield 单人纸牌游戏的变体
cfscores 显示你的 Canfield 游戏得分
countmail 以一种“相当讨厌”的方式告诉你有多少邮件
cribbage 纸牌游戏克里比奇
fish 儿童纸牌游戏“Go Fish”
gomoku 双人五子棋游戏
hangman 经典的“猜单词”游戏
hunt 多人网络游戏,目标是猎杀并消灭其他玩家
mille 双人纸牌游戏“Mille Bornes”
monop 类似于著名棋盘游戏的财产管理游戏“大富翁”
morse 将文本过滤为摩尔斯电码,默认输出“dit”和“daw”,使用 -s 选项可输出点和划。使用 -d 选项可将摩尔斯电码解码为普通文本
number 将阿拉伯数字转换为英文
phantasia 角色扮演奇幻游戏
pig 将文本过滤为 Pig Latin(一种英语文字游戏),目前没有反向过滤器
pom 告诉你当前的月相
ppt 将文本过滤为纸带输出
primes 输出素数,从 0 开始,到 4,294,967,295 或标准输入给定的数字为止,也可以通过参数指定起始和结束值。例如,要输出 1 到 10 之间的素数,可运行 primes 1 10
quiz 对各种主题的事实和琐事进行测验
rot13 加密和解密 rot13 密码
rain 显示雨滴落在屏幕上的动画,可通过 -d 选项以毫秒为单位指定延迟时间。例如, rain -d 160 是一个不错的设置
random 从输入中输出随机行
robots 射击游戏,你要与杀手机器人战斗
sail 老式海战的角色扮演游戏
snake 在收集金钱的同时避开蛇
snscore 显示蛇游戏的高分
teachgammon 西洋双陆棋的游戏说明
tetris-bsd 著名的俄罗斯方块游戏
trek 太空冒险游戏
wargames 受电影《战争游戏》(WarGames)启发的全球热核战争游戏
worm “成长的蠕虫”游戏
worms 显示蠕虫在屏幕上蠕动的动画
wtf 解释在线交流中使用的缩写词,虽然不太高级,但能识别一些常见的缩写,如“lol”。如果不知道某个缩写,会尝试使用 whatis 提供帮助
wump “猎杀乌姆帕斯”(Hunt the Wumpus)冒险游戏,可能是最著名的经典电脑游戏之一

1.2 注意事项

在 deb 包中,所有包含程序的原始作者列表位于 /usr/share/doc/bsdgames/AUTHORS

2. 文本方言过滤

除了游戏,Linux 系统还提供了一些有趣的文本过滤工具,这些工具可以为文本添加特定的口音或方言,让文本变得更加有趣。

2.1 Gnu Talk Filters

Gnu Talk Filters 是一个专门用于文本方言过滤的包,其中包含了各种过滤器,可将标准输入的文本转换为带有特定方言或口音的文本。

2.2 操作步骤

要将 kraut 过滤器应用到 /etc/motd 文件中的文本,可以使用以下命令:

$ kraut < /etc/motd

这个命令会将 /etc/motd 文件的内容传递给 kraut 过滤器,过滤后的输出将发送到标准输出,而 /etc/motd 文件的内容不会改变。

2.3 其他过滤器

一些可用的方言过滤器包括:
- nyc :为文本添加“纽约客”方言
- newspeak :将真实的表述转换为乔治·奥威尔小说《1984》中思想警察认可的政治正确语言

一些示例文本以及它们通过各种过滤器后的显示方式保存在 /usr/share/doc/filters/SAMPLES 文件中。

虽然这些过滤器主要是为了娱乐,但你也可以编写自己的过滤器,用于一些严肃的目的,例如为出版物的“风格规范”过滤文本。

3. 测试打字速度

你可以通过组合一些工具来测试自己的打字速度。以下是具体的操作步骤:

3.1 操作步骤

在 shell 提示符下,运行 cat 命令并输入一些文本,然后将输出通过管道传递给 wc -w 以获取输入的单词数。在测试前后立即运行 date 命令,将这些命令放在一个列表中执行。

$ date; cat | wc -w; date

例如:

Mon Aug 11 15:14:06 EDT 2003
The quick brown fox jumped over the lazy dog.
<CTRL-D>
9
Mon Aug 11 15:14:12 EDT 2003

在这个例子中,输出的“9”表示用户输入了 9 个单词。通过前后的日期可以知道,用户输入这 9 个单词用了 6 秒钟。你可以使用 bc 或其他计算器将单词数除以打字所用的时间(分钟或秒),从而得到打字速度。

3.2 在 Emacs 中测试

在 Emacs 中,你可以在打字前后运行 time 函数,然后选择输入的文本并将其发送给 wc 以获取单词数。

4. 显示随机名言

在 Linux 系统中,有至少两种方法可以获取随机名言。

4.1 使用 Fortune

Fortune 是一个古老的程序,它可以将“幸运饼干”式的名言输出到标准输出。

操作步骤

要获取一条名言,只需在终端中输入以下命令:

$ fortune
注意事项

这个程序在 Unix 系统上已经存在很长时间了,并且有几种专门的名言数据库可供使用。你甚至可以使用 strfile 命令创建自己的名言文件,包含你自己选择的名言。

4.2 在 Emacs 中获取 Zippy 名言

在 Emacs 中,你可以从漫画角色 Zippy the Pinhead 那里获取随机名言。当你运行 yow 函数时,一条 Zippy 名言会被写入迷你缓冲区。

操作步骤

要获取一条 Zippy 名言,在 Emacs 中输入以下命令:

<ALT-X> yow

5. 文字游戏匹配查找

在 Linux 系统中,有多种工具可以帮助你找到用于文字游戏的单词,如变位词、回文和填字游戏的单词。

5.1 查找变位词

变位词是指由另一个给定单词或短语的所有字符组成的单词或短语,例如“stop”和“tops”都是“pots”的变位词。可以使用 an 工具来查找和输出变位词。

操作步骤
  • 输出单词“lake”的所有变位词:
$ an lake
  • 输出短语“lakes and oceans”的所有变位词:
$ an 'lakes and oceans'
  • 要限制输出的变位词包含某个特定字符串,可以使用 -c 选项。例如,输出短语“lakes and oceans”中包含字符串“seas”的变位词:
$ an -c seas 'lakes and oceans'
  • 使用 -w 选项可以输出由给定单词或短语的部分或全部字母组成的所有单词,这些单词不一定是变位词。例如,输出由单词“seas”的字母组成的所有单词:
$ an -w seas
注意事项

虽然有其他工具可以查找变位词,但 an 是最好的工具之一。不幸的是,它在 Debian 发行版之外并不广泛可用。如果你找不到它,可以从 Debian 包中安装其源代码。

5.2 查找回文

回文是指正向和反向读取都相同的单词或短语,例如“Mom”、“nun”和“Madam, I’m Adam”。以下是几种使用 Perl 单行命令查找回文的方法。

方法一

输出文件中所有回文行的简单 Perl 单行命令:

perl -lne 'map { print if $_ eq reverse } split' file

要检查标准输入中的回文,将文件名指定为 - 。例如,输出系统字典中的所有回文:

$ perl -lne 'print if $_ eq reverse' /usr/dict/words
方法二

输出文件中所有回文行,忽略空格、标点和大小写:

perl -lne '{ $_ = lc; $_ =~ s/\W//g; $_ = reverse; print if $_ eq reverse }' file

例如,输出文件 riddles 中忽略空格、标点和大小写的所有回文行:

$ perl -lne '{ $_ = lc; $_ =~ s/\W//g; $_ = reverse; print if $_ eq reverse }' riddles

5.3 查找填字游戏单词

在 Linux 系统中,有几种方法可以帮助你解决填字游戏。

方法一:浏览系统字典

你可以使用 less 命令并结合 -p 选项来浏览系统字典文件 /usr/dict/words ,从特定的字母或单词前缀开始查找。

  • 从匹配模式“dog”的第一个单词开始浏览系统字典:
$ less -pdog /usr/dict/words
  • 从单词“cat”开始浏览系统字典:
$ less -p"^cat" /usr/dict/words

此外,你还可以使用 look 命令输出以给定字符串开头的所有单词。例如,列出所有以“anti”开头的单词:

$ look anti
方法二:使用 grep 搜索

如果你知道一个单词的长度或某些位置的字符,可以使用 grep 命令在字典中搜索符合模式的所有单词。使用 -i 选项进行不区分大小写的搜索。

  • 输出系统字典中长度为 4 个字符、以字母“z”开头并以“a”结尾的所有单词,不区分大小写:
$ grep -i '^z..a$' /usr/dict/words
  • 输出系统字典中长度为 6 个字符、第二个位置为字母“e”、第四个位置为“s”或“o”的所有单词:
$ grep -i '^.e.[so]..$' /usr/dict/words
注意事项

这些方法也适用于拼字游戏和其他文字游戏。在某些系统中,系统字典保存在 /usr/share/dict/words 中。

6. 文本切割

文本切割是一种将文本的物理布局随机重新排列的技术,目的是在重新排列中找到独特或有趣的短语。以下是几种常见的文本切割方法。

6.1 简单文本切割

你可以编写一个 shell 脚本来对文本进行简单的切割,这个脚本演示了 head tail paste 命令的组合使用。

脚本代码
#!/bin/sh
count=`wc -l < $1`
half=`expr $count / 2`
middle=`awk ' if (length($0) > max) max = length($0)
END
OFMT = "%.0f"
print max / 2' $1`
end=`expr $middle + 1`
head -$half $1|cut -b0-$middle > $1.1
tail -$half $1|cut -b0-$middle > $1.3
head -$half $1|cut -b$end-80 > $1.2
tail -$half $1|cut -b$end-80 > $1.4
paste -d "" $1.4 $1.3
paste -d "" $1.2 $1.1
rm $1.1 $1.2 $1.3 $1.4
操作步骤

将上述脚本保存为 cutup ,并赋予执行权限。要对名为 nova 的文件进行切割,只需在终端中输入以下命令:

$ cutup nova

这个脚本会将文件沿水平和垂直方向从中间切割,然后将四个部分重新排列到对角位置,并将切割后的文本输出到标准输出,原始文件不会被修改。

6.2 随机单词切割

Dadadodo 是一个可以生成与输入文本结构和字符相似的随机文本的工具。它在处理较大的文本时效果更好,因为可以分析更多的细节,从而输出更逼真的文本。

操作步骤

要基于文件 nova 中的文本输出随机文本,只需在终端中输入以下命令:

$ dadadodo nova

这个命令会不断输出基于 nova 文件文本的随机文本,直到你使用 <CTRL-C> 中断它。

选项说明
选项 描述
-c integer 生成指定数量的句子(默认值为 0,表示无限生成直到中断)
-l filename 加载文件中的编译数据并使用它来生成文本
-o filename 将分析结果输出到文件中,以便后续使用
-p integer 在段落之间暂停指定的秒数

6.3 在 Emacs 中进行切割

在 Emacs 中, dissociated-press 函数可以在一个名为 *Dissociation* 的新缓冲区中对当前缓冲区的文本进行随机切割,原始缓冲区不会被修改。新缓冲区中的文本是通过重叠字符或单词组合当前缓冲区的随机部分生成的,通常会形成听起来合理的句子。该函数会偶尔暂停并询问你是否继续切割。

操作步骤
  • 生成当前缓冲区的 Dissociated Press 切割文本:
<ALT-X> dissociated-press
  • 始终以 3 个字符重叠生成切割文本:
<CTRL-U> 3 <ALT-X> dissociated-press
  • 始终以 1 个单词重叠生成切割文本:
<CTRL-U> -1 <ALT-X> dissociated-press

7. 心理分析模拟

Emacs 有一个特殊的模式 doctor ,它是著名的 eliza 程序的实现。就像“真正的”心理分析一样,你可以倾诉自己的烦恼,医生会进一步询问,而且这里的“治疗”不花一分钱,你想聊多久就聊多久。由于“会话”是在 Emacs 缓冲区中进行的,你还可以将其保存到文件中留作纪念。

操作步骤

要在 Emacs 中开始一次心理分析会话,只需输入以下命令:

<ALT-X> doctor

通过以上这些方法,你可以在 Linux 系统中尽情享受各种娱乐活动,无论是玩游戏、进行文本处理还是进行心理分析模拟,都能找到乐趣。希望你在 Linux 的世界中度过愉快的时光!

8. 娱乐工具总结与对比

为了让大家更清晰地了解这些娱乐工具的特点和用途,下面对前面介绍的工具进行一个总结和对比。

工具类型 工具名称 主要功能 操作示例 适用场景
游戏类 Bsd - games 包含多种经典 Unix 游戏,如纸牌、冒险、棋盘游戏等 安装后直接运行对应游戏名,如 adventure 休闲娱乐,适合怀旧玩家和儿童
文本过滤类 Gnu Talk Filters 为文本添加特定方言或口音 kraut < /etc/motd 娱乐、文本创意处理
打字测试类 组合 cat wc date 测试打字速度 date; cat | wc -w; date 提升打字技能、自我测试
名言获取类 Fortune 输出随机名言 fortune 获取灵感、娱乐消遣
文字游戏匹配类 an 查找变位词 an lake 文字游戏,如填字、猜词游戏
文字游戏匹配类 Perl 单行命令 查找回文 perl -lne 'print if $_ eq reverse' /usr/dict/words 文字游戏、文本分析
文字游戏匹配类 less look grep 查找填字游戏单词 less -pdog /usr/dict/words look anti grep -i '^z..a$' /usr/dict/words 填字游戏、拼字游戏
文本切割类 cutup 脚本 对文本进行简单切割和重新排列 cutup nova 文本创意处理、文学创作
文本切割类 Dadadodo 生成与输入文本相似的随机文本 dadadodo nova 文本创意处理、写作灵感启发
文本切割类 Emacs 的 dissociated - press 函数 在 Emacs 中对文本进行随机切割 <ALT - X> dissociated - press Emacs 用户的文本创意处理
心理分析模拟类 Emacs 的 doctor 模式 模拟心理分析会话 <ALT - X> doctor 情绪倾诉、娱乐体验

9. 娱乐工具使用流程总结

下面通过 mermaid 流程图来展示使用这些娱乐工具的一般流程:

graph LR
    A[选择娱乐类型] --> B{游戏类}
    A --> C{文本处理类}
    A --> D{打字测试类}
    A --> E{名言获取类}
    A --> F{文字游戏匹配类}
    A --> G{文本切割类}
    A --> H{心理分析模拟类}
    B --> B1[安装 Bsd - games]
    B1 --> B2[运行对应游戏]
    C --> C1[安装 Gnu Talk Filters]
    C1 --> C2[选择过滤器并处理文本]
    D --> D1[执行测试命令]
    E --> E1[使用 Fortune 或 Emacs 的 yow 函数]
    F --> F1[根据需求选择工具(an、Perl 命令、less 等)]
    F1 --> F2[执行查找命令]
    G --> G1[选择工具(cutup 脚本、Dadadodo、Emacs 函数)]
    G1 --> G2[执行切割操作]
    H --> H1[在 Emacs 中启动 doctor 模式]

10. 常见问题解答

在使用这些娱乐工具的过程中,可能会遇到一些问题,下面为大家解答一些常见问题。

10.1 游戏类问题
  • :安装 Bsd - games 后,某些游戏无法运行怎么办?
    • :首先检查游戏是否正确安装,可以查看安装日志。如果安装正常,可能是缺少依赖库,需要安装相应的依赖库。另外,有些游戏可能需要特定的权限才能运行,可以尝试使用 sudo 命令运行。
  • :游戏运行时出现画面显示异常怎么办?
    • :检查终端的设置,确保终端支持游戏所需的字符集和显示模式。有些游戏可能对终端大小有要求,可以调整终端窗口的大小。
10.2 文本处理类问题
  • :使用 Gnu Talk Filters 时,过滤器没有效果怎么办?
    • :检查过滤器是否正确安装,并且输入的命令是否正确。有些过滤器可能对输入文本的格式有要求,可以尝试不同格式的输入文本。
  • :在文本切割时,生成的文本不符合预期怎么办?
    • :对于 cutup 脚本,检查脚本是否正确编写,输入文件的格式是否符合要求。对于 Dadadodo 和 Emacs 的 dissociated - press 函数,可能是输入文本太短,导致生成的文本不够逼真,可以尝试使用更长的文本。
10.3 其他问题
  • :在 Emacs 中使用某些功能时,提示命令未找到怎么办?
    • :检查 Emacs 的配置文件,确保所需的功能已经正确加载。有些功能可能需要安装额外的插件,可以查看相关文档进行安装。
  • :打字测试时,结果不准确怎么办?
    • :确保测试环境安静,避免干扰。测试时尽量输入较长的文本,以提高结果的准确性。另外,检查输入的命令是否正确。

11. 总结与展望

通过本文的介绍,我们了解了在 Linux 系统中丰富多样的娱乐方式,从经典的 Unix 游戏到各种文本处理工具,再到心理分析模拟,每一种都有其独特的魅力和用途。这些工具不仅能让我们在闲暇时光找到乐趣,还能在一定程度上提升我们的技能,如打字速度、文字处理能力等。

未来,随着 Linux 系统的不断发展,相信会有更多有趣的娱乐工具出现。开发者们可能会结合人工智能、机器学习等技术,为我们带来更加智能、个性化的娱乐体验。例如,文字游戏工具可能会根据玩家的水平自动调整难度,心理分析模拟可能会更加精准地理解用户的情感。我们可以期待在 Linux 的世界中发现更多的惊喜和乐趣。

希望大家能够积极尝试这些娱乐工具,在 Linux 系统中开启一段丰富多彩的娱乐之旅!

已经博主授权,源码转载自 https://pan.quark.cn/s/a4b39357ea24 QueueForMcu 基于单片机实现的队列功能模块,主要用于8位、16位、32位非运行RTOS的单片机应用,兼容多数单片机平台。 开源代码:https://.com/xiaoxinpro/QueueForMcu 一、特性 动态创建队列对象 动态设置队列数据缓冲区 静态指定队列元素数据长度 采用值传递的方式保存队列数据 二、快速使用 三、配置说明 目前QueueForMcu只有一个静态配置项,具体如下: 在文件 中有一个宏定义 用于指定队列元素的数据长度,默认是 ,可以根据需要更改为其他数据类型。 四、数据结构 队列的数据结构为 用于保存队列的状态,源码如下: 其中 为配置项中自定义的数据类型。 五、创建队列 1、创建队列缓存 由于我们采用值传递的方式保存队列数据,因此我们在创建队列前要手动创建一个队列缓存区,用于存放队列数据。 以上代码即创建一个小为 的队列缓存区。 2、创建队列结构 接下来使用 创建队列结构,用于保存队列的状态: 3、初始化队列 准备好队列缓存和队列结构后调用 函数来创建队列,该函数原型如下: 参数说明: 参考代码: 六、压入队列 1、单数据压入 将数据压入队列尾部使用 函数,该函数原型如下: 参数说明: 返回值说明: 该函数会返回一个 枚举数据类型,返回值会根据队列状态返回以下几个值: 参考代码: 2、多数据压入 若需要将多个数据(数组)压入队列可以使用 函数,原理上循环调用 函数来实现的,函数原型如下: 参数说明: 当数组长度于队列剩余长度时,数组多余的数据将被忽略。 返回值说明: 该函数将返回实际被压入到队列中的数据长度。 当队列中的剩余长度富余...
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值