Kendi Programınızı Yazın

Kendi Progr

Şimdiye kadar dergimizde olsun başka yerlerde olsun, birçok dökümle karşılaştınız. Bazılarınız belki kendileri de program yapmak istediler ama temel bazı bilgilerin yetersizliğinden dolayı bir yerde sıkışıp kaldılar. Bu yazıda sizlere bir program yaparken nelere dikkat etmeniz gerektiğini ve ne gibi değişik yollar izleyebileceğinizi anlatacağım.

Programlama çok güzel bir hobidir. Bilgisayarın, sizin istediğiniz bir şeyi yapmasını görmek oldukça zevklidir. Ama bir program yapmaya başlamadan önce, şöyle bir durup amaçlarınız hakkında düşünmeniz gerekir. Nasıl bir program yazacaksınız? Ne gibi yardımcı programlar kullanacaksınız? Projenizi tamamlamak için hangi aşamalardan geçeceksiniz? Bazı programcılar, program yazarken hep aynı yolu izler. İzledikleri yolu bir programcılık dersinde veya bir kitaptan öğrenmiş olabilirler. Ya da kendi kendilerini eğitip bir yol çizmiş olabilirler. Başka programcılar ise hemen bilgisayar başına geçip programı yazmaya başlarlar, ama bu arada program için gereken parçaların çoğu kafalarında oluşmuştur bile. Bu yazıda birkaç programlama stratejisini ele alıp, değişik sistemleri anlatacağız. Eğer henüz acemi bir programcılıkta hangi yolların tercih edildiğini göreceksiniz. Ortalama bir programcıysanız, daha büyük projelerle başa çıkmak için teknikler öğreneceksiniz. Zaten iyi bir programcıysanız, uyguladığınız yolları burada anlatacaklarımızla karşılaştırıp kendi yöntemlerinizin bir analizini yapma fırsatı bulacaksınız.

Bir Fikir Üretmek

Hemen herkes burada sıkışır. Program için bulanık bir fikirle işe atılmak yeterli değildir; programın tam olarak ne yapacağını tanımlamanız gerekir. Tecrübeli programcılar bu işi kafalarında çözümleyebilirler, ama saldırı planınızı kağıt üzerinde hazırlamak yararlı olacaktır. Bu planda programın özelliklerinin tam bir açıklamasını içermelidir. Kağıda örnek ekran düzenleri çizmek ve yardımcı ses efektleri düşünmek de yararlı olacaktır hiç kuşkusuz.

amınızı Yazın

Bir kaynak kitaptan bilgisayarınızın özelliklerini incelerken, aklınıza bir fikir gelebilir. Örneğin grafik chip'i VIC-IT'yi anlatan bir kitabı incelerken ekran kaydırma konusunda yeni bir teknik geliştirebilirsiniz. Ve bu tekniği kullanan bir program yapmak istersiniz. Bildiiğiniz başka grafik özelliklerini de ekleyince elinizde tamamlanmış bir program olur. — Bazen de bilgisayarınızın sınırlarını bildiğiniz için sıkışırsınız. O zamanlarda bilgisayar hakkında hiç fikir sahibi olmayan birisine danışın, çünkü onlar sizin gibi 8 sprite, 16, renk, üç ses kanalı ve 64 K hafıza ile sınırlı değildirler. Onların fikirlerini kendi amaçlarınıza uygulayabilirsiniz. Başka çevrelerden fikir edinmeye çalışın. Star Wars veya Total Recall'- da gördüğünüz bazı görsellikleri kendi bilgisayarınıza uygulamaya çalışın. Televizyonda haberlerin veya reklamların başındaki jenerikleri yapmayı deneyebilirsiniz. Fikirlerinizi gerçekleştirmekten çekinmeyin. Örneğin bir program hazırlarken yardımcı bir proğrama ihtiyaç duyarsanız (data hazırlayıcı veya satır silici gibi kısa programlar) bunları da siz yazın. Sizin ihtiyacınız varsa başkalarının da olabilir. ihtiyaç, keşfin anası sayılır. Bunların hiçbiri sonuç vermezse, bilinçaltınıza başvurun. Birçok güzel oyun fikri programcıların akıllarına uykudayken gelmiştir. Siz her ihtimale karşı, başucunuzda kağıt kalem bulundurun. Tüm fikirlerin pratik olmadığını da aklanızda bulundurun. Çok ilginç ve özel görünen bir fikrin, Commodore 64 gibi bir mikro bilgisayarda uygulanması olanaksız olabilir. Ama fikirler çoğu zaman bilgisayarınızca kabul edilebilecek boyutlara indirgenebilir. Ve yardımcı bir program hazırlarken, olmayan bir sorun için çözüm yaratmayın

Programlama Dili

Seçmek

