Commodore sayı 13, sayfa 37

Bu sayfadaki yazılar

Sayfanın metni

Sayfa 37

0) Eğer bir hücrenin toplamı 0 ise bir sonraki nesil için de 0 canlı olsun. 1) Eğer bir hücrenin toplamı 1 ise bir sonraki nesil için de 2 canlı olsun. 2) Eğer bir hücrenin toplamı 2 ise bir sonraki nesil için de 1 canlı olsun. 3) Eğer bir hücrenin toplamı 3 ise bir sonraki nesil için de 3 canlı olsun. 4) Eğer bir hücrenin toplamı 4 ise bir sonraki nesil için de 2 canlı olsun. 5) Eğer bir hücrenin toplamı 5 ise bir sonraki nesil için de 0 canlı olsun. 6) Eğer bir hücrenin toplamı 6 ise bir sonraki nesil için de 1 canlı olsun. 7) Eğer bir hücrenin toplamı 7 ise bir sonraki nesil için de 3 canlı olsun. 8) Eğer bir hücrenin toplamı 8 ise bir sonraki nesil için de 2 canlı olsun. 9) Eğer bir hücrenin toplamı 9 ise bir sonraki nesil için de 3 canlı olsun. Şimdi bu beş hücrenin gelecek nesildeki durumunu gözönüne alalım. İlk hücrenin içinde 2 canlı var. Solunda ve sağında ise 0 canlı. Toplamı 2 eder. İkinci kurala bakıyoruz, sonuç 1. Yani bir sonraki nesilde bu hücrede 1 canlı olacak. Aynı işlemi üçüncü hücre için yaparsak, 0+3+1=4 sonucunu ve dördüncü kuralda da 2 sayısını buluruz. Demek ki bu hücrenin canlı sayısı bir sonraki nesilde bir azalacakmış. Tüm çizgi için hesaplamayı yaparsak elde edeceğimiz yeni nesil şöyle olacaktır:

10213

Aslında kolay, değil mi? Zaten tüm bu işlemleri bilgisayar yapacak. Şimdilik...

Eğer C-64'ün çokrenkli grafiğinde bize sunduğu 160*200 noktalık grafiği ve 4 renk özelliğini kullanırsak ne olur? Her nesil bir grafik satırı olarak gösterilebilir ve her değişik canlı sayısı değişik bir renk anlamına gelir. Böylece bir defada, 200 nesil boyunca sistemin geçirdiği değişimi bir anda görebiliriz. Ve tüm bu işlemin sonucunda, inanılmaz güzellikte görüntüler elde etmek mümkün. Gelelim programımız hakkındaki teknik bilgilere (programın kendisini Döküm Eki'nde bulabilirsiniz). Programımızın ana iskeletini, MDE ile yazacağınız kısa bir makine dili programı oluşturuyor. Tüm çizim ve hesaplama işlemi bu program tarafından yapılıyor. Bu nedenle de, her ekran 4 saniyede hazırlanıyor. Eğer BASIC kullansaydık (hattâ SIMONS' BASIC), bu süre 25-30 dakika olacaktı. İşte makine dilini öğrenmeniz için bir sebep daha! Ancak bu rutini SYS 49152 ile çağırmadan önce bazı hazırlıklar yapmanız gerekiyor. Hücrelerin ilk nesildeki durumunu ve kullanılacak kuralı saptamak lazım. Bunun nasıl yapıldığını da örnek demo programlarını inceleyerek görelim. YAŞAM DEMO 1 programı önce, POKE 56,32 ile kullanacağı hafıza sınırını aşağıya indiriyor. Bu çok gerekli, yoksa programınız ve değişkenler grafik tarafından silinebilir. Sonraki işlem, yaşam çizgisinin ve kuralın hafızada yerleştirilecekleri adreslerin başlangıçlarının saptanması. Yaşam çizgisi, $5000 adresinden başlar ve bunu takip eden 159 byte boyunca devam eder. Makine dili programı, ilk nesille ilgili bilgiyi bu bölgeden okur. Kural ise $4000 ve bunu takip eden 9 byte içinde yeralır. Bir kez daha tekrarlayalım, tüm bu byte'ların içine POKE ile 0-3 arası sayılar yerleştirilmelidir. İlk satırın son komutu, bilgisayarın rasgele sayı üretimini yeniden başlatıyor, 20-23 arası satırlar, çizim renklerini ayarlıyor. Tesadüfi olarak birbirinden farklı üç renk seçiliyor. Dördüncü renk hep siyah olarak kalacak ve boş hücreler bu renkle çizilecektir. 25. satır, kuralın belirlendiği yer. Dikkat ederseniz, kuralın ilk elemanına 0 konuyor. Bu genelde daha iyi sonuçlar elde etmek için yapılıyor. İsterseniz değiştirip ortaya çıkan sonuçlara bir bakın. Kuralın geri kalanı gene tesadüfi olarak belirleniyor. İsterseniz, YAŞAM DEMO 2'de olduğu gibi DATA satırlarından da okuyabilirsiniz. 30. satır ise yaşam çizgimizin ilk halini belirliyor. Gene dikkat ederseniz, en baştaki ve en sondaki hücrelere 0 konuyor, geri kalanları tesadüfen belirleniyor. Böylece, grafiğimizin sağ ve sol kenarlarında bir tür çit yaratmış oluyoruz. Siz isterseniz değiştirin. Örneğin, ikinci örnekte tüm çizgi sıfırlanıyor, sadece ortasına 2123 dizisi yerleştiriliyor. Sonuç oldukça ilginç. Bu arada RND(8)*4 komutuna açıklık getirelim. Bu işlem 0-3.999999 arasında bir sayı yaratır. POKE komutu ile kullandığımız için, bu sayının tamsayı kısmı kullanılır, ki bu da bize 0-3 arası bir sayı verir. Bizim istediğimiz de buydu zaten. 40. satırda makine dili rutin çağırılıyor. Bu rutin, ekranı siliyor, grafik ekranına geçip multicolor'u açıyor, renkleri ayarlıyor ve çizimi yapıyor. Tüm programın SUPER ASSEMBLER dökümü açıklamalı olarak verilmiştir. Gene bu sayımızda verdiğimiz C-64 İLE GRAFİK yazısının ışığı altında inceleyip, istediğiniz değişiklikleri yapabilirsiniz. 50-60 arası satırlar, grafik çizimi bitince sizin bir tuşa basmanızı bekliyor. Eğer boşluk tuşuna basarsanız yeni bir grafik çiziliyor. Başka bir tuşa basarsanız 70-80 arası satırlarda grafik ekranı ve multicolor kapatılıp yazı ekranı normale döndürülüyor. Ve program bitiyor. Burada, isterseniz yeniden 40. satıra atlayarak, sistemin bir sonraki 200 nesilini de görebilirsiniz. Ama bunun için programa bir GOTO 40 eklemeniz lazım.

Klavyeyle gezinmek için ← ve → tuşları.