具體實現思路:
ctalk類繼承視窗基類,裡面封裝了updata()和onrander()方法,裡面包含了結構體sarrtalk* m_parrtalk,用來存對話資料。
ctalk類控制對話的進行,以及資料的渲染。而對話的內容則存在相應的檔案之中,如npc的對話存在npc的配置表之中,哪個類需要對話,就讓這個類包含ctalk類的物件,由此完成對話。
ctalk類的**:
標頭檔案
#pragma once
struct sarrtalk
char arrtalk[10][128];
};class ctalk:public cwndbase
; ctalk();
~ctalk();
getter_setter(bool, istalked, m_bistalked);
private:
int m_nindex;//當前對話索引
int m_ntalklines;//對話條數
sarrtalk* m_parrtalk;
};
原始檔:
#include "stdafx.h"
#include "talk.h"
ctalk::ctalk()
ctalk::~ctalk()
//void ctalk::inittalk(sarrtalk* parrtalk, int ntalklines)
//void ctalk::updata()
if (key_down(vk_space)) }
void ctalk::onrander()
void ctalk::settalklines(int ntalklines)
此外:因為存放對話內容的二維陣列在作為引數傳遞時非常麻煩(c++只允許返回值為乙個值,不允許返回二維陣列),所以用乙個結構體存放對話的內容,ctalk類裡面包含了這個結構體的物件。
ctalk使用的例子(cmission類):
public:
ctalk* gettalk()//cmission類中包含了ctalk類的物件。
ctalk* getfinishtalk()
private:
ctalk* m_ptalk;
ctalk* m_pfinishtalk;
因為任務有兩段對話——接任務時的對話,提交任務時的對話,所以在cmission中宣告了兩個ctalk的成員。
在任務初始化的時候,一併把對話的內容也初始化
void cmission::initmission(smissiondt* data)
任務的配置表中寫入了任務對話資訊:
RPG遊戲的對話系統
rpg遊戲的對話系統 我要和各位談談角色扮 演遊戲中的最重要的乙個部份 那就是交談系統。若是各位 玩者接觸的角色扮演遊戲夠多的話,應該會知道在角色扮演 遊戲中有著單句式以及關鍵字兩種完全不同的交談系統,今 天我們就來看看這兩個不同系統。要怎麼分辨單句式和關鍵字系統呢?我們可以簡單的從在 遊戲中玩者和...
RPG遊戲的對話系統
我要和各位談談角色扮 演遊戲中的最重要的乙個部份 那就是交談系統。若是各位 玩者接觸的角色扮演遊戲夠多的話,應該會知道在角色扮演 遊戲中有著單句式以及關鍵字兩種完全不同的交談系統,今 天我們就來看看這兩個不同系統。要 怎麼分辨單句式和關鍵字系統呢?我們可以簡單的從在 遊戲中玩者和遊戲中的人物交談時是...
控制台小遊戲
二 怪物的攻擊方法 三 戰鬥的方法 總結學習小組開發合作乙個控制台小遊戲,參考 伏魔錄 的遊戲專案需求,完成控制台小遊戲專案。我在小組中主要負責玩家的角色和怪物之間戰鬥的 我的想法是玩家有乙個手動的攻擊方法,而怪物是隨機兩種攻擊的方法,兩者都有單獨的傷害被返回出來,再用乙個戰鬥的方法呼叫兩者的攻擊方...