[LinuxFocus-icon]
<--  | Ana Sayfa  | Eri�imd�zeni  | ��indekiler  | Arama

Duyumlar | Belgelikler | Ba�lant�lar | LF Nedir
Bu makalenin farkl� dillerde bulundu�u adresler: English  ChineseGB  Deutsch  Francais  Nederlands  Turkce  

Philipp Gühring
Philipp Gühring
<p.guehring/at/poboxes.com>

Yazar hakk�nda:
Philipp EDP dal�ndaki y�ksek teknik okulu yeni bitirdi. Futu reware 2001 adl� yaz�l�m geli�tirme grubu i�in art�k yeteri kadar zaman� olacak.

T�rk�e'ye �eviri:
Elif B��ra G�raks�n <guraksineb(at)yahoo.com>

��erik:

 

Dialog - diyaloglar i�in bir programlama dili

Josi, one of the customers

�zet:

Dialog bir programlama dili olup kullan�c�yla diyalog ortam� sa�lar. Bu �al��ma W�rstelstand ticari-sim�lasyonda kullan�ld�. Bu makale Dialog'un geli�imini ve uygulamalar�n� a��klamaktad�r.

_________________ _________________ _________________

 

Giri�

W�rstelstand, oyuncunun bir hotdog stand yapt��� ve m��terilerle irtibat�n neredeyse bir macera oyununa d�n��t��� bir Almanca ticari sim�lasyondur. Tam olarak bu m��teri irtibat� i�in a�a��daki ihtiya�lara cevap verebilecek bir diyalog dili geli�tirdim. S�ra telefon konu�malar�n� yazmaya geldi�inde diyalog motorunu yeniden kulland�m ve onu geli�tirdim. Oyuncu �oktan se�meli bir sistemle Leni karakterini kontrol etmektedir. M��teriler bilgisayar taraf�ndan sim�le edilmektedir. Oyuncunun amac� m��terilere tavsiyelerde bulunmak, onlara bir�eyler satmak ve onlarla konu�makt�r. M��teriler ac�kt�klar�nda g�r�nmekteler ve bu �ekilde devam etmektedir. Ayr�ca, oyuncu kendine �zg� hareket edebilmekte ve telefonundaki bir�ok numaray� arayabilmektedir.
 

Dialog dili

Diyaloglar Ascii dosyalar� olarak saklanmakta ve herhangi bir zamanda daha ileriki sat�rlara ge�i�in de m�mk�n olaca�� �ekilde sat�r sat�r yorumlanmaktad�r. Diyaloglar� basit bir text edit�r�yle olu�turduk. Dosyan�n ismi �sim.BAT (�rne�in: HALE.BAT) �eklindedir. Oyuncu (Leni) bi�ey s�yledi�inde:
Leni: Text
Leni: Gunaydin!
          Size ne verebilirim?
Leni: Su cocuklara bakin!
          Inanilmaz!
Leni konuþuyor
Su cocuklara bakin! Inanilmaz!
Yataktan mi dustunuz?
Müþteri konuþuyor
Ekmekli iki Frankfurter ve kola. Hadi! Acele et, yasli adam!
M��teri bir�eyler s�yledi�inde: (Kunde Almancada m��teri demek, Telefon telefon demek)
Kunde: Text
Kunde: Ekmekli iki Frankfurter ve kola.
               Hadi! Acele et, yasli adam!
Telefon: Futureware 2001, Philipp G�hring.
               Sizin icin ne yapabilirim?

Her normal diyalog �ununla biter:

Ende
(Ende Almancada son demek)

Basit bir �rnek:
Leni: Gunaydin! Ne istersiniz?
Kunde: �yi gunler! Bir K�sekrainer lutfen!
Leni: Bir saniye.
Leni: �ste geldi.
Kunde: Cok tesekkurler. Hoscakalin!
Leni: Hoscakalin!
Ende

Atlanacak hedefler sat�r�n ba��ndaki iki nokta �st�ste (:) i�aretiyle tan�mlan�r ve devam�nda atlanacak hedefin ismi gelir. Hedeflere Sprung komutuyla atlayabilirsiniz (Sprung Almancada atlamak demek):

:Hedef
//Atlama ornegi:
Sprung Hedef

