所以,我目前正在開發一個SDL2中的簡單項目,並且我正在艱難地探索一個對話樹的代碼。除此之外,我幾乎完成了一切。因此,讓我們從對話樹開始: 創建一個對話樹
因此,對話樹基本上是一個分支故事,用戶可以響應並影響要求得到不同結果的問題。這在遊戲中越來越受歡迎。
接下來我會解釋我所做的。我會通過向你展示我的代碼摘錄來做到這一點:
switch(faze){
case 1:
if(button1Press){
button1Press = false;
textToAdd += "That's nice, I'm glad to hear it.\n";
answer1TextToAdd = "As am I";
answer2TextToAdd = "How are you holding up?";
answer3TextToAdd = "Wassup with you?";
}else if(button2Press){
button2Press = false;
textToAdd += "What do you mean Meh?\n";
answer1TextToAdd = "Meh";
answer2TextToAdd = "Just; Meh...";
answer3TextToAdd = "I've been up and down recently.";
}else if(button3Press){
button3Press = false;
textToAdd += "I'm sorry, you wanna talk about it?.\n";
answer1TextToAdd = "No, I'm fine.";
answer2TextToAdd = "I'll live";
answer3TextToAdd = "Yeah...";
}
break;
case 2:
if(button1Press){
button1Press = false;
textToAdd += "Cool.\n";
answer1TextToAdd = "I am.";
answer2TextToAdd = "Totally.";
answer3TextToAdd = "Yup.";
}else if(button2Press){
button2Press = false;
textToAdd += "Wow.\n";
answer1TextToAdd = ":S";
answer2TextToAdd = "Yup.";
answer3TextToAdd = "I know.";
}else if(button3Press){
button3Press = false;
textToAdd += "Go on...\n";
answer1TextToAdd = "It doesn't matter.";
answer2TextToAdd = "I'm fine";
answer3TextToAdd = "Yeah...";
}
break;
所以,讓我解釋一下這個; faze是定義我們所在遊戲中的哪個點的變量,當按下其中一個按鈕時這個增量,「TextToAdd」不重要,但答案1,答案2和答案3是用戶3個可能的答案可以給。正如你所看到的,它只響應按鈕按下,用戶所說的不重要,響應完全基於哪個按鈕。這導致對話樹看起來更像這樣:
正如你所看到的,它忽略了問題,甚至是答案。我的引擎唯一要做的是按下哪個按鈕。
因爲我發佈了這個問題,我實際上意識到了解決方案,但我想知道是否有人會有更好的解決方案。 – genfy