Teorik olarak her program her dilde yazılabilir, ama bazı diller bazı işlemler için özel olarak yazıldıklarından bunları tercih edebilirsiniz. Örneğin COBOL dilinde bir oyun yazmak pek akıl karı değildir. Bir çok amaç için BASIC yeterli olacaktır. Programların hızlandırmak için compiler denen programları da kullanabilirsiniz. Hızlı oyunlar ve gelişmiş yazılımlar için en iyi çözüm makine dilidir. Commodore 64 ve 128 sahipleri oldukça şanslıdırlar. Çünkü bilgisayarları için, oldukça geniş bir spektruma yayılmış programlama dilleri bulunmaktadır: BASIC, makine dili, FORTRAN, COMAL, ADA, C ve daha başkaları. Ama 8-bitlik bilgisayarlar içen en uygun iki dil BASIC ve makine dilidir. Her iki dil de bilgisayarın kendi içinde vardır ve programlarınızın bir dergide yayımlanmasını istiyorsanız bu iki dilden birini tercih etmelisiniz. Ama yine de program yazmak için siz istediğiniz programlama dilini kullanın.

Yardımcı Programlar

Utility denen yardımcı programlar hayatı kolaylaştırmak için yazılmışlardır. Karşılaştırma programları, düzeltme programları, makine dili monitörleri ve BASIC genişletici paketler arasında doğru seçimi yaparsanız programlama süreniz yarıya inecektir. Bazı utility programları birkaç dil için kullanılabilirler. Örneğin SYSRES adlı program hem BASIC'te hem de makine dili programlarınızda size yardımcı olacaktır. Sprite editörleri, müzik programları ve karakter seti editörleri gibi utility'ler de kendi programlarınızda kullanacağınız bazı efektleri sizin için hazırlayacaklardır. Değişkenleri listeleyen, satırları otomatik olarak numaralayan ve gerektiğinde dökümünü alan, program çalışırken işlenen satırları gösteren, Simon's Basic ve SYSRES gibi utility'ler programlarınızı yazarken ve kontrol ederken size büyük kolaylıklar sağlayacaktır. Her makine dili programcısının iyi bir makine dili monitörü olmalıdır. Dergimizde yayınlanan assembler'lar ve monitörler işinize yarayacaktır. Eğer bulabilirseniz, programınızı satır satır işleyen bir monitör edinmeye çalışın. Eğer, Pascal ya da C gibi başka bir programlama dili kullanıyorsanız, paket içindeki yardımcı programları kullanmalısınız.

Kararlar, Kararlar

Program hakkında fikrinizi oluşturduktan ve programlama ortamınızı belirledikten sonra sıra asıl zor kararları vermeye gelir. İsteseniz de istemeseniz de her programcı bazı sınırlamalara uymak zorundadır. Zaman sınırlaması, donanım yetersizliği ve sizin şahsi becerinizin sınırları bunlara dahildir. Programlama hayatınızda, çok zor bir projeye erken başlarsanız çok yıpranırsınız ve bir süre sonra sıkılıp bırakırsınız. Gerileyin ve daha kolay bir yerden başlayın, Programınızın görünüşü ve işlevi tam olarak ne olacak? Programınızda grafik kullanacak mısınız? Eğer kullanacaksanız, ne tür? Sprite mı kullanacaksınız? Yoksa hi-res grafikler mi? Ya da değiştirilmiş karakter setleri mi? İşe başlamadan önce grafik konusunda bazı kaynaklara başvurun. Kullanıcı arabiriminden ne haber? Programınız bir arcade oyunuysa herhalde joystick kullanırsınız. Bir strateji oyununda joystick veya klavye kullanılabilir. Eğer programınız bir iş uygulaması ise mouse ve menüler kullanmayı tercih edebilirsiniz. Kattığınız çaba programın kullanılmasını kolaylaştıracak ve görsel olarak etkileyici olmasını sağlayacaktır. Programınızın kullanıma yatkın olup olmadığını anlamak için bilgisayarınızın başına bu konuda tecrübesiz birini oturtun. Bilgisayara alışkın olmayan kişiler hiç beklemediğiniz şeyler yapacaklardır. Programınızı herkesin kullanabileceğinden emin olmanız gerekir. Bunu kolaylaştırmak için hata mesajları ve yardım ekranları düzenleyebilirsiniz. İyi hazırlanmış bir yardım ekranı sayfalarca dökümana bedeldir.

Düzenleyin