�rnek
...
Leni: 1
//Once bunu yapariz
SPRUNG MENU_0
//Geri donecegim!
...
//Bu komutlar calistirilmaz!
Leni: 2
:MENU_0
//Geldim!
Leni: 3
Yorumlay�c� bu �rnekte ne yapmakta? �nce Leni: komutunu buluyor ve 1 tekstini veriyor. Bir sonraki sat�rda dikkate al�nmayacak bir yorum bulunmakta (Once bunu yapariz). Bir sonraki sat�rda Sprung komutu bulunmakta. Yorumlay�c� b�t�n diyalo�u tarayarak MENU_0 hedefini arar, birka� sat�r a�a��da bulur ve oraya atlar. Sonra tekrar bir yorum bulunmakta (Geldim!). Ve son komut ekrana 3 yazan Leni: komutudur. Yani, yorumlay�c�, �rnekte Leni:�2 komutunu ge�ti ve Leni, 2'yi s�ylemedi.

G�rd���m�z gibi, bir sat�r:

;(noktal� virg�l), //(�ift slash), (bo�luk), *(asterisk) ile ba�layan yorumlar diyalo�un anla��lmas�n� ve dok�mantasyonunu kolayla�t�rmakta ve yorumlay�c� taraf�ndan yok say�lmaktad�r. �rne�in:
// Bu bir yorumdur.
**************************************
*Bu sekilde birisi de yorum yapabilir*
**************************************
Yorumlar komutlarla ayn� sat�rda olmamal�d�r:
Leni: Art�k birsey anlamiyorum.  // YORUM YOK
Yorumlay�c� Art�k birsey anlamiyorum. // YORUM YOK metnini output yap�lacak metin olarak alg�lar!  

�oktan Se�meli Sistem

Çoktan Seçmeli
  • Ne is yapiyorsunuz?
  • W�rstelstand'i sever misiniz?
  • Size ne verebilirim?
Dialog �u sistemi icat etmektedir: Sistemde giri�lerin yerle�tirildi�i ve kullan�c�n�n cevaplama olas�l�klar�ndan olu�an bir liste bulunmaktad�r. Zaman� geldi�inde, men� ekranda g�sterilir. Bu durumda kullan�c� bir se�im yapar ve yorumlay�c�, program�n se�ilen giri�i i�eren k�sm�na atlar.

�ncelikle NEU ve ALT komutlar�yla giri�leri listeye eklersiniz. Her iki komuttan sonra gidilecek hedef ve giri� metni vard�r. Metin �ok uzun bir sat�r olursa sistem sat�r� otomatik olarak b�ler. MEN� komutuyla listenin tamam� g�r�nt�lenir ve kullan�c� bir giri� se�ebilir.



�imdi �� tip se�enek var:  

��erikten ba��ms�z konular

Bu tip tart��ma konular�nda kullan�labilir:
Neu satinalma, Her zamanki
gibi sicak olsun, tamam mi?
Neu is,Isler nasil gidiyor?
Neu dil,WIFI'deki dil kursuna devam
ediyor musun?
Neu aile,Ailen nasil?
Neu hava,Havadan memnun musun?
Men�
Bu tiple, oyuncunun s�rayla b�t�n giri�lerle oynamas� m�mk�n olmaktad�r. Se�enekler tekrar kullan�labilir. Se�ilmemi� giri�ler listede kal�r ve daha sonraki bir a�amada se�ilebilirler. �imdi yukar�daki �rnekten is'i se�elim:
:is
Leni: Isler nasil gidiyor?
Kunde: Cok yogun, her zamanki gibi.
Men�
Belirtildi�i gibi se�ilen sat�r s�ner. A�a��daki konular listede kal�r: Di�er iki tip se�enek:  

Opsiyonlar, ��eri�e ba�l� konu�ma

Kunde: Kac tane istersiniz?
Alt biraz, 10 Tane
Alt fazla, 20 Tane
Alt enfazla, 100 Tane
Men�

:biraz
//Kullan�c� 10 tane se�erse 

:fazla
...

:enfazla
...
�rne�in kullan�c� 20 tane se�erse, yorumlay�c� fazla hedefine atlar:
:fazla
Kunde: Emin misiniz?
Leni: Evet, 20 tane istiyorum.
Kunde: Ne zamana lazim?
Alt 1, Yarin
Alt 2, Yarindan sonraki gun
Alt 3, Birazdan
Men�
Son olarak iki tip birle�tirilebilir:  

