阅读 656

GitHub 标星 2.9K+!教你通过玩游戏的方式学习 VIM!

这是我参与 8 月更文挑战的第 29 天,活动详情查看: 8月更文挑战

一名致力于在技术道路上的终身学习者、实践者、分享者,一位忙起来又偶尔偷懒的原创博主,一个偶尔无聊又偶尔幽默的少年。

欢迎各位掘友们微信搜索「杰哥的IT之旅」关注!

原文链接:GitHub 标星 2.9K+!教你通过玩游戏的方式学习 VIM!

Vim对程序员来说,都不陌生。那究竟有没有什么方法可以更高效的学习 Vim 呢?肯定是有。那么,今天就跟大家介绍一款开源项目:PacVim

一、PacVim 是什么?

PacVim是一个让你通过玩游戏学习 Vim 命令的游戏,你只需要移动pacman 绿色光标来突出显示游戏板上的每个单词,同时避免出现红色障碍物。PacVim 来自 Github 开发者:Jamal Moon,为了帮助自己学习 VIM,让学习变的更加轻松,因此也就开发出了这款游戏。

开发者 Jamal Moon

二、PacVim 建立的目的

VIM 是编辑代码的好工具,但包括Jamal Moon在内的许多人都在艰难的学习中挣扎,同时也并没有找到一种有趣的方法来深入了解 VIM 命令,因此 PacVim 这款游戏就诞生了。受经典 PacMan 的启发,它将给任何人以 VIM 命令进行大量练习的同时,还给大家带来了很多乐趣。

三、下载并安装 PacVim

3.1 Mac OS X

PacVim 已经编译为 HomeBrew 包,如果你是 mac 用户,可执行如下命令进行安装。

$ brew install pacvim
复制代码

3.2 Linux

下载,编译和安装 GNU ncurses(图形库)

GNU ncurses 是提供 API 的编程库,允许程序员以与终端无关的方式编写文本用户界面。

以 Ubuntu 为例,可在终端中执行命令:

$ sudo apt-get install libncurses5-dev 
复制代码

或通过源码包的方式解压,编译,安装;(源码包版本下载地址:ftp.gnu.org/pub/gnu/ncu…

$ wget http://ftp.gnu.org/pub/gnu/ncurses/ncurses-5.7.tar.gz
$ tar xzf ncurses-5.7.tar.gz
$ cd ncurses-5.7
$ ./configure --prefix=/opt/ncurses
$ make && make install
$ ls -la /opt/ncurses
复制代码

或者通过 git 的方式进行安装;

# git clone https://github.com/jmoon018/PacVim.git
正克隆到 'PacVim'...
remote: Enumerating objects: 627, done.
remote: Total 627 (delta 0), reused 0 (delta 0), pack-reused 627
接收对象中: 100% (627/627), 3.20 MiB | 22.00 KiB/s, 完成.
处理 delta 中: 100% (341/341), 完成.
# cd PacVim
# ls
COPYING  COPYING.LESSER  Dockerfile  gifs  Makefile  maps  README.md  src
# make install
g++ -std=c++11 -DMAPS_LOCATION='"/usr/local/share/pacvim-maps"' -pthread   -c -o src/avatar.o src/avatar.cpp
g++ -std=c++11 -DMAPS_LOCATION='"/usr/local/share/pacvim-maps"' -pthread   -c -o src/ghost1.o src/ghost1.cpp
g++ -std=c++11 -DMAPS_LOCATION='"/usr/local/share/pacvim-maps"' -pthread   -c -o src/helperFns.o src/helperFns.cpp
g++ -std=c++11 -DMAPS_LOCATION='"/usr/local/share/pacvim-maps"' -pthread   -c -o src/game.o src/game.cpp
g++ -std=c++11 -DMAPS_LOCATION='"/usr/local/share/pacvim-maps"' -pthread   -c -o src/globals.o src/globals.cpp
g++ -std=c++11 -DMAPS_LOCATION='"/usr/local/share/pacvim-maps"' -pthread  src/avatar.o src/ghost1.o src/helperFns.o src/game.o src/globals.o -o pacvim -lncurses -lpthread
install -Dm755 pacvim /usr/local/bin/pacvim
install -d /usr/local/share/pacvim-maps
install -t /usr/local/share/pacvim-maps maps/map0.txt maps/map1.txt maps/map5.txt maps/map7.txt maps/map2.txt maps/map9.txt maps/map6.txt maps/map3.txt maps/map4.txt maps/map8.txt
复制代码

3.3 使用 Docker

也可以使用Docker 镜像来运行,直接执行如下代码,就可以启动 PacVim 游戏了。

# docker run -it freedomben/pacvim [LEVEL_NUMBER] [MODE]
复制代码

LEVEL_NUMBER 取值范围为 0-9,数字越大,难度越高。

MODE 可选 N 或 H,N 表示 Normal(正常难度);H 则表示 Hard(困难)。

四、PacVim 怎么玩?

如果你是在 Ubuntu 环境下安装的PacVim,可直接执行如下命令进行启动游戏。

$ pacvim 8 n
复制代码

PacVim 的目标与 PacMan 相似,必须在终端下启动PacVim 游戏,并在屏幕上运行所有字符,同时避免出现红色G的障碍。

4.1 PacVim 有两个特殊的障碍

1、不能进入墙壁(黄色),需必须使用 vim 指定命令进行跳过它们。

2、如果踩波浪号字符(cyan ~),则会输掉!

image.png

五、PacVim 地图文件

PacVim 的地图文件是从/usr/local/share/pacvim-maps文件夹中的文本文件加载的,安装完成后,可以调用来使用maps文件夹make MAPDIR=maps

每个文本文件的名称都是采用map#.txt的格式,其中#代表数字,例如0、1、9、14等;并确保在GLOBALS.CPP中更改了NUM_OF_LEVELS个,否则将无法加载新的地图,等于最高的地图编号。

在地图文本文件中,墙壁用符号表示#,而波浪号用~表示,必须限制地图的边界并使其封闭。

六、PacVim 游戏示意图

获胜条件:使用vim命令将光标移至字母上方并突出显示,在所有字母显示后,将赢得并进入下一关。

失败条件:如果触碰到障碍物(红色G)波浪号字符,将会失败。如果您的生命少于0,则会输掉整个游戏。

image.png

七、PacVim 项目地址

如果大家对这个项目感兴趣并想通过这个项目学习巩固一下 Vim 知识,可以去体验一下。

Github 地址:github.com/jmoon018/Pa…

本文完。


原创不易,如果你觉得这篇文章对你有点用的话,麻烦你为本文点个赞、评论或转发一下,因为这将是我输出更多优质文章的动力,感谢!

对了,掘友们记得给我点个免费的关注哟!防止你迷路下次就找不到我了。

我们下期再见!

文章分类
后端