C++ basit kodlar ile yapılan diyalog sistemi

AlanTuring

Megapat
Katılım
4 Aralık 2014
Mesajlar
882
Makaleler
9
Çözümler
1
C++ konsol uygulaması projesinde kodladığım bir diyaolog sistemi. Cyberpunk 2077'yi referans aldım. CP77 aksine lifepath sistemi için daha güzel algoritmalar yapmayı düşünüyorum. Unreal 4'te kendimi biraz daha geliştirince direkt oyuna uyarlanmış halini atacağım. 10 dakikalık mini bir bar demosu çıkarmak istiyorum. Ayrıca karakter geçmişinin niteliklere yansıması gerektiğini düşünüyorum. Burada nitelikler sizin geçmişinize göre program tarafından ayarlanıyor. Bu nitelikleri kullandığımız diyaloglar yazıp kodlayacağım.

Bu içeriği görüntülemek için üçüncü taraf çerezlerini yerleştirmek için izninize ihtiyacımız olacak.
Daha detaylı bilgi için, çerezler sayfamıza bakınız.
 
Son düzenleyen: Moderatör:
Eline sağlık. Git reposu mevcut mu? Kodlarını incelemek isterim.
Github kullanmıyorum kod bloğu atıyorum.
[CODE lang="cpp" title="Bar diyaloğu"]#include <iostream>
#include <cmath>
#include <locale.h>

using namespace std;


string barmen1 = "Ne alirsin?";

void perk(string fonk,string name) {
string nitelikler[3];
nitelikler[0] = "güç"; nitelikler[1] = "zeka"; nitelikler[2] = "mühendislik";
int numaralar[3];
numaralar[0] = 1; numaralar[1] = 1; numaralar[2] = 1;
string life1 = "";

if (fonk == "corpo") {
numaralar[1] = numaralar[1] + 2;
numaralar[2] = numaralar[2] + 1;
life1="Ervelus ver. (Corpo)" ;}
else if (fonk == "nomad") {
numaralar[1] = numaralar[1] + 1;
numaralar[2] = numaralar[2] + 2;
}
else if (fonk == "streetkid") {
numaralar[0] = numaralar[0] + 2;
numaralar[2] = numaralar[2] + 1;
barmen1 = "Hoşgeldin,"+name+".Ne alirsin?";
life1 = "Nasil gidiyor james? (streetkid)";
}
else{}
cout << "Özelliklerin:" << endl;
for (int i = 0; i < 3; i++) {
cout << nitelikler + ":" << numaralar << endl;
}
cout << "akşam vakti lizzy bardasın ve barmenin yanına gittin.";
cout << "Barmen:"+ barmen1 << endl;
cout << life1 << endl;
cout << "Fark Etmez. (c1)" << endl;
cout << "Bira (c2)" << endl;
string cevap; cin >> cevap;

if (cevap == "c1" and fonk=="streetkid") {
cout << "Farketmez nasıl bir cevap lan? Bira veriyorum sana,bugün yorgunsun belli.";
}
else if (cevap == "c1" and fonk == "corpo") {
cout << "Bak dostum zaten şirketçilerle pek anlaşamam ve yorgunum iyisimi sen bana düzgün cevap ver";
}
else if (cevap == "c2") {
cout << "Peki biran geliyor." << endl;
}
else if (cevap =="s"){
cout << "her zamanki night city teraneleri sen nasılsın?" << endl;
}
else if (cevap == "c") {
cout << cevap;
cout << "Hıh sen burayı corpo plaza sandın sanırım şuan bir kenar mahalledesin dostum ervelus dediğini duymasınlar yoksa başına bela alırsın.";
}
}

int main()
{
setlocale(LC_ALL, "Turkish");
string isim;
cout << "Lutfen Karakter Gecmisi Gir (corpo,nomad,streetkid):"; string back; cin >> back;
cout << "Lutfen isim gir (tr karakter yok):"; cin >> isim;
perk(back,isim);
return 0;

}
[/CODE]
 

Başlangıç için güzel fakat gerçek bir sisteme entegre edilemez. Bu tip dialog işlemleri if else ile olacak iş değil. Veri yapılarını araştırmanı öneririm. Projeyi daha da ileri götürmek istersen karakter için bir sınıf ve karakterin nitelikleri içinde ayrı bir sınıf oluştursan daha iyi olur.
 
Yapay zeka yazdın sanmıştım.
 
Kullanmalisin, Git sistemi ve Github yazilimcilar icin asiri buyuk bir nimet. Sadece bir kod yukleme sitesinden de ibaret degil.
Aynen. Git, versiyon kontrol sistemidir. İşlerinizi ve proje yönetimi için kolaylık sağlar. Ekip işlerinde mükemmeldir.
Git demek sadece GitHub demek değildir. Github git kullanılarak oluşturulmuş web tabanlı bir sistemdir. Giti localde dahi kullanabilirsiniz.
 
Yanıtları dinamik yapsan çok daha iyi olur. Kişi zamanla niteliklerini geliştirebilir.
 
Ben de bu iş saatlerce süren oyuna nasıl uyarlanacak diye düşündüm sonra çıkamadım.Hemen araştıracağım teşekkürler. . Örneğin Mount and Blade diyalogları gibi bir sistem olsun. Bunları classlar ile mi kaydediyorlar?
 
Bu dialog class ile olacak iş değil. Çok farklı bir sistemleri vardır. Bir dialog başka bir olayı tetikliyor. Kafa yormak gerek.
class ları karakterler ve nitelikleri için kullan demiştim. Kodunda 3 farklı karakter ve özellikleri var. Özellikleri öyle dizi ile yapman mantıklı değil.
C++:
class CharAttribute {
    public:
        //getter setter functions
    private:
        int power;
        int penetration;
        int engineering;
        //vs
}
Bu şekilde tüm nitelikler bir sınıf içerisinde tanımlanır. Bu kullanımda oop ye uygun değil. Fakat başlangıç için iyi
 
Bu siteyi kullanmak için çerezler gereklidir. Siteyi kullanmaya devam etmek için çerezleri kabul etmelisiniz. Daha Fazlasını Öğren.…