��erik, Konunun de�i�mesi

Bu arada ba�ka bir ayr�nt�y� farkettik: Birisi partneriyle konu�mas�n� yapm�� olsa ve hala s�yleyecek bir�eyleri olsa bunu belirtir veya konuyu de�i�tirir. Birisi konuyu de�i�tirirse i�erik ge�ersiz olur. Bu sebeple birisi bir konuya devam edebilir veya ba�ka bir konuya atlayabilir. Bunu, Dialog'da �u �ekilde tamamlad�k: S�z, konular i�erecek �ekilde listeye normal bir opsiyon olarak yerle�tirilir. Kullan�c�n�n se�ti�inin yan�ndaki b�t�n opsiyonlar s�nerler, se�ilmemi� konular kal�r.
Kunde: Gecmisteki guzel gunleri hatirla.
Alt Hafiza,Evet, �imdi hat�rlad�m da...
MEN�
 

Uygulama

Belki de b�t�n bu farkl� kavramlar� nas�l prati�e d�kt���m�z� merak ediyorsunuzdur. As�l fark�n NEU veya ALT'�n kullan�m�nda yatmakta oldu�unu muhtemelen farketmi�sinizdir. E�er birisi listeye NEU komutunu kullanarak konu eklerse, se�ilmedi�i takdirde listede kal�r. Di�er taraftan, birisi ALT komutunu kullanarak listeye bir se�enek eklerse, se�ilip se�ilmedi�ine bak�lmaks�z�n otomatik olarak silinir.  

Birka� liste

�rne�in birisi bir konuyu konu�urken bir se�im yapmas� gerekirse, fakat men�deki di�er konular� g�stermek istemiyorsa ne olur? Bu ama�la bir de�il �� tane liste geli�tirdim:

Liste 0 opsiyonlar i�in �nerilir. Liste 1 genel konular i�in, �rne�in aile, i�, bo� vakit, yemek, ... E�er birisi i� hakk�nda konu�mak isterse ve i� konusu i�inde ba�ka konular varsa liste 2 se�ilir. Hale'in diyalo�unda bir �rne�imiz var. E�er yukar�daki �� listeden daha fazla listeye ihtiya� duyulursa, yorumlay�c�n�n kaynak kodundaki sabitin de�i�tirilmesi gerekir.

 

Farkl� listeler nas�l kullan�lmal�?

Ba�lang��ta liste 1 ge�erli listedir. LISTE komutuyla ba�ka bir liste ge�erli liste yap�labilir.
LISTE 0
LISTE 1
LISTE 2
Bu i�lemde b�t�n listelerin b�t�n giri�leri kendi listelerinde kalmaktad�r. NEU, ALT, MEN�, L�SCHEN gibi komutlar her zaman ge�erli liste ile ba�lant� kurar.  

Dialog'un eski s�r�m�

Dialog'un W�rstelstand i�in kullan�lan eski s�r�m�nde, se�me sistemi ufak bir farkla �al���yordu: ALT komutu yerine, NEU komutuna virg�lden sonra bir paragraf ekledik:
Neu Hafiza,�Yeah, �imdi hat�rlad�m da...
Liste 0 otomatik olarak silinen men�den sonrayd�. Bu y�zden sadece se�enekler i�in kullan��l�yd�; konular i�in de�il.

�imdi, olduk�a fazla liste kulland���m�z HALE.BAT ve PETER.BAT �rneklerine g�z atmay� �neririm.

L�SCHEN hedef
hedef i g�steren ge�erli listedeki her giri�i siler. �rne�in:
L�SCHEN aile
Ge�erli listedeki b�t�n giri�leri silmek i�in asterisk eklenir:
L�SCHEN *

Men� as�l listedeki b�t�n giri�leri g�sterir ve kullan�c�ya bunlar�n i�inden se�mesini sa�lar. Bundan sonra se�ilen giri� ve ALT komutuyla eklenen b�t�n se�enekler silinir. Son olarak yorumlay�c� buna g�re hedefe atlar. Listede tek bir giri�in olmas� durumunda, bu giri�in se�im oldu�u anla��l�r ve bu sebeple �oktan se�meli bir menu g�sterilmez. E�er listede giri� yoksa veya hedef bulunam�yorsa, yorumlay�c� MEN� den sonra bir sonraki sat�rla devam eder.

 

Aray�zler

