点击上方“杰哥的IT之旅”,选择“星标”公众号
重磅干货,第一时间送达
作者:JackTian 微信公众号:杰哥的IT之旅(ID:Jake_Internet)
Vim对程序员来说,都不陌生。那究竟有没有什么方法可以更高效的学习 Vim 呢?肯定是有。那么,今天就跟大家介绍一款开源项目:PacVim
PacVim
是一个让你通过玩游戏学习 Vim 命令的游戏,你只需要移动pacman 绿色光标
来突出显示游戏板上的每个单词,同时避免出现红色障碍物
。PacVim 来自 Github 开发者:Jamal Moon
,为了帮助自己学习 VIM,让学习变的更加轻松,因此也就开发出了这款游戏。
开发者 Jamal Moon
VIM 是编辑代码的好工具,但包括Jamal Moon
在内的许多人都在艰难的学习中挣扎,同时也并没有找到一种有趣的方法来深入了解 VIM 命令,因此 PacVim 这款游戏就诞生了。受经典 PacMan 的启发,它将给任何人以 VIM 命令进行大量练习的同时,还给大家带来了很多乐趣。
Mac OS X
PacVim 已经编译为 HomeBrew 包,如果你是 mac 用户,可执行如下命令进行安装。
$ brew install pacvim
Linux
下载,编译和安装 GNU ncurses(图形库)
GNU ncurses 是提供 API 的编程库,允许程序员以与终端无关的方式编写文本用户界面。
以 Ubuntu 为例,可在终端中执行命令:
$ sudo apt-get install libncurses5-dev
或通过源码包的方式解压,编译,安装;(源码包版本下载地址:http://ftp.gnu.org/pub/gnu/ncurses/)
$ 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
使用 Docker
也可以使用Docker 镜像
来运行,直接执行如下代码,就可以启动 PacVim 游戏
了。
# docker run -it freedomben/pacvim [LEVEL_NUMBER] [MODE]
LEVEL_NUMBER 取值范围为 0-9,数字越大,难度越高。
MODE 可选 N 或 H,N 表示 Normal(正常难度);H 则表示 Hard(困难)。
如果你是在 Ubuntu 环境下安装的PacVim
,可直接执行如下命令进行启动游戏。
$ pacvim 8 n
PacVim 的目标与 PacMan 相似,必须在终端下启动PacVim 游戏
,并在屏幕上运行所有字符,同时避免出现红色G
的障碍。
PacVim 有两个特殊的障碍:
1、不能进入墙壁(黄色),需必须使用 vim 指定命令进行跳过它们。
2、如果踩波浪号字符(cyan ~),则会输掉!
PacVim 的地图文件是从/usr/local/share/pacvim-maps
文件夹中的文本文件加载的,安装完成后,可以调用来使用maps文件夹make MAPDIR=maps
。
每个文本文件的名称都是采用map#.txt
的格式,其中#
代表数字,例如0、1、9、14
等;并确保在GLOBALS.CPP
中更改了NUM_OF_LEVELS
个,否则将无法加载新的地图,等于最高的地图编号。
在地图文本文件中,墙壁用&
符号表示#
,而波浪号用~
表示,必须限制地图的边界并使其封闭。
获胜条件:使用vim
命令将光标移至字母上方并突出显示,在所有字母显示后,将赢得并进入下一关。
失败条件:如果触碰到障碍物(红色G)
或波浪号
字符,将会失败。如果您的生命少于0,则会输掉整个游戏。
如果大家对这个项目感兴趣并想通过这个项目学习巩固一下 Vim 知识,可以去体验一下。
Github 地址:https://github.com/jmoon018/PacVim