RogueLike in Linux C++-專案設定與GitHub

參考教學:
Complete roguelike tutorial using C++ and libtcod - part 1: setting up

本篇文章主要有三個重點:

  1. 改用 Makefile 編譯 g++。
  2. 使用 GitHub 版控。
  3. 執行第一支 main.cpp 程式 (可以移動行走)。

改用 Makefile 編譯 g++

嘗試使用 Code::Block & CodeLite 等 IDE 均不滿意,想說既然是在 Linux 環境下,還是熟習較基本的編譯環境以及使用 Vim 開發,如此爾後的可控制性也會較好 (越來越喜歡這類命令列的指令模式,初學困難但會倒吃甘蔗)。

使用最普及的 Makefile 來編寫 c++ 的編譯腳本。目前對其語法並不熟悉,就是先針對現在的專案目錄結構,可以順利編譯位於 src/ 資料夾下的 main.cpp,以及可以執行所編譯產出的執行檔即可。

SRCDIR = src
INCDIR = include
LIBDIR = lib
CPP = g++
 
# CFLAGS = -O2 -s -w -std=c++11 -I$(INCDIR)/nwbd -I$(INCDIR)/tcod
CFLAGS = -g -Wall -std=c++11 -I$(INCDIR)/tcod
 
# Determine if operating system is 32-bit or 64-bit
 ifeq ($(shell uname -m),x86_64)
 	# These are the definitions specific to 64-bit systems
	LFLAGS = -L$(LIBDIR)/x86_64 -ltcod -ltcodxx -Wl,-rpath=$(LIBDIR)/x86_64
 else
	#These are the definitions specific to 32-bit systems
 	LFLAGS = -L$(LIBDIR)/i386 -ltcod -ltcodxx -Wl,-rpath=$(LIBDIR)/i386
 endif
 
SUFFIXES: .o .hpp .cpp
 
all: clean tuto
 