Dialog kendi ortam�yla nas�l etkile�ebilmektedir, ortam�n� nas�l etkiler ve di�er diyaloglarla nas�l data de�i�imi yapar?  

Haf�za/Kay�tlar

W�rstelstand'da, her diyalog 256 kay�t kullanabilir. Bu kay�tlar�n herbiri -2 milyarla +2 milyar aras�nda de�i�en bir say� bar�nd�r�r. 256 tane kay�t 3 b�l�me ayr�l�r:

Sistem kay�tlar�

�lk 100 kay�t (0'dan 99'a kadar) sistem taraf�ndan saklan�r: Bunlar, diyalog ba�lamadan �nce de�erleriyle birlikte y�klenirler ve bu �ekilde diyalog ortam�nda etkile�ir. //S ile i�aretlenen b�t�n kay�tlar diyalo�un bitmesinden sonra analiz edilir ve kullan�l�r. Bu, diyalo�un etkisidir. W�rstelstand'�n sistem kay�tlar�n�n listesi:
1Event;� //olay numaras� (texte.h ye bak)
2geliefert;//S //0-10 ka� tane onluk teslim edilecek
3wtag;� //haftan�n g�n�
4tag;� //ay�n g�n�
5monat;� //ay
6jahr;� //y�l
7Datum;� //seri g�n� (1.1.1997 = 0)
8wetter;� //bug�n�n havas�
9konto;//S //banka hesab�
10kapital;//S //nakit
11ausgaben;//S //bug�n�n harcamalar�
12einnahmen;//S //bug�n�n gelirleri
13sterne;//S //hot-dog stand'in kalitesi (0-5 y�ld�z)
14wverkauf;� //bu hafta sat�lan �r�n say�s�
15weinnahmen;� //haftal�k gelir
16wausgaben;� //haftal�k harcama
170;//S //yeni gelir/masraf (diyalog sonucunda)
18Nachrichtenserie;� //hangi haber serisi(0=Elch,1=...)
19Nachricht;� //ge�erli serideki hangi haber(0=1.Tag,1=2...)
20LottoNr[0];� //ka� tane piyango numaras� kullan�ld�(0-6)
21LottoErgebnis[0];� //ka� tane piyango numaras� do�ruydu
22LottoGewinn[LottoErgebnis[0]];� //Leni ne kadar kazand�
23S.Image;//S //Leni'nin resmi
24S.Override;//S //Umursamama-Olay
25S.wverkauf[1];� //ge�en hafta sat�lan �r�nler
26S.weinnahmen[1];� //ge�en haftan�n geliri
27S.wausgaben[1];� //ge�en haftan�n masraflar�
28S.wverkauf[2];� //iki hafta �nce sat�lan �r�nler
29S.weinnahmen[2];� //iki hafta �nceki gelir
30S.wausgaben[2];� //iki hafta �nceki masraf
31S.NOverride;//S //yar�n�n �nemsenmeyecek olay�
32S.wetter_bericht;� //hangi hava tahmini
33Gesamtwert();� //hot-dog stand'in toplam de�eri
34Wetterbericht[S.wetter_bericht].Ereignis;� //hangi hava olay�
35Tageszeit;� //dakika olarak g�n zaman�
70..79Lagermenge� //stoklar
80..89Verkaufspreis//S //�r�n fiyat�
90..99Kaufmenge//S //sipari� miktar�

Dialog kay�tlar�

Sonraki 100 kay�t (100'den 199'a) herbir diyalog i�in �zeldir. Oyunun ba��nda s�f�ra ayarlan�rlar ve diyalog i�in b�t�n oyun boyunca s�reklidirler. savegames,..., de saklan�rlar ve sadece kendi diyaloglar�yla eri�ilebilirler. Sistem ve di�er b�t�n diyaloglar kay�tlar� okuyamaz/de�i�tiremezler. Birisi, diyalo�un ba�lang�c�nda birinin hangi diyalog kay�tlar�n� neden kullanmak istedi�ini belgelemelidir.

