GitHub 標星 2.9K+!教你通過玩遊戲的方式學習 VIM!

傑哥的IT之旅 發表於 2021-08-29
VIM Github

這是我參與 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…

本文完。


原創不易,如果你覺得這篇文章對你有點用的話,麻煩你為本文點個贊、評論或轉發一下,因為這將是我輸出更多優質文章的動力,感謝!

對了,掘友們記得給我點個免費的關注喲!防止你迷路下次就找不到我了。

我們下期再見!