這是我參與 8 月更文挑戰的第 29 天,活動詳情檢視: 8月更文挑戰
一名致力於在技術道路上的終身學習者、實踐者、分享者,一位忙起來又偶爾偷懶的原創博主,一個偶爾無聊又偶爾幽默的少年。
歡迎各位掘友們微信搜尋「傑哥的IT之旅」關注!
Vim對程式設計師來說,都不陌生。那究竟有沒有什麼方法可以更高效的學習 Vim 呢?肯定是有。那麼,今天就跟大家介紹一款開源專案:PacVim
一、PacVim 是什麼?
PacVim
是一個讓你通過玩遊戲學習 Vim 命令的遊戲,你只需要移動pacman 綠色游標
來突出顯示遊戲板上的每個單詞,同時避免出現紅色障礙物
。PacVim 來自 Github 開發者:Jamal Moon
,為了幫助自己學習 VIM,讓學習變的更加輕鬆,因此也就開發出了這款遊戲。
二、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 ~),則會輸掉!
五、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,則會輸掉整個遊戲。
七、PacVim 專案地址
如果大家對這個專案感興趣並想通過這個專案學習鞏固一下 Vim 知識,可以去體驗一下。
Github 地址:github.com/jmoon018/Pa…
本文完。
原創不易,如果你覺得這篇文章對你有點用的話,麻煩你為本文點個贊、評論或轉發一下,因為這將是我輸出更多優質文章的動力,感謝!
對了,掘友們記得給我點個免費的關注喲!防止你迷路下次就找不到我了。
我們下期再見!