batch.cpp
// Musteri: Peter Hinzing
//
// Kayitlarin kullanimi
//[100] Ne siklikla buradaydi
//[101] Cep harcligi
//[102] Birkac olay
//[103] Random sayi: siparis
//[104] Random sayi: siparise cevap
//[105] Farkli diyaloglar: 5nci gunde is
//[106] Anlasma
//[107] Secildikten sonra oyun basliyor
//[108] Oyun.stake.tip
//[109] Oyun.stake.miktar
//[110] Oyun.sec.Peter
//[111] Oyun.sec.Leni
//[112] Hobby aktivasyonu
//[113] Home aktivasyonu
//[114] W�rstelstand hakkinda diyalog
//[115] toplam stok kola
//[116] cok fazla?*************************
//* henuz yapilmadi
Kay�t [100] de Peter hotdog stand�n� ne s�kl�kla ziyaret etti�ini hat�rl�yor. �lk ziyaretinde kendini tan�t�yor. 10uncu ziyaretinde dinleniyor ve resmi de�il. [101] de kendi cep har�l���n�, ...

Payla��lan Haf�za

Son 56 kay�t (daha fazla da olabilirdi, tam say�s� o kadar �nemli de�il) b�t�n diyaloglar aras�nda payla��lan haf�zad�r. B�t�n diyaloglar bu kay�tlara eri�ebilir ve b�t�n diyaloglar ayn� haf�zay� g�r�r. Bu sebeple bu kay�tlar�n kullan�m�n�n d�zenlendi�i merkezi bir nokta olmal�d�r. A�a��daki �� kay�t W�rstelstand'dan diyaloglar taraf�ndan kullan�lm��t�r (daten.h de belgeli):
[200]: Leni Hale ile g��men b�rosuna gidebilir
[201]: Leni read the dog's wanted circular
[202]: Leni Peter ile Stein-Schere-Papier oynad�! (k�t�!)
 

Olaylar

W�rstelstand i�in bir Olay sistemi geli�tirdik. Her Olay, merkezi bir dosyada koordine edilmesi gereken tek bir numaraya sahiptir. Olaylar a�a��dakileri tetikleyebilir: B�t�n bunlar nas�l yap�ld�?
�r�nler, m��teriler, telefon konu�malar� ve haber serileri i�in yap�lacak �ey olay�n numaras�n� ba�lama/biti� de�eri olarak uygun gelen dataya yerle�tirmektir.

Olaylar� nas�l tetiklerim?

Aktion ifade
// aktivasyon Cheats:
Aktion 3
// kay�t 100'deki olay�n aktivasyonu:
Aktion [100]
Bu Olaylarla ne yapabilirsiniz? A�a��da W�rstelstand'�n Olay listesinin bir k�sm� g�sterilmi�tir:
0Error/Never Olay 0 yakalan�yor ve b�rak�l�yor
1Initialising ba�lang��ta tetiklenir ve bir�ok �r�n�, m��teriyi,... aktive eder
2End oyunun sonunda tetiklenir
3activating FW-Cheat Bunu kim kodlad�?!?
4deactivating FW-Cheat Bu s�rr� sakla!
5Leni.competition.activating newspaper Leni'nin resmi olduk�a iyi-> yakla�an yar��mayla ilgili gazete makalesinin aktivasyonu
6Leni.competition.Zeitung->TelefonNr Gazete makalesi i�eri�e dahil etmek �zere telefon numaras�n� aktive ediyor
7Leni.competition.deactivating TelNr Telefon a�t�ktan ve her�eyi s�n�fland�rd�ktan sonra telefon numaras� deaktive ediliyor
8deactivating Hale Hale kendisini deaktive ediyor ��nk� Leni onu g�cendirdi.
9Hale recommends Josi Hale onunla ilgili konu�ur konu�maz Josi'yi active ediyor (K���k konu�ma �nemli!)
10deactivating Josi Josi kendisini deaktive ediyor
11deactivating Peter Peter kendisini deaktive ediyor
12Sepp Nachricht without Leni aktivieren Sepp yasal olmayan �retim �neriyor, Leni kabul etmiyor, b�t�n her�ey a��kta ve g�zler �n�nde oluyor.
13Sepp Nachricht with Leni aktivieren Leni yasal olmayan �retimi kabul ediyor, problemler takip ediyor
14lost game Postac� Gottfried oyunun sonunu ba�lat�yor
15won game Gottfried hot-dog stand'in de�erinin fark�na var�yor ve Leni kazan�yor
16Hale.news article Asyl activate Leni Hale'e ailesinden s�z ediyor, iltica ile ilgili gazete makalesi ba�lat�l�yor.
17Hale.news article->Telefonnr activate Gazete, �imdi kullan�labilecek telefon numaras�n� g�steriyor
18Hale->Zeitungsbericht->Telefonnr deactivating Konu�ma telefon numaras�n� deaktive ediyor
19Hale->Familie activating Hale'in ailesi iltica hakk� al�yor
20activating the spy Leni bir dedektif tavsiye edebilirdi fakat bu hi� prati�e ge�miyor.
33New products 1 (New supplier) Bu olay �r�n yelpazesini geni�letiyor
100won contest Leni yar��may� kazan�yor, m��teriler bunun hakk�nda konu�abilir, ...
101losts contest
102Lotteryprice Leni piyangoyu kazan�yor

