Master
59.2997
programlama dillerinde olduğu gibi sphere emülatörü altında da dizi kullanımı son zamanlarda oldukça arttı. fakat genellikle düz mantık veya ayriyetten yazılmış fonksiyonlar ile kullanılıyor. sphere emülatörü altından dizi (array) kullanımında ekstra fonksiyonlara ihtiyacınız yoktur. anlatacağım yöntem ile tüm scriptlerinizde etkin olarak dizi yöntemini basit ve kullanışlı şekilde kullanabileceksiniz. önceden hazırlıklı olmak için aşağıdaki bağlantıda bulunan dökümandaki temel kullanım kısmını iyice anlamış olmanız gerekmektedir.

https://www.ultima-strike.com/dokuman/temel-string-tanimlamalari

öncelikle dizi tanımı ile konuya girelim. dizileri en basit haliyle verileri içlerinde barındıran kümeler gibi tanımlayabiliriz. örnek olarak isimler dizisi tanımlamak istiyorsunuz. yapmanız gereken isimler adlı bir küme oluşturup o kümenin elemanları olarak belirttiğiniz isimleri atamaktır.

örnek:

isimler = {ali,mehmet,ahmet}

burada basitçe 3 elemanlı bir küme oluşturmuş olduk. programlama dillerindeki dizi de hemen hemen aynı şekilde, aynı mantıkla işlemektedir. fakat bilinmesi gereken birkaç ufak ayrıntı ile mantık vardır. programlama dillerinde dizi tanımlaması dilin özelliğine göre değişmektedir. biz sphere emülatörü altından kullanacağımız için bundan sonraki örnekleri sphere altından göstereceğim.

sphere altında dizileri tanımlamak kısmına gelelim. belirttiğim gibi diziler benzer elemanları içerisinde barındıran kümelerdir. ilk olarak dizinin barındıracağı elemanları ve bu elemanların kullanım alanlarını iyi planlamamız gereklidir. her sistemde dizi kullanmak bazen gereksiz olabilir. basitçe normal değişkenler aracılığı ile yapabileceğiniz işlemleri dizi ile yapmamanızı öneririm.

sphere altından basitçe dizi tanımlamak için elemanların arasına virgül koymamız yeterlidir. örnek olarak üstteki örneği sphere altında tanımlamak için aşağıdaki kodları kullanabiliriz.

local.isimler = ali,mehmet,ahmet

bu şekilde yaptığımız bir tanımı bir dizi olarak ele alabileceğimiz gibi bütün halinde bir metin olarakta ele almamız mümkündür. her virgül ile ayrılan metin dizi olacak diye bir kural yoktur. dizi sizin kullanım yeriniz ve hayal gücünüze göre şekilenecektir. farklı tanımlamalar yapabilirsiniz fakat bunun sphere'da en temel kullanımı ve bence en sağlıklısı virgül kullanımıyladır.

tanımlanan dizideki elemanlara ulaşmak ve bu verileri gösterme kısmına gelelim. en başta da bahsettiğim gibi genellikle bu iş için ekstra fonksiyonlar yazılır, çizilir, kullanılır. fakat sphere altından ufak bir hile ile bunca zahmete girmeden basitçe verilerinize dilediğiniz gibi erişmeniz mümkündür.

dizi mantığında verilere erişebilmeniz için index mantığına aşinâ olmanız gerekmektedir. index basitçe elemanların bulunduğu konumların sayısal karşılığıdır. bu karşılık sayesinde elemanlarınıza rahatça erişmeniz mümkündür. örnek olarak döngü kullanımlarında çok işinize yarayacaktır. index numaraları 0'dan başlar. eklenen her eleman bir öncekinin bir numara fazlası ile numaralandırılır. yukarıdaki tanımladığımız basit dizide 3 eleman olduğunu görüyoruz. buradaki numaralandırmayı örnek olarak gösterecek olursak;
-ali 0 numara,
-mehmet 1 numara,
ahmet'te 2 numaralı index'e sahiptir. elemanlara erişimde bu numaralara dikkat edeceğiz.

burada dikkat edilmesi gereken basit bir nokta vardır. dizilerdeki eleman sayısı dizinin eleman sayısını verir, son index numarasını değil. son elemana ulaşmanız için bu rakamın bir eksiğini almalısınız, çünkü index numaraları 0'dan başlayıp birer birer artar. böylece 3 elemanlı bir dizideki son index numarası 2 olacaktır (0,1,2).