Programınızı yazmaya hazır olduğunuzda nasıl düzenleyeceğinize de karar verin. Birçok programcı ana yazılımlarını, her biri kendi başına ayrı bir işlemi gerçekleştirecek olan alt rutinlere veya program parçacıklarına bölerler. Bu parçalar ana bir program altında toplanmadan kontrol edilebilir. Her program parçasını nasıl çalıştıracağınız çok önemlidir. Bazı programlar hızlı olabilmeleri için makine dilinde yazılmalıdır. Sprite animasyonu için gerekli olan veya fon müziğini çalacak programlar interrupt olarak çalışmalıdır. Özellikle hi-res ekranı, karakter seti ve sprite kullanan C64 programlarında hafızanın düzenlenmesi büyük önem taşır. 49152'den ($C000) başlayan 4K'lık boş alan genelde data saklamak için kullanılır. Ama eğer programınızda utility kullanacaksanız, birçok utility programının (mesela DOS Wedge) bu alanı kullandığını aklınızda bulundurun. Eğer hafıza kullanımınız karmaşık veya alışılmamış olacaksa bir harita hazırlamak size yardımcı olacaktır. Böylece her program elemanının hafızada nereye yerleşeceği rahatlıkla görülebilir. Yıllar boyunca programları düzenlemek için birçok yol geliştirilmiş ve öğretilmiştir. Bunların en popüler olan hiç kuşkusuz akış diyagramlarıdır. Günümüzde de oldukça yaygın olarak kullanılan akış diyagramlarının sistemi geometrik şekillere verilen çeşitli görevlere dayanır. Örneğin, program elipsle başlar, işlemler dikdörtgen, karar ifadeleri de eşkenar dörtgen olarak gösterilir. Bir başka organizasyon yöntemi de pseudocode denen (yalancı program olarak çevrilebilecek) bir sistemdir. Bu yöntemde ifadeler, Pascal ve C gibi yüksek sınıf programlama dillerinde uygulandığı gibi, düz yazı diliyle kısaca açıklanırlar. Bir sonraki yazıda vereceğimiz örnekte bu sistemin uygulamasını görebilirsiniz. Artık sıra yukarıdan aşağı, aşağıdan yukarı veya modüler programlama sistemlerinden birini seçmeye geldi. Programı yukarıdan aşağı düzenlerken, ana programın, akış diyagramıyla veya pseudocode ile bir taslağı çıkarılır. Ana program hazırlandıktan sonra bunun kullandığı alt programlar hazırlanır, tabi bunlarına kullandığı başka alt programlar da olabilir. Eninde sonunda dibe ulaşır ve detaylarla uğraşmaya başlanır. Aşağıdan yukarı programlamada ise önce, program için gerekli olduğuna inanılan alt programlar yazılır. Bu programlar sprite'ları halleden veya basit ses efektleri oluşturan kısa rutinlerdir. Daha sonra bunları birleştirdikçe, ana yapı ortaya çıkmaya başlar. Modüler programcılık yöntemi ise daha önce anlattığımız iki sistemin birleşmesinden oluşur. Bu yöntemde gereken rutinler ve arabirimler yazılır. Her rutin birleştirilmeden önce kendi başına test edilebilir. Program yazarken bu sistemlerden birini veya bir kaçını seçmek akıllıca olur. Eğer programın içinde kaybolursanız başka bir sistem seçebilirsiniz.

Son Ürün

Er veya geç programınızın bittiğine karar vereceksiniz. Son bir göz atın. Muhtemelen programlamanız sırasında çıkan bazı sorunları çözmüşsünüzdür. Bu çözümleri (daha da önemlisi çözüm metodlarını) daha sonraki programlarınızda da kullanmak üzere saklayın. Eğer programı kendi kullanımınız için yazdıysanız programınız bitmiş demektir. Yok programı arkadaşlarınızla paylaşmayı veya satmayı düşünüyorsanız programa bir beta-testi uygulamanız ve program hakkında açıklamalar yapmanız gerekir. Programı siz yazdığınız için kullanımı size gayet kolay gelir. Ama program beta-testini uygulayanlara da hitap etmelidir; beta-testi programı daha önce hiç kullanmamış birisi tarafından kullanım kolaylığını görmek için yapılır. Eğer testi yapanlar programınızı verimli olarak kullanmamışlarsa yazılımda biraz değişiklik yapmanız veya dökümana ağırlık vermeniz gerekebilir. Döküman her yazılım için çok önemlidir.

Bunları Çalıştırmak

Her işi olduğu gibi programlamayı da daha basit ve küçük parçalara ayırırsanız, sorunların üstesinden daha kolay gelirsiniz. Yapacağınız işin genel bir görünümünü kafanızda oluşturun ve daha sonra bunu alt gruplara ayırın. Bu bakış açısının programcılığa nasil uygulanabileceğini örnek bir C-64 programı yazarak göreceğiz. Bu arada da programcılığın bazı önemli noktalarına değineceğiz.

Fikir

