Tahta artık kurulduğuna göre, tahta üzerine piyonlar yerleştirecek, bir piyonun belirli bir kare koordinatında olup olmadığını kontrol edecek ve tahtadan bir piyonu kaldıracaksın.
Eğitime aşağıdaki senaryoyla başla. Bir tile_coordinate verildiğinde, orada bir piyon olup olmadığını belirle ve varsa onu al. Fikir aşağıdaki gibidir:
Tahta, bir
creative_proppiyonları dizisi içerir.Mevcut piyonları yinele ve her piyon konumunu bir kare koordinatı olarak al.
Belirtilen kare koordinatında bir piyon varsa onu al.
Piyon yoksa fonksiyon başarısız olur.
Kare Koordinatı Eşitliğini Belirle
Bunun için iki tile_coordinate’ın eşit olup olmadığını test edebilme becerisine sahip olman gerekir. Özel kare koordinatı veri türümüz, Verse’ün yerleşik karşılaştırılabilir (comparable) türünün bir alt türü olmadığı için bu gereklidir. Sonuç olarak, iki kare koordinatının eşit olmasının ne anlama geldiğini manuel olarak tanımlaman gerekir. Bunu belirlemek için ilk olarak DataTypes modülünde bir AreTileCoordinatesEqual fonksiyonu oluştur:
using { /Verse.org/Simulation }
DataTypes<public> := module:
...
UtilityFunctions<public> := module:
...
Bu fonksiyon ancak ve ancak iki girdi kare koordinatının her bir bileşeni tamsayı olarak eşit ise başarılı olur.
Nesnenin Kare Koordinatını Al
Piyonlarla çalışma, bir piyonun konumunu kare koordinatı olarak almayı gerektirir. Bu amaçla, bir Kreatif nesnesinin konumunu kare koordinatı olarak almaya yönelik bir yardımcı fonksiyon da yaz:
using { /Fortnite.com/Devices }
using { /Verse.org/Simulation }
using { /UnrealEngine.com/Temporary/Diagnostics }
using { /UnrealEngine.com/Temporary/SpatialMath }
using { /Verse.org/Assets }
using { DataTypes }
using { UtilityFunctions }
board<public> := class(creative_device):
Bu fonksiyon ancak ve ancak girdi Kreatif nesnesinin dünya konumu, oyun tahtasında kare koordinatına dönüştürülebiliyorsa başarılı olur. Fonksiyon ayrıca, dünya konumunu tahta alanı konumuna dönüştürmek için daha önce tanımlanmış olan ToTileCoordinate fonksiyonunu kullanır.
Kare Koordinatından Piyonu Al
GetPawn fonksiyonunu yaz:
using { /Fortnite.com/Devices }
using { /Verse.org/Simulation }
using { /UnrealEngine.com/Temporary/Diagnostics }
using { /UnrealEngine.com/Temporary/SpatialMath }
using { /Verse.org/Assets }
using { DataTypes }
using { UtilityFunctions }
board<public> := class(creative_device):
Bu fonksiyon aşağıdaki adımları gerçekleştirir:
Tahta üzerindeki mevcut tüm piyonları yineler (iteration).
Piyonun konumunu kare koordinatı olarak alır.
Piyonun konumu ile girdinin konumu aynıysa piyonun konumunu bulunmuş bir piyon olarak depolar.
O konumda yalnızca tek bir piyonun bulunmuş olmasını sağlar.
O piyonu döndürür.
Bu fonksiyon ancak ve ancak girdi kare koordinatında tam olarak bir adet piyon varsa ve söz konusu piyon, Piyonlar dizisinden başarıyla alınırsa başarılı olur.
Piyonu Kare Koordinatında Ayarla
Tahta üzerine tek bir piyon yerleştirecek bir fonksiyon yaz. Basit olması için piyon olarak creative_prop objelerini, piyon örgüsü olarak da bir SM_Box_asset kullan. Bunları daha sonra kendi tercih ettiğin özel objelerle değiştirebilirsin. Fikir şöyledir:
Tahta bir
creative_proppiyonları dizisi tutar.Bir
tile_coordinateverildiğinde, orada zaten bir piyon olup olmadığını kontrol et.Piyon yoksa oraya bir tane yerleştir.
SetPawn fonksiyonunu yaz:
using { /Fortnite.com/Devices }
using { /Verse.org/Simulation }
using { /UnrealEngine.com/Temporary/Diagnostics }
using { /UnrealEngine.com/Temporary/SpatialMath }
using { /Verse.org/Assets }
using { DataTypes }
using { UtilityFunctions }
board<public> := class(creative_device):
Bu fonksiyon aşağıdaki adımları gerçekleştirir:
Girdi kare koordinatının tahta üzerinde olmasını sağlar.
O sırada girdi kare koordinatında olan tüm piyonları bulur.
Orada hiç piyon bulunmadığından emin olur.
Girdi konumunda bir nesne çıkarmayı dener.
Bu fonksiyon ancak ve ancak aşağıdaki durumlarda başarılı olur:
O sırada girdi kare koordinatında piyon yoktur.
Girdi kare koordinatı tahta üzerindedir ve dünya konumuna dönüştürülebilir.
Bir Piyonu Kaldır
Gerekli olan son fonksiyon, tahtadan bir piyonun kaldırılabilmesine yöneliktir. Bu fonksiyon, kaldırılacak Kreatif nesnesini alır; ardından onu tahtadan ve Piyonlar dizisinden kaldırır.
using { /Fortnite.com/Devices }
using { /Verse.org/Simulation }
using { /UnrealEngine.com/Temporary/Diagnostics }
using { /UnrealEngine.com/Temporary/SpatialMath }
using { /Verse.org/Assets }
using { DataTypes }
using { UtilityFunctions }
board<public> := class(creative_device):
Özet
Özetlemek gerekirse, bu sayfada aşağıdaki adımlar açıklanmıştır:
Tahta üzerine bir piyon yerleştir.
Tahtadan bir piyon al.
Bir piyonu tahtadan kaldır.
Dosyalar
using { /Verse.org/Simulation }
DataTypes<public> := module:
tile_coordinate<public> := class<concrete>:
@editable
Left<public>:int = 0
@editable
Forward<public>:int = 0
using { /Fortnite.com/Devices }
using { /Verse.org/Simulation }
using { /UnrealEngine.com/Temporary/Diagnostics }
using { /UnrealEngine.com/Temporary/SpatialMath }
using { /Verse.org/Assets }
using { DataTypes }
using { UtilityFunctions }
board<public> := class(creative_device):