Bu sayfadaki yazılar
Sayfanın metni
Sayfa 83
BASIC'çiler sıkı durun başlıyoruz. Bu ayki konumuz dosyalamalar. Geçen aydan takip edenler hatırlayacaklar, dosyalamalarda karşılaşılan bazı sorunlara değinmiştik. Çözüm yollarını aramak ise bu aya kalmıştı. Kısaca tekrar edelim:
Amiga Basic ile kullanılabilen iki tür dosyalama var. Bunlardan birincisi ile dosyayı nasıl kaydetmişsek aynı şekil ve sırada geri alabiliyorduk. Sıralı veya Sequential adı verilen bu tür dosyalamanın hiç sorun çıkarmadan kullanılabildiğini anlatmış ve örnek vermiştik. İkinci tür dosyalama ise, bize bazı imkanlar sunuyordu. Random Access, rasgele erişim adı verilen bu dosyalama tekniği ile diskete belirli bir düzene (formata) uyan bilgi paketleri yerleştirebiliyor ve büyük bir dosya içerisinden istediğimiz pakete kolayca (o kadar kolay mı değil mi göreceğiz daha!) erişebiliyorduk. Bilgisayarınız ile basit programlar yapmak istiyorsanız, er veya geç bu tür dosyalama ile halledilebilecek programlar yazmak isteyeceksiniz. Bu tür ihtiyaçların en klasikleri: İsim listeleri, telefon defterleri veya stok defterleri tutmaktır.
Kağan iyi güzel de, geçen yazıda bize bir sürü sorun anlatmıştın diyeceksiniz. Doğru, ama sorunlarla karşılaşabilmek için ilk önce programımızın çatısını oluşturalım. Her zaman yaptığım gibi uzun dökümler vermekten kaçınmak istiyorum. Bu yüzden programı bölüm bölüm oluşturacağız. Tüm işlemleri GOSUB ile çağrılan ve RETURN ile biten bir altprogram şeklinde yazacağım.
Programımızla bir telefon defteri yapmak isteyelim. Basit olması açısından defterde sadece telefon sahibinin ismi, soyismi ve telefon numarası bulunsun. İlk belirlememiz gereken, dosyamıza ait bir bilginin ne şekilde ve ne büyüklükte temsil edileceği. Dosyamızda üç adet büyüklük var. Bunlara karar verdik. İsim ve soyisim mecburen alfanümerik olmak zorundalar. İşte ilk sorun, acaba bunlara ne büyüklük verelim. Yani isim ve soyisim kaçar harften oluşsun? Burada sorun bir şekil sorunu değil, bir yer sorunu. Örneğin isim 20, soyisim 40 karakterden oluşsun derseniz, toplam olarak bir dosyanızın bir elemanı 60 byte edecektir (numara işin içinde değil). Aynı eleman isim 8, soyisim 12 karakter alınırsa, 20 byte'lık yer kaplayacaktır. Burada 40 byte'ın ne önemi var diyeceksiniz. Unutmayın defterlerinizde 1'den çok fazla isim olmalı (yoksa niye defter tutuyorsunuz?). İlk bilgisayarım 1 Kb'lıktı (1024 byte), dolayısı ile tasarruflu olan isim 8 ve soyisim 12 karakter büyüklüğünü kullanacağım. Numara ikinci konumuz. Telefon numarasını bir sayı olarak alabilir veya isimler gibi karakter olarak tanımlayabiliriz, İstanbul'u düşünerek 338 08 95 olan numaramızı,
a$ = "3380895"
olarak 7 byte, veya
a =3380895
LSET a$ = MKL$(a) olarak 4 byte yer kaplayacak şekilde saklayabiliriz. İkinci örnekte gördüğünüz yöntemi, tüm sayıları saklamak için kullanmamız gerekiyor. Yani rasgele erişimli dosyalara sayılar yazamıyor, onları MKL$, MKI$, MKS$, MKD$ ile alfanümerik değişkenlere dönüştürüyor ve LSET veya RSET emirleri ile sola veya sağa bitiştiriyoruz. Bu tür bir sayıyı okumak için ise,
a = CVL (a$)
örneğinde olduğu gibi CVL, CVI, CVS ve CVD emirlerini kullanacağız. Ben tasarrufa devam ediyorum. Artık dosyamızı tanımlayabiliriz.
Dosya_ac:
OPEN D_ismi AS 1 LEN=24 FIELD #1,8 AS isim$, 12 AS soyisim$, 4 AS tno$
RETURN
Dosyamızın ismi D_ismi olarak tanımlandı. Bunu ister INPUT yolu ile kullanıcıdan sorar, ister bir sabit olarak kullanırsınız, size kalmış. Artık birim uzunluğu 24 olan ve bu 24 byte'ın 8'ini isim, 12'sini soyisim, 4'ünü ise telefon numarası için harcayan bir dosyaya sahibiz. Bu dosyalama türü ile kaç dosya mı açabiliriz? 1024 isim olsa, 24 kilobyte edecek. Bu kadar ufak bir dosya, 512 KB aletlerde bile kolayca RAM: diske sığabilir. Dikkat edin, birim uzunluk 200 byte olsa, bu dosya 200 KB tutacaktı!!!
Artık bir dosyamız var. Amacımız bu dosyaya veriler yazmak. Bu dosyanın özelliği, tüm dosyayı okumadan doğrudan istenen yere ulaşabilmek idi. Bu amaçla rasgele erişim dosyalarında bir numaralama kullanılır. İlk kayıta 1 numarası verilir ve her bir kayıt kendi numarası ile erişilir bir hale gelir. Burada önemli bir durumla karşı karşıyayız. KAYIT NUMARASINI BİLMEK ZORUNDAYIZ!!! Yani en azından son yazılan kayıtın numarasını bilmemiz lazım ki, yeni bir şey ekleyebilelim. Program ilk çalıştığında bu kolay. Dosya yeni olduğundan, doğrudan ilk dosyayı yazacağız. On gün sonra bir arkadaşınız daha olur ve numarasını eklemek istersek, en son nerede kaldığımızı bilmek zorundayız. İki yol önerebilirim: ilki her kaydın başında dosya numarasını sormak, son yapılan kaydı ise bir kenara not etmek. İkinci çözüm ise not etme işlemini bir sıralı dosya yardımı ile diskete yapmak ve gerektiğinde oradan okumak. İşte kayıt ekleme kısmımız:
Yeniisim: OPEN Sonjsmi FOR INPUT AS 2 INPUT #2,numara CLOSE #2 numara = numara +1 isimsor: Print:Print Print "Kayıt no : ", numara Print Print "Telefon Sahibinin " Input "İsmi : ";iisim$ Input "Soyismi : ";isoyisim$ Input "Numarası : ";itno Lset isimŞ = iisim$ Lset soyisim$ = isoyisim$ Lset tno$ = MkI$ (itno) print print "Bu bilgiler yanlışsa q tuşuna basın " a$="1" while a$= "" :a$=inkey$: wend if UCASE$ (a$) = "Q" then goto isim_sor put #1,numara print input " Yeni kayıt (evet/hayır)";a$ if Ucase$(Left$(a$,1)) <> "H" then numara=numara+1 goto isimsor
Klavyeyle gezinmek için ← ve → tuşları.
Sayfa 82
FLT NEXT MISSION: Bir sonraki göreve başlama. Her uçuştan sonra bu menüye döneceğiniz için, bir sonraki görevi oynamak için bu seçeneğe basmalısınız.
SQUADRON INFO: Bu seçenek, bulunduğunuz üssün özelliklerini, yerini ve hangi kahramanlarla uçtuğunuzu gösterir.
MAP OF THE FRONT: Buradan savaş bölgesinin haritalarını ve üslerin durumlarını, hangi üste hangi kahramanın bulunduğunu, düşman mı yoksa sizin tarafınızda mı olduğunu görebilirsiniz.
REQUEST TRANSFER: Herhangi bir üsse tayininizi isteyebilirsiniz. Ancak tayin için Alman ordusunda OBERLEUTNANT, İngiliz ordusunda FIRST LIEUTENANT olmanız gerekiyor.
PERSONAL AIRCRAFT: Eğer özel uçak isterseniz, buradan seçip alıyorsunuz. Ancak, özel uçağa sahip olmak için RITT-MEISTER veya CAPTAIN olmalısınız. İlk aşamada, kendi uçağınızı en az üç ay kullanıp yeni uçak isteyebilirsiniz.
VIEW PILOT RECORD: Buradan yaptığınız görevleri, kazandığınız madalyaları ve kendinizle ilgili her şeyi görebilirsiniz.
BACK UP CAREER: Eğer pilotun özelliklerini, yani o andaki durumunu diskete kaydetmek istiyorsanız, bu seçeneği kullanın ve pilotu kaydedin. Aslında, oyun her görevden sonra kendini otomatik olarak kaydetmektedir. Ama burada kaydettiğiniz yerden oyuna yeniden başlayabilirsiniz.
RETURN TO MAIN: Bu ikon ana menüye dönmek için geçerlidir.
Mouse kontrolü, oyunu oynamanın en kolay yolu. Uçağı çok daha rahat kontrol edebiliyorsunuz. Mouse'u aşağı çekerek yukarı doğru pike; yukarı iterek aşağı doğru pike yapıyorsunuz. Sola dönmek için sola, sağa dönmek için sağa hareket ettiriyorsunuz.
Oyunun tuş kontrolüne gelince... U ..... Oyun sırasında makineli kilitlenirse, tamir için
1......En düşük hız 9 ......En yüksek hız +......Hızlanma -......Yavaşlama F1......Uçağın önden görünüşü F2.....Uçağın arkadan görünüşü F3.....Uçağın soldan görünüşü F4.....Uçağın sağdan görünüşü F5.....Uçağın yukarıdan görünüşü F6.....Uçağın aşağıdan görünüşü
F7 .... Uçağı takip eden uçaktan görme F10 ... Detay savaş şekli ayarlama C......Zamanı hızlandırıp yavaşlandırma P...... Oyunu dondurma Q......Oyunu iptal etme ENTER... Uçağın dıştan görünüşü U......Bozulan makineli tüfeği onarma UÇUŞ FİLOSU BAŞKANI KOMUTLARI D......Minor kanattaki uçaklara 500 metre altta in emri
J...... Minor kanattaki uçaklara katıl emri
A ..... Düşmana saldırı emri M Minor kanata saldır emri W Tehlike sinyali gönderme (uçak görüldüğü anda) İsterseniz, bir de kumanda tablosuna göz atalım. Soldan itibaren ilk gösterge benzin göstergesi; ikincisi uçağın basınç göstergesi; üçüncüsü yükseklik göstergesidir. Burada, akrep 1000 feet'e, yelkovan 100 feet'e eşittir. Dördüncüsü uçağın hızını; beşincisi uçağın motorunun kaç devir yaptığını; altıncısı pusula; göstergelerin altındaki ise uçağın dengesini göstermektedir. Oyunda zaman kazanabilmek amacıyla göreve başlarken size sorulan START NEAR THE ACTION sorusu, olayın cereyan ettiği yerde başlama; START AT YOUR AERODROME sorusu ise üsten başlama imkanını sağlar. Uçağı kaldırıp oraya ulaşana kadar geçen zaman, görevin bir bölümünü tamamlamaya yeter. Bu yüzden, oyuna olay yerinden başlamanızı tavsiye ediyorum.
Oyunun diğer bir özelliği, oyunu bir video kamera gibi kayıt edebilmesi. Ana menüden MISSION RECORDER bölümüne geçerseniz, bir video player'ın tuşlarına benzer tuşlar içeren kontrol panelini göreceksiniz. Buradan TAPES seçeneği ile, daha önce oynadığınız oyunları seyredebilirsiniz.
REALISM PANEL: Oyunun en önemli unsurlarından biri. Buradan düşmana karşı avantaj sağlamak için çeşitli ayarlamalar yapıyorsunuz.
REALISTIC INSTRUMENT: ON yapılırsa, Cockpit'te görülen tüm göstergeler orijinal WWI uçağının aynısı olacaktır. OFF olursa, sadece mümkün olan göstergeler koyulacaktır.
SUN BUND SPOT: ON yapılırsa, güneşli bir havada güneş sizi rahatsız edecek ve düşman uçağı çok yakınınıza gelene kadar fark etmeyeceksiniz.
REALISTIC WEATHER: ON yapılırsa, hava şartları görevden göreve değişecek; OFF yapılırsa, her zaman güneşli pırıl pırıl olacaktır
GUN JAM ALLOWED: Eğer ON yapılırsa silahınız zaman zaman bozulacak; OFF yapılırsa, teklemeden sürekli çalışacaktır.
BLOCKOUTS ALLOWED: Eğer ON yapılırsa yere çakılabileceksiniz, OFF yapılırsa yere çakılmadan kurtulacaksınız.
CARBURETOR FREEZES: Yüksekte hava soğuk olduğu için karbüratörünüz donabilir. Hiçbir zaman donmaması için OFF yapın.
LIMITED AMMUNITION: OFF yaparsanız sonsuz cephane, ON yaparsanız sınırlı cephane verecektir.
LIMITED FUEL: ON yaparsanız sınırlı benzin, OFF yaparsanız sınırsız benzininiz olacaktır.
AIRCRAFT MAY BE DAMAGED: ON yaparsanız uçak çarpışmada hasar görecektir.
FLIGHT MODEL: Uçağı kullanma derecesi belirlenir: NOVICE, en kolayı; EXPERT, en zorudur.
SCORE FACTOR: Bu seçenek sizin savaşta aldığınız başarılara göre değişecektir. Ancak Realism Panel'deki dengelerle kendi yönünüzde oynarsanız, bu score otomatik olarak artacaktır.
Hava üssünden uçağı kaldırmak için, artı tuşuyla hız verin; yeteri kadar hız aldıktan sonra yukarı doğru pike yaparak havalanın. Size kalkışta verilen savaş yerinin istikametini iyi saplayın ve en kısa zamanda gitmeye bakın. Oyun zamana bağlı olduğu için savaş bitinceye kadar ne kadar çok görev başarırsanız, o kadar kıdemli olursunuz. Oyun sırasında filo komutanıysanız, verdiğiniz komutlar çok önemlidir. Örneğin düşman uçağı olmadığı halde düşman uçağı varmış gibi W tuşuna basarsanız, filodaki pilotlar daha sonraki emirlerinize uymayacaklardır. Filo halinde dolaşırken Minor kanada 500 metre alta in emri verirseniz düşman uçakları ona saldıracak, siz de kolaylıkla düşman uçaklarını bulmuş olacaksınız. Ancak bu komut, alçak yerler için geçerli değildir. RED BARON, bence son aylarda gelen en iyi uçak simülasyonu. Knights Of The Sky'ın pabucunu dama atacağa benzer. Oyundaki yakın plan uçakların iyi çizilmiş olması, oyunu daha da iyi kılıyor. Eğer gerçekten bir simülasyoncu iseniz, bence RED BARON'u almak için geç bile kaldınız. DYNAMIX/3 disket/1 MB
GRAFİK ........................... : %95 SES : %95 OYNANABİLİRLİK....... : %100 GENEL............................. : %100