參考教學:
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

使用 Github 版控

所有程式源碼均放置於 Github 上,使用 Git Clone 指令即可下載最新版源碼。

$ git clone https://github.com/kenming/game-roguelike-cpp-tutorial.git

我現在是為每一個課程單元標注一個 標籤 (Tag)。可以執行 git -t 取得標籤列表,然後再用 git Checkout tag_name 即可取出所對應的 Tag 版本。

目前僅有一個 Tag: lession-01。

執行第一支程式-main.cpp

#include "libtcod.hpp"
 
int main() {
    int playerx=40,playery=25;
 
    TCODConsole::initRoot(80,50,"libtcod C++ tutorial",false);
 
    while ( !TCODConsole::isWindowClosed() ) {
        TCOD_key_t key;
        TCODSystem::checkForEvent(TCOD_EVENT_KEY_PRESS,&key,NULL);
        switch(key.vk) {
            case TCODK_UP : playery--; break;
            case TCODK_DOWN : playery++; break;
            case TCODK_LEFT : playerx--; break;
            case TCODK_RIGHT : playerx++; break;
            default:break;
        }
        TCODConsole::root->clear();
        TCODConsole::root->putChar(playerx,playery,'@');
        TCODConsole::flush();
    }
 
    return 0;
}

執行編譯:

$ make tuto

在專案目錄下執行 ./tuto 啟動畫面後,即可利用上下左右鍵讓 '@' 字符 (代表主角)移動。
Linux C++ for RogueLike Code

RogueLike in Linux C++-寫在前頭 & 文章目錄索引