C 控制台RPG遊戲 對話系統

2021-08-26 17:55:02 字數 1465 閱讀 1661

具體實現思路:

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遊戲的對話系統

我要和各位談談角色扮 演遊戲中的最重要的乙個部份 那就是交談系統。若是各位 玩者接觸的角色扮演遊戲夠多的話,應該會知道在角色扮演 遊戲中有著單句式以及關鍵字兩種完全不同的交談系統,今 天我們就來看看這兩個不同系統。要 怎麼分辨單句式和關鍵字系統呢?我們可以簡單的從在 遊戲中玩者和遊戲中的人物交談時是...

控制台小遊戲

二 怪物的攻擊方法 三 戰鬥的方法 總結學習小組開發合作乙個控制台小遊戲,參考 伏魔錄 的遊戲專案需求,完成控制台小遊戲專案。我在小組中主要負責玩家的角色和怪物之間戰鬥的 我的想法是玩家有乙個手動的攻擊方法,而怪物是隨機兩種攻擊的方法,兩者都有單獨的傷害被返回出來,再用乙個戰鬥的方法呼叫兩者的攻擊方...