Bir program yazarken atılacak ilk adım programın ne yapmasına karar bir vermektir. Uygulama amacıyla kısa bir BASIC program yazalım. Yazması kolay olsun diye de nispeten basit bir olan tuzak oyunu yazalım. Oyunun başlangıcında, iki oyuncu bir sınır tarafından çevrelenmiş oyun alanında bulunur. Oyun başlayınca iki oyuncu da arkalarında birer kuyruk bırakarak harekete geçerler. Oyunun amacı kendi kuyruğunuzdan, diğer oyuncunun kuyruğundan ve sınırdan sakınarak en uzun süre dolaşmaktır. Programın ne yapacağına karar verdikten sonra yardımcılarımızı edinelim. Programı sadece oyun amacıyla yazıyorsanız BDE yeterli olacaktır. Ama oyuna kendiniz de bir şeyler katmak isterseniz, SYSRES veya Simon's BASIC gibi utility programları *edinmek faydalı olur. Ayrıca yeni teknikler denemek için kaynak olarak da Programcının El Kitabı'nı kullanabilirsiniz.

Yapısal Düzenleme

Programı bilgisayar başına geçip de yazmadan önce bir taslak çıkarmamız gerekir. Bu taslakta, prog- . ramda kullanacağımız alt programları ve görevlerini saptar ve gösteririz. Unutmayın ki program ilerledikçe bazı parçalar eklenecek bazıları da silinecektir. Bu çok normaldir, o yüzden ilk denemenizde programınız çalışmazsa ümitsizliğe kapılmayın. Yapısal listeniz yol boyunca değişmelidir, değişecektir de. Bizim programımiz için satır satır şöyle bir düzenleme yapılabilir: 1. Değişkenleri tanımlama. 2. Oyun sahasını kurma. 3, Son raund mu? Evetse 15. adıma git. 4. Birinci oyuncunun joystick'ini kontrol et. 5. Birinci oyuncunun yerini değiştir. 6. Birinci oyuncu çarpışıyor mu? 7. Çarpışma varsa, puanı ve raund sayısını yenile, 2. adıma geç. 8. Çarpışma yoksa birinci oyuncuyu hareket ettir. 9 İkinci oyuncunun joystick'ini kontrol et. 10. İkinci oyuncunun yerini değiştir. 11. İkinci oyuncu çarpışıyor mu? 12. Çarpışma varsa, puanı ve raund sayısını yenile, 2. adıma geç. 13. Çarpışma yoksa ikinci oyuncuyu hareket ettir. 14. 4. adıma git. 15. Oyun sonu rutini.

TEL: 159 16 79

TEL: 130 06 04

Montana

Eğer bir akış diyagramı hazırlamayı biliyorsanız, yapısal düzenlemeyi böyle yapmayı tercih edebilirsiniz. Programda kullanacağınız rutinlerin neler olacağını belirledikten sonra işiniz oldukça kolaylaşır. Eğer bir rutinin nasıl yazılacağından emin değilseniz, benzer örnekleri taşıyan kitaplara başvurun.

Programın Yazımı

Bu bir oyun programı olduğuna göre, yukarıdaki aşamalardan en önemlisi ikincisidir, yani oyun alanının kurulması. Başlayalım bakalım. Öncelikle ekran haritası (kullanıcı kılavuzunda bulunmaktadır) yardımiyla, oyun alanını aklınızda canlandırdığınız gibi çizin. Oyun alanı, üst ve altta skor yazılacak iki satır boş bırakılmak suretiyle, tüm ekranı kaplayan bir dörtgen olacaktır. Oyuncuları belirten karakterler, oyuna nasıl başlanacağını bildiren bir mesajla birlikte ekrana basılır. Bundan sonra ekran düzeni belirlenmiş olan oyun alanı ekrana yazılir (140-260. satırlar). Programda çerçevenin, ekranın ve oyuncuları renkleri değişkenlerle tanımlanmıştır. Böylece, istediğiniz zaman oyuna değişik bir hava vermek için bu sayıları değiştirebilirsiniz. Programın kalanı bu rutin üzerine kurulur. Programda satır satır REM açıklamaları olduğu için anlamakta çok zorluk çekmezsiniz sanırız.

Programın Test Edilmesi ve Geliştirilmesi

Programı bir kez çalıştırdıktan sonra, artık hataları düzeltme ve programı geliştirme üzerine çalışın. Oyuna ekleyebileceğiniz bir kaç değişik özellik olabilir. Örneğin, ses, değiştirilmiş karakterler ve oyun için değişik özellikler (değişik hızlar, oyun alanında rastgele ortaya çıkan engeller). Eğer oyunu yavaş bulduysanız hızlandırmak için birkaç yola başvurabilirsiniz. Bütün değişkenleri oyunun ana döngüsü içinde tanımlayabilirsiniz (300-400. satırlar). Ama en yük-

- sek hızı elde edebilmek için tüm oyunu makine dilinde yazmanız gerekir. Eğer makine diline yabancıysanız, böyle bir program, işe başlamak için idealdir. Tüm programı yazmak yerine kısa rutinler yazarak işe başlayabilirsiniz.