index numaralandırmasını da öğrendiğimize göre dizi mantığının artık basit şekilde kafamızda şekillenmiş olması gerekiyor. eğer kafanızdaki şekillendirme aşağıdaki resimdeki gibiyse dizi mantığını anlamaya yakınsınız, eğer bu şekilde değilse dökümanı baştan okumanızı öneririm.



evet geldik en can alıcı noktaya, verileri kullanmak. bunun için sphere'ın temel sözdizimlerinden bir tanesi olan args'ı kullanacağız. args bildiğiniz gibi girilen metinleri argüman olarak ele alıp çeşitli şekillerde kullanmamızı sağlar (bknz. temel string tanımlamaları dökümanı, temel kullanım bölümü). bizim elimizde şu an local.isimler adı altında tanımladığımız bir dizimiz bulunmaktadır. bu dizimizdeki elemanlara ulaşmamız ve veriyi işleyebilmemiz için öncelikle args'a atıyoruz.

args = <local.isimler>

bu atmadan sonra dökümanda da bahsettiğim şekilde veriyi dilediğimiz gibi şekillendirip kullanma imkanına sahibiz artık. dizilerimizde ayraç olarak virgülü kullandığımız için elemanlara ulaşmamız çok daha basit bir hal almış durumda. artık elemanlarımıza <argv[elemanın index numarası]> şeklinde erişme imkanımız var. mesela 1. eleman olan mehmet'e erişmek için aşağıdaki kodları kullanacağız.


args = <local.isimler>
sysmessage merhaba <argv[1]>

burada çıktı merhaba mehmet olacaktır, çünkü belirttiğimiz sözdiziminin 1. elemanına karşılık gelen veri mehmet olarak tanımlanmış vaziyette. ekstra hiç bir fonksiyon ve yöntem kullanmamıza gerek kalmadan basitçe bir dizi tanımlayıp buradan dilediğimiz veriyi aldık. gayet basit değil mi?

burada ayriyetten en çok karşılaşılan yanlışlardan birisini de belirtmek istiyorum. args'ı fonksiyonlarınızda, itemlarınızda, dialoglarınızda heryerde kullanabilirsiniz. args temel bir sözdizimi olduğundan kaynak belirtmeksizin anlık olarak kullanabilirsiniz.

basitçe dilimin döndüğü kadar (uykulu şekilde) sizlere sphere'da dizi kullanımını anlatmaya çalıştım. faydası olabileceğini düşündüğüm için böyle bir paylaşım yapma ihtiyacı duydum, umarım bazı konulardaki tabulara yıkmaya vesile olur. ilerleyen günlerde farklı kullanım şekilleri konusundaki anlatımlara devam edeceğim.
harikasın.
Expert
34.0001
eh arraycılardan ne farkımız kaldı şimdi ! anlatma şöyle ayrıntıları her yerde.

neyse...

"arraycount" diye yayılan function'ın yerine de <dargv> kullanılır.Virgülleri sayacaktır.Örneğin;

args= ultima-strike,en guzel, platform, digerleri, tu kaka
for 0 <dargv>
say <argv[<dlocal._for>]>
endfor
he is back :D
Master
59.2997
dediğim gibi tabuları yıkmak, yıktırmak lazım. her ne kadar oyun emülatörü de olsa işin doğrusunu göstermek, bir konuda bilgi vermek kadar güzeli var mıdır? insan kendisini farklı kullanım şekilleriyle karşılaşa karşılaşa, yöntem oluştura oluştura geliştirebilir. yoksa düz mantık öğrenip ömür boyu aynı mantıkta kod yazmakta pek maharet yok.

@kell
:) bilgi ve tecrübe paylaştıkça değerlenir. sen paylaşımını yap, zaten herkesin kullanıp anlamasını bekleyemezsin. şu ufak dökümanı ve anlatımı bile okuyan kişi bir elin parmaklarını geçmez. fakat "pire için yorgan yakmak" deyimini de unutup kimse okumuyor diye de bu tarz paylaşımları yapmayı da bırakmamak lazım.
Expert
34.0001
Farklı yöntemler, farklı yollar vb. bunlar pratik zekayı da geliştirir. Nasıl kaslar çalışarak gelişiyorsa, beynin de gelişmesi için çalışmaya ihtiyacı var. Sadece sphere için söylemiyorum. Örneğin; evinize giderken gözünüz kapalı geçebileceğiniz yollar yerine, bilmediğiniz yollardan gidin.Beyniniz bildiğiniz yolda çalıştığından daha çok çalışacaktır...
Silindi
Expert
34.0001
slothere.. :)

Üye Ol veya Giriş Yap

Bu forum başlığına mesaj atmak istiyorsanız hemen üye olun veya giriş yapın.