tuto:
	@$(CPP) $(SRCDIR)/*.cpp -o tuto $(CFLAGS) $(LFLAGS)
 
clean:
	@rm -f tuto

閱讀全文 »

Vim 打造 Linux C++ 編程環境-vimrc 基本設定

打算採用 Vim 作為 Linux C++ 程式開發環境的原因有兩個:

  • CodeLite IDE 工具的專案目錄實在編得蠻糟糕的。
  • Vim 的佔用資源小 (在我的 Chromebook/Ubuntu 就可以命列列模式執行並編譯 C++),可攜性高 (任何一種 Linux 系統下載馬上可以執行),擴展彈性高 (透過 plugin)。

而 Vim 的主要缺點就是 學習曲線高!

不過它比較能如倒吃甘蔗般,當習慣那些鍵盤操作後 (可能要好幾年),撰寫如 C++ 程式可塑性高太多了。

Vim 所有設定資訊均在於 .vimrc 檔案 (位於如 Home目錄下)。該設定檔的設定主要有兩個重點:

  • 編輯器的基本屬性設定。 (如語法高亮、顯示行號、狀態顯示...等。)
  • 外部擴展功能 (透過 3rd party plugin),如 nerdtree/taglist 插件的目錄結構/程式源碼的展現。

關於安裝多種 Plugin 的管理,一般會透過如 Vundle 這類插件管理工具來統籌管理所有插件。

個人目前的初始 .vimrc 設定內容,全係參考對岸所撰寫的文章:
 o Vim改變生活,插件改變Vim (1) — 認識Vim
 o Vim改變生活,插件改變Vim (2) — 認識Vim

執行 Vim 後所呈現的效果如下圖:
.vimrc plugn & 環境建置 版本一

閱讀全文 »

Lubuntu vim 安裝繁體中文幫助手冊

最近迷上使用 vim 作為 Linux C++ Coding 的 IDE 開發平台。

原因是 vim 可塑性與可攜性極高,只要在任何 Linux 平台如 Ubuntu 利用 apt-get install vim 即可馬上安裝完成;然後可以將自行整理的 .vimrc 設定檔/plugin 等放置於 GitHub 即可利用 git clone 回來本機內,實在是太過方便了,這得以實行:

Coding Everyone, Coding Everywhere.

不過我對 vim 的使用知識近乎零,而且初期的學習陣痛期會持續一段時間 (使用 vim 可能要堅持好幾年,然後才能倒吃甘蔗般的流暢自然),所以必然會時常需要查找相關使用說明。除了查找 Google 外,透過內建的說明文檔隨時查詢鍵盤指令那更是絕對需要的。

內建當然是英文原文,不過對岸已經有提供了簡體中文化的專案:Vim Chinese Documentation

我這裡參考了這一篇:Vim 中文用戶手冊(繁體字),然後自行至上述簡體中文站台下載最新版本的 Vimcdoc-1.9.0,再利用 ConvertZ 工具轉成繁體中文 (文檔內容),並打包成繁體中文安裝包上傳至 MEGA 供下載:vimcdoc-1.9.0_tw.zip

在 Lubuntu 環境下的安裝方式蠻簡單,只要將下載的檔案解壓縮至 /tmp/ 資料夾下,然後執行下列安裝:

$ cd /tmp/vimcdoc-1.9.0
$ chmod +x vimcdoc.sh
$ sudo ./vimcdoc.sh -i

因為是用 root 身分,所以安裝後直接執行 vim 後 (不需設定 .vimrc)按 :help 即可出現繁體中文幫助手冊;各文件主題,只要打上如 :help tutor 即可查看該主題的完整說明。

完全不會使用 vim 的新手,可以透過內建的教學,利用 30 分鐘的時間學習對 vim 的基本操作與使用。只要在 XTerminal 執行 vimtutor 即可進行教學說明 (全繁體中文說明)。

Lubuntu 14.04 暨 CodeLite開發環境安裝摘記

目的

在 Vmware 環境下,創建 Lubuntu 64bit 系統並安裝必要應用程式以及具有 C++ 的開發環境 (使用 Gnu C/C++ & CodeLite IDE)。

使用 Lubuntru 的原因

  • 輕量 (lightweight)且執行效能佳的作業系統,只要配置 2GB RAM,就可以運轉得相當順暢。
  • 可充分享用 Ubuntu 所有官方支持的套件與儲庫,擴展性極佳。

Lubuntu 執行 PaleMoon 與 CodeLite

Lubuntu Install

閱讀全文 »

RogueLike in Linux C++-安裝所需函式庫

參考教學:
Complete roguelike tutorial using C++ and libtcod - part 1: setting up

原文教學系列係以 libtcod 函式庫 為 RougeLike 核心開心的引擎。原文即說明了 libtcod 的主要功能:
libtcod is a free, fast, portable and uncomplicated API for roguelike developpers providing an advanced true color console, input, and lots of other utilities frequently used in roguelikes.

有個開源的即時戰略遊戲:ASCIIWar,竟然就是以 libtcod 所開發的 ASCII 字符純文字遊戲,但卻又能展現出即時戰略的效果。

首要安裝套件 (pre-requisite):

Ubuntu 14.04 需安裝 libsdl1.2debian 套件;Raspbian 則已預先安裝。

$ sudo apt-get install libsdl1.2debian

** 另外兩者尚須安裝 libsdl1.2-dev 套件 (如此編譯 libtcod 才不會有問題):

$ sudo apt-get install libsdl1.2-dev

SDL (Simple DirectMedia Layer) is a cross-platform development library designed to provide low level access to audio, keyboard, mouse, joystick, and graphics hardware via OpenGL and Direct3D.

閱讀全文 »

RogueLike in Linux C++-寫在前頭

我想再利用閒暇時間瞭解下 Linux 的程式開發,以俾得以對 Linux 系統底層有更進一步的應用與控制。因為未來開放式硬體的架構 (ex. Raspberry Pi, BeagleBoard, Cubieboard ...etc),必然是以 Linux 為開源系統,並以此為基準點,建立各類硬體裝置控制的應用。

我偏好採用 C++ 作為 Linux 開發的程式語言,畢竟 Linux 系統底層/服務 大都以 C/C++ (其實還是要當為兩種不同的語言,只是 C++ 可以很容易引用 C 的函式庫。)來開發的。再則:

  • 高移植性:重點在於函式庫的跨平台 (Windows/Linux ...)、跨硬體架構 (Intel/ARM-based CPU)!且太多開源各類的函式庫可資引用,方便太多。
  • High-Performance。
  • 物件化的始祖:畢竟我還是習慣採物件化的思維來設計與開發,具 OOP 的機制還是會比較直覺。

我希望初期先透過一個主題來持續學習與實踐 C++ 的開發 (先不需牽扯到系統底層處)。因為畢竟與工作無關,且是當成休閒嗜好的輕鬆態度學習的;所以我想乾脆就把 RogueLike 遊戲 的程式開發作為學習的標的。

因為我現在也正在玩 DCSS (Dungeon Crawl Stone Soup),而 RogueLike Game 不需著重在畫面音效等,僅需利用 ASCII 字符的格狀畫面來呈現即可,所以就不用考量到畫面效果的處理技術。另外一點很重要的是,大部分的 RogueLike 遊戲係以 Open-Source 連原始程式碼都免費釋出,還有許多教學資源可供充分的研究與學習。

我就打算以這一系列-Complete roguelike tutorial using C++ and libtcod,作為我學習以 Linux C++ 開發 RogueLike 遊戲的教案,然後逐步的把心得筆記下來。

總之,我是打算抱著很輕鬆的態度來學習 Linux C++ 的,應該是會視之為 long-term 的學習歷程。

閱讀全文 »

軟體思維顧問

專職軟體輔導與教育訓練的獨立顧問。輔導企業資訊單位如何有效組織系統開發與維護;輔導開發人員達成有效的專業分工。傳授如何把軟體作軟 (Keeping Software Soft)的技能,得以提昇系統的彈性/延展,並進而創造系統的再利用價值。

Personal