G�r�ld��� gibi olaylar, oyunun mant���n� kurmada �ok g��l� ara�lard�r.  

Hesaplamalar

Rechne (Rechne Almancada hesaplamak demek) komutuyla matematiksel ifadeleri hesaplayabilir ve bir kay�tta tutabilirsiniz; �rne�in:
Rechne [100]: 20 + [30] * 10
Kay�t 30'un i�eri�i, 10 ile �arp�l�p, 20 ekleniyor ve kay�t 100'de saklan�yor.

A�a��daki matematiksel i�lemler yap�labilir:
��lem Notasyon �rnek ��z�m
Klammern(a)(10+20)*30900
Register[a][20] Kay�t 20'deki i�erik
Multiplicationa*b3*412
Divisiona/b10/52
Resta%b10%31
Additiona+b1+12
Subtractiona-b1-10
Zuweisung[a]:b[10]:20Schreibt in Stelle 10 den Wert 20
Vergleichea?bJa(1) oder Nein(0)
Ist gleicha=b10=20Nein(0)
Kleinera<b10<20Ja(1)
Gr��era>b[10]>[20]
ANDa&b1=1 & 2=2Wenn 1 gleich 1 ist UND 2 gleich 2 ist
ORa|b1=1 | 2=2Wenn 1 gleich 1 ist ODER 2 gleich 2 ist
Random numbera Z b1 Z 6 1 ve 6 aras�nda bir say� se�iyor

Kar��la�t�rmalar say�larla sonu�lan�r: DO�RU i�in 1, YANLI� i�in 0. Bunlar ayr�ca kay�tta da yaz�labilir. �fadeler aras�nda bo�luklar b�rak�labilir ( 10 + 20 ), fakat gerekli de�ildir (10+10).

En b�y�k geli�me, �imdi a�a��daki t�rden i�lemleri yapabilen matematiksel de�erlendiricinin geli�imiydi:

Kabul: [100]=5, [24]=14, 1Z6=2

[[100]+1]:((1Z6)*([24]>3)+10/2-10%5)
[5    +1]:((2  )*(14  >3)+10/2-10%5)
[6      ]:(2    *(1        )+5   -0   )
[6      ]:(2    *1          +5        )
[6      ]:(7                          )
[6      ]:7
��z�m: [6]:7 7 de�eri kay�t 6'ya yaz�l�yor.

 

Kay�tlarla etkile�im

Wenn komutuyla (Wenn Almancada e�er demek):
Wenn condition
then
kar��la�t�rmalar yap�labilir; �rne�in:
Wenn [100+1]>10
Kunde: Kay�t 101'deki say� 10'dan b�y�kt�r !
Wenn 1>1
Kunde: ERROR!
E�er ko�ul do�ruysa, yorumlay�c� bir sonraki sat�ra devam eder yoksa bir sat�r atlar. E�er ko�ul yanl��sa bir sonraki sat�r atlan�r. Bu atlamalarla birlikte kullan�labilir:
Wenn [102]<10
Sprung DAHA KUCUK
Wenn [102]=10
Sprung ESIT
Wenn [102]>10
Sprung DAHA BUYUK
...
:DAHA KUCUK
...
:ESIT
...
:DAHA BUYUK
 

Resimleri g�r�nt�leme

BILD expression
(Bild Almancada resim demek) �rne�in HALE.BAT dosyas�nda;
Bild 5
ge�iyor, HALE5.DAT (�zel bir resim format�) g�steriliyor. Bunun i�in bir click beklenir ve diyalog devam eder.  

Komut referans�

Daha iyi bir g�r�� kazanmak i�in:
// comment: KOMUT REFERANSI

