Programlamada bazı durumlarda ekrandaki nesneleri eşit aralıklarla dizmeniz gerekebilir. Bunu tek tek elle yapmak he zordur hem de çok zaman kaybettirir. Bunun için aşağıdaki gibi bir algoritma geliştirilip buna göre kod yazılırsa birçok açıdan işimiz kolaylaşır.
Buradaki amacımız kullanıcıdan istenecek satır ve sütun sayısına göre bir nesnenin kopyasını çıkarıp ekranda satır ve sütun sayısına göre eşit aralıklarda dizmektir.
Bu programı Scratch'te yapacağımız için öncelikle Scratch'teki standart koordinat ölçülerini bilmemiz gerekiyor. Scratch ekranında yatayda 480 piksel dikeyde de 360 piksel vardır. Scratch ekranının koordinat değerleri aşağıdaki resimdeki gibidir.
Oluşturacağımız program için kullanacağımız değişkenler aşağıdaki gibidir:
ilk_x: Oluşturulacak ilk nesnenin x koordinatı
ilk_y: Oluşturulacak ilk nesnenin y koordinatı
aralik_x: İki nesne arasındaki yatay uzaklık
aralik_y: İki nesne arasındaki dikey uzaklık
yatay_n: Yataydaki sıra sayısı
dikey_n: Dikeydeki sıra sayısı
sayac_x: Yataydaki nesneleri dizmek için kullanılacak sayaç
sayac_x: Dikeydeki nesneleri dizmek için kullanılacak sayaç
ilk_kontrol: Oluşturulacak ilk nesneyi belirten değişken
Örneğin 4x3 nesnenin sıralandığı bir ekran görüntüsünde bu değişkenlerden bazılarını gösterecek olursak:
Burada;
yatay_n=3
dikey_n=4
tür.
Nesneler arası yatay uzaklık değeri olan aralik_x
aralik_x = 480/(yatay_n+1) formülüyle hesaplanır çünkü diyelim ki yukarıdaki gibi dikeyde 4 sıra varsa yatay uzunluk 5 eşit parçaya bölünmektedir.
Nesneler arası dikey uzaklık değeri olan aralik_y
aralik_y = 360/(dikey_n+1) formülüyle hesaplanır çünkü diyelim ki yukarıdaki gibi yatayda 3 sıra varsa dikey uzunluk 4 eşit parçaya bölünmektedir.
Programda 2 nesne vardır. Bunlar soruyu soran karakter ve kopyalanıp yerleştirilecek nesnedir. Buna göre
Soruyu soran karaktere verilen algoritma şu şekildedir:
1.Başla
2.ilk_x, ilk_y, aralik_x, aralik_y, yatay_n, dikey_n değişkenleri 0'la
3.Sor "Satır sayısı kaç?"
4.Cevabı yatay_n değişkenine aktar
5.Sor "Sütun sayısı kaç?"
6.Cevabı dikey_n değişkenine aktar
7.yatay_n >0 ve dikey_n >0 ise
8. aralik_x = 480/(yatay_n+1)
9. ilk_x = -240 + aralik_x
10. aralik_y = -360/(dikey_n+1)
11. ilk_y = -180 + aralik_y
12. "yap" haberini sal
Kopyalanıp dizilecek nesnenin algoritması ise şu şekildedir:
1.Başla (Yap haberi gelince)
2.Boyutu ayarla
3.Görün
4.x= ilk_x, y=ilk_y konumuna git
5.ilk_kontrol, sayac_x, sayac_y değişkenleri 0'la
6.Başla (Yap haberi gelince)
7.Boyutu ayarla
8. sayac_y = dikey_n olana kadar tekrarla
9. sayac_x = yatay_n olana kadar tekrarla
10. sayac_x = sayac_x + 1
11. ilk_kontrol>0 ise
12. kendi ikizini yap
13. ikiz olarak başladığımda; x=ilk_x+(sayac_x-1)*aralik_x, y=ilk_y+sayac_y*aralik_y konumuna git
14. ilk_kontrol = ilk_kontrol +1
15. sayac_y = sayac_y + 1
16. sayac_x = 0
Özetle,
Yukarıdaki algoritmalara göre önce kullanıcıdan satır ve sütun sayıları istenecek, nesneler arası yatay ve dikey uzaklıklar hesaplanacak, yatay ve dikey uzaklıklarak göre ilk oluşturulacak nesnenin koordinatları olarak ilk_x ve ilk_y değişkenleri hesaplanacaktır. Daha sonra bu koordinatlarda ilk nesne oluşturulacaktır. İlk nesne en alt satırda en solda olan nesnedir. Daha sonra sırayla en alt satırdan başlayarak nesnelerin soldan sağa doğru kopyası çıkarılacak ve hesaplanan koordinata göre yerleştirilecektir.
Bu etkinliğin Scratch'te yapılmış tam haline ulaşmak için aşağıdaki bağlantıya tıklayınız.
https://scratch.mit.edu/projects/349093641/
Eğer siz daha başka ve kısa bir algortima oluşturabilirseniz yorumlarda paylaşmanızı bekliyoruz.