C++遊戲編程:《控制檯小遊戲系列》之《瓦解黑暗統治》

我們眼中的控制檯:黑暗的小屏幕中飄逸着幾行雪白的文字,如圖所示:



本系列”眼中“的控制檯概念圖:色彩豐富,如圖所示:

        從黑暗世界到色彩斑斕的確是有不少的進步,那麼概念圖中爲什麼只存在矩形這個形狀而沒有其他形狀呢?
        我們都知道控制檯是一個80*25的字符模式界面,控制檯是以字符爲單位的字符界面,而不像Windows程序那樣的以像素爲單位的窗體界面。即使能在控制檯構造比如圓形、不規則多邊形等其他形狀,也會發現構造出來的圖形鋸齒比較嚴重,影響了美觀。所以本系列遊戲以基本矩形爲繪圖基礎,所繪出來的界面大多是N個不同矩形組合而來的。儘管形狀少,可是與以往的控制檯相比,進步不少,最後你會發現由矩形構成的界面也不會太差!
        除了界面之外,字符也有了豐富的色彩,增強了畫面的表現力。
        讀者會發現,樓主說的只是一個概念圖,紙上談兵麼!非也,作概念圖只是用來對比實際效果,看控制檯能否做到那個程度,下面這個圖便是實際控制檯中實現的效果:

        細心的讀者會看到,控制檯的面貌與以往的稍微不同:除了畫面色彩豐富了控制檯題也變了,而這一切的變化,核心在於以下幾個操作控制檯的APIs:

函數名 參數描述 函數描述
HANDLE GetStdHandle(DWORD nStdHandle) ;   
nStdHandle的值類型:
STD_INPUT_HANDLE 標準輸入的句柄
STD_OUTPUT_HANDLE 標準輸出的句柄
STD_ERROR_HANDLE 標準錯誤的句柄
返回標準的輸入、輸出或錯誤的設備的句柄,
也就是獲得輸入、輸出/錯誤的屏幕緩衝區的句柄。
SetConsoleCursorPosition(void*,COORD);
void* 控制檯標準句柄
COORD 修改成員X與Y可以實現光標位置控制

API中定位光標位置的函數
SetConsoleTextAttribute(void*,unsigned short); void* 控制檯標準句柄
short 字體顏色屬性,具體值查看WINCON.H
API設置字體顏色和背景色的函數
SetConsoleTitle(__in LPCTSTR lpConsoleTitle); lpConsoleTitle 控制檯窗口的標題 設置控制檯窗口的標題
       有了這幾個API基礎,便能封裝這些API,構造一個方便在控制檯下繪圖的類,爲以後開發控制檯小遊戲作重要準備。受GDI+中的Graphics類的設計影響,我們也封裝一個簡單版本的Graphics類,用於繪製字符串、繪製矩形和填充矩形等基本功能,如要添加更多功能,就要讀者自行添加了。
        欲知簡單版Graphics如何,且看下回分解。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章