Kunde: text M��teri bir�ey s�yl�yor
Tel: text Partneri bir�ey s�yl�yor
Leni: text Leni bir�eyler s�yl�yor
:target Yorumlay�c�n�n atlayabilece�i Hedef
Liste number Ge�erli listeyi yap�yor
L�schen * Ge�erli listedeki b�t�n giri�leri siliyor
L�schen target Ge�erli listedeki, hedefi g�steren b�t�n giri�leri siliyor
Aktion number Olaylar� tetikliyor
Ende Diyalo�u bitiriyor
Bild number Resmi dosya ismiyle birlikte g�steriyor NameNumber.dat
Sprung target Hedefe atl�yor
Neu target,Text Ge�erli listeye yeni konu ekliyor
Alt target,Text Ge�erli listeye yeni se�im ekliyor
Men� Men�y� g�sterip kullan�c�n�n se�im yapmas�n� sa�l�yor
Wenn condition Kar��la�t�rma (sonraki sat�rlara bak)
//then Do�ruysa, yorumlay�c� bir sonraki sat�ra ge�iyor
//else Yanl��sa, yorumlay�c� bir sat�r atl�yor
Rechne expression �fadeleri bir kay�t i�ine hesapl�yor
Bild expression Resimleri g�steriyor, click bekliyor
 

�oktan se�meli sistemlerin dezavantajlar�

 

Dialog Maker

Markus Muntaneau, diyalog geli�tirmenin daha kolay olaca�� Dialog-Maker ad�nda bir Delphi program� geli�tirdi. Fakat program hala tamamlanmad� ve bu y�zden �ok da yararl� de�il. Buna ra�men yaz�l�mc�lara g�z atmalar� tavsiye edilmektedir.

 

Programlamadaki incelikler

B�t�n W�rstelstand projesi yakla��k 10.000 sat�rl�k C(++) kodundan olu�tu�undan ve derleme zamanlar� hala kabuledilir oldu�undan, a��k bir mod�larizasyon yapmadan (tembellik i�te) bunun yerine Test-Include sistemini geli�tirdim: Mod�l kodu kendi kendine �al��abilen ve mod�llerin routin lerine ayn� zamanda bir test program� g�nderen bir .c dosyas�na entegre ediliyor. Bu da e�er ana mod�lde mevcutsa #ifdef taraf�ndan deaktive ediliyor. Bu �ekilde header dosyalar� saklan�yor ;-)

batch.cpp
#ifndef _DIALOG_H
#define _DIALOG_H

#ifndef MAIN_MODULE
  #define DIALOG_TEXT
  #define DEBUG
  //Gerekli Header dosyalari
  #include <stdio.h>
  //...
#endif

//butun diyalog routinleri
//..
S2 Dialog(char *Filename, TYP Array[])
{
  //...
}

#ifndef MAIN_MODULE
 //Test programlari icin hersey
TYP Feld[256];
int main(short argc,char *argv[])
{
  //Test programi
  Dialog(Filename,Feld);
}
#endif
wurst.cpp
#define MAIN_MODULE
#include "batch.cpp"
TYP Felder[10][256];
int main(short argc,char *argv[])
{
  Dialog(Filename,Felder[i]);
}

 

De�erlendirmeler

W�rstelstand sim�lasyonunun linux versiyonu Futureware da bulunabilir (http://poboxes.com/futureware). Dialog'un 1.1 versiyonu buradan (dialog-1.1.tar.gz) indirilebilir.
B�y�k bir istek olursa (yazara e-mail ler g�ndererek), Dialog'un pratik �rnekleriyle ilgili makaleler devam edecektir.  

Bu yaz� i�in g�r�� bildiriminde bulunabilirsiniz

Her yaz� kendi g�r�� bildirim sayfas�na sahiptir. Bu sayfaya yorumlar�n�z� yazabilir ve di�er okuyucular�n yorumlar�na bakabilirsiniz.




G�rsely�re sayfalar�n�n bak�m�, LinuxFocus Edit�rleri taraf�ndan yap�lmaktad�r
© Philipp Gühring
"some rights reserved" see linuxfocus.org/license/
http://www.LinuxFocus.org
�eviri bilgisi:
en --> -- : Philipp Gühring <p.guehring/at/poboxes.com>
en --> tr: Elif B��ra G�raks�n <guraksineb(at)yahoo.com>

2004-11-23, generated by lfparser version 2.50