原创 遊戲開發(三)——WIN32 黑白棋(三)——遊戲畫面的現實

整個遊戲分3部分介紹。 1、棋局的現實 2、AI的現實 3、遊戲畫面的現實 提供一下完整項目下載 這是第三部分:畫面的顯示 這部分其實就比較簡單的,說白了就是api的堆砌。 主要了解下windows的消息機制,以及怎麼畫圖 主要是

原创 工具類庫系列(二)-ExePath

第二個工具類:ExePath 其實不是一個類了,就是一個全局函數,用來獲取exe的當前路徑 項目中很多比如讀取config,讀取資源,生成log,都需要exe的當前路徑作爲參考 這個功能在windows/linux下有不同的實現方式:

原创 工具類庫系列(八)-WinService

第八個工具類:WinService 這是一個windows下用的工具類,用於將exe(通常是服務程序)註冊成windows系統服務 windows環境下運行的服務端程序,一般就會以系統服務的形式運行 1、在無人值守的情況下,可以設置,

原创 代碼自動生成工具(一)-Csv讀表代碼自動生成工具

之前提到了自定義的Csv格式的表格讀取的一個工具類CsvReader 這裏我們實現一個可以對任意符合我們人爲規定的格式的Csv文件,自動生成其對應的讀表代碼 本工具需要boost庫支持,本人用的是1.55.0 這裏首先定義Csv中支持

原创 工具類庫系列(五)-Timer

第五個工具類,Timer 用於毫秒精度的計時 本來想直接用的是boost的timer 但是boost的timer調用的其實就是clock() 而clock在多核多線程的環境下,如果需要計時的代碼段是多線程併發執行的話,計算出來的時間是

原创 工具類庫系列(七)-Logger

第七個工具類:Logger 就是用於輸出日誌的一個工具類,很簡單,就是封裝了一下boost庫的log 不熟悉boost的log庫的同學,可能就需要提前熟悉一下 本工具類,就是默認用exe的文件名比如“Test.exe”加上“_log

原创 工具類庫系列(六)-TimeTool

第六個工具類,TimeTool 用於秒精度的時間獲取:距離一個參考時間所經歷的秒數,用於時間戳 以及計算兩個時間戳,按照特定時間分割點分割後的差值 比如:一般遊戲項目中通常都會有這樣的需求: 某個任務,1周之內只能接取5次,周6早上6

原创 遊戲開發(三)——WIN32 黑白棋(二)——AI

整個遊戲分3部分介紹。 1、棋局的現實 2、AI的現實 3、遊戲畫面的現實 提供一下完整項目下載 今天是第二部分:玩家和AI 玩家主要是實現悔棋的功能 AI主要是搜索、最大最小算法,枝剪算法 1、每一步落子的步驟,爲了可以悔棋 typ

原创 遊戲開發(三)——WIN32 黑白棋(一)——棋局邏輯的設計

今天以黑白棋爲例,開始給一個win32的小遊戲設計, 分3部分介紹。 1、棋局的現實 2、AI的現實 3、遊戲畫面的現實 提供一下完整項目下載 其中第一部分爲黑白棋遊戲的主要邏輯: 1、棋盤,以及棋盤上的棋子的存儲形式。這裏用到了位圖。

原创 遊戲開發(一)——控制檯 貪喫蛇

貪喫蛇遊戲設計中主要需要注意的幾點: 1:座標的定義:定義爲左上角爲(0,0),向右爲x正方向,向下爲y正方向 2:蛇的設計, 蛇身:m_body,這裏用的是鏈表(是之前寫好的雙鏈表),一個節點就是蛇身的一節 每節蛇身的屬性包括x,y座

原创 自己的底層代碼庫(十七)——隨機數池

實際開發過程中,可能會遇到這樣的需求:在0到x範圍內,生成n(n < x)個不重複的隨機數。 這裏給出一個簡單的實現,其實就是以空間換時間的。 定義長x的數組,對這個數組採用洗牌法打亂順序,然後順序的取前n個。 Rand()一下則爲重新

原创 工具類庫系列(三)-IniReader

第三個工具類:IniReader 就是讀ini配置文件的一個工具類,很簡單,就是封裝了一下boost庫的ptree IniReader.h #ifndef __IniReader_h__ #define __IniReader_h_

原创 工具類庫系列(四)-CsvReader

第四個工具類:CsvReader CsvReader是用來支持讀取Csv表格用的 Csv格式其實就是一個有固定格式的txt,一行每一列用英文','隔開 遊戲項目中,很多遊戲靜態表。策劃提供的是Csv表格,可以用Excel編輯方便。客

原创 工具類庫系列(一)-StringTool

好久沒寫了,最近閒了下來,把這段時間的代碼整理整理,將常用的代碼按功能整理成一些靜態庫,便於以後複用 今天是第一個庫:libtool,其實就是一些工具類的集合 第一個工具類:StringTool std::string已經很強大了,

原创 工具類庫系列(九)-ReflectEnum

第九個工具類:ReflectEnum 用於枚舉的反射,需要boost庫spirit的支持 C++是不支持反射的,在一些日誌輸出的時候,輸出一個枚舉變量,只能輸出這個變量當前的值,而這個值對應的那個枚舉字符串是什麼,就不好輸出了,或者人