Bu sayfadaki yazılar
Sayfanın metni
Sayfa 91
.— GER EM lam
BencetigteStrukturen: POKEL RastPort&-416,Memory& ' Arealnfo POKEL RastPort&412,Memory&4100 'TmpRas InitArea& Memory&,Memory&-*24,10 InitTmpRas& Memory&-4100,Memory&-4 108, 20480
REM Renk tablosu oluşturalım.
FarbenEinlesen: PALETTE 0,0,0,0 : PALETTE 1,0,0,0 PALETTE 18,1,0,0 : PALETTE 19,0,0,.4 PALETTE 20,0,0,.5 FOR TO 17 PALETTE FarbNr,i,0,1-i NEXT FarbNr
REM Burada hesaplar başlıyor
Berechnungen: MalFakt-ABS(MalFakt)*SchrittY 1)/SchrittY XAusdehnung-PxSchritt*SchrittX-SchraegBreite XPos-152-XAusdehnung/2 YPos-120-YAusdehnung/2
FunktionDurchrechnen: Unten-10000 : Oben—-10000 FOR TO YMax STEP SchrittY FOR x-XMin TO XMax STEP SchrittX xl—x : : GOSUB Funktion IF z<Unten THEN Unten—z IF z>Oben THEN Oben-z NEXT x NEXT y StepPerColor-z(Oben-Unten)/16
REM artık çizim Zeichnen: FOR y-YMin TO YMax STEP SchrittY FOR x-XMin TO XMax STEP SchrittX
IF INKEY$-CHR$(27) THEN Ende Pot-0
IF x-XMin THEN u90-YPos4(y-4SchrittY)*Py- .
R b
: : GOSUB Pot-Pot4z :
: yl—y : GOSUB Funktion Pot-Pot-z :
POL POR
xl—x : : GOSUB Funktion Pot-Pot4z : zZ490—-z*ZFakt
REM Karelerin kenar noktaları bulunur
EckpunkteBerechnen: b9o— YPos4y*PySchritt-z 1 90 d9e—
Fakt
h9o-YPos-4(y-4Schritt Y)*PySchritt-z47>
FarbeBerechnen: Pot-Pot/4 - Unten Farbeo-Pot/StepPerColor IF THEN IF THEN Farbe290-18
PlatteZeichnen: Platte Platte
NEXT x xMalus—xMalus4MalFakt
Platte 90),19,20
NEXT y WHILE INKEY$-"" : WEND REM Artık temizlik
Ende: POKEW FlagsAdr&,0 FreeRemember& RememberKey&;,-1 LIBRARY CLOSE WINDOW CLOSE 2 SCREEN CLOSE | END
Fehler: WINDOW 2 RESUME NEXT
REM Burada kare çizmek için bir alt program var.
SUB Platte STATIC SHARED POKE RastPort&-427,Farbe29o SetAPen& RastPort&,Farbe 1 AreaMove& AreaDraw& AreaDraw& RastPort& AreaDraw& AreaEnd& RastPort& END SUB
REM İşte mucizevi fonksiyonumuz
Funktion: RETURN
İşte bu kadar. Aslında bu program oldukça karışık teknikler kullanıyor ve büyük ölçüde sistem komutlarını kullanıyor. Ne var ki, son derece sevimli sonuçlar veriyor. Dediğim gibi REM satırlarını eklemeyin. Gelecek ay, bu ay yazmam gereken HAM ekranları üzerine bir yazı yazacağım ve bu arada sorunlarınıza da değineceğim. İstatistiğe göre 62 saat içinde yeni bir kaza yapmam bekleniyor, görüşmek üzere,
“Hani bir şey olmazsa....
Klavyeyle gezinmek için ← ve → tuşları.
Sayfa 90
Herkese merhabalar. Her şeyden önce bu köşenin en azından bir okuru olduğunu öğrendim ve son derece memnun oldum. Sıcak bir Ağustos günü Kemer-Antalya yolunda tesadüfen otostop yaparak arabama binen kişinin, sohbeti sırasında köşemin bir okuru olduğunu öğrendiğim an, inanın hem çok şaşırdım hem de çok sevindim. Bahane anlatmak bu köşenin değişmez geleneği. Ancak bu ay sözü uzatmayacağım. 80 saatte bir trafik kazasına karıştığımdan dolayı, moralim son derece bozuk. Ama bu ay size bomba gibi bir program buldum. Programın yazarı geçen aylarda sık sık alıntılar yaptığım Amir R. Amir. Bu kişinin Profesyonel Basic kitabındaki belki en görkemli program bu. Ne var ki, genelde tam açıklamalı kısa programlar yayınlamayı uygun gördüğümden, bugüne dek bu programı yayınlamamıştım. Gerçekten uzun ve karışık gibi görünen bu programı yazmanızı teşvik etmek için programın sonuçlarından bir iki resim koymayı uygun gördüm. Program aslında son derece basit işlevleri olan çeşitli bölümlerden oluşuyor. Açıklama yapabilmek için her bölümün başına işlevini anlatan bir iki REM satırı koydum. Programı yazarken bu satırları ihmal edin. Değişken isimlerini ise Almanca'dan çevirmedim. Hemen programa geçelim. REM İlk olarak bazı LIBRARY fonksiyonları REM tanımlamamız gerekiyor.
DECLARE AllocRemember& LIB- RARY
DECLARE FUNCTION ViewPortAddress& LIB- RARY LIBRARY "dhi: as/bmaps /g LIBRARY "dhl :user/bas/b
PxSchritt-200/(XMax-XMin)
REM Dalgalanmaların belli olması için sonuç Zfakt REM sayısı ile çarpılıyor. Eğer formül çok düz REM çıkarsa bu sayıyı büyütmeli, çok dalgalı çı- karsa REM küçültme yoluna gitmelisiniz.
Hoehenmultiplikator: ZFakt-35
REM daha önce X ve Y koordinatlarının sınırlarını REM belirlemiştik. Plot-3D gibi bu programda da REM kareler var. Bu karelerin genişliği burada REM belirleniyor
Plattengroesse:
REM Bu sayı bir ise kareler dolduruluyor.
PlattenAusfuellen:
REM Şimdi bir ekran tanımlıyoruz.
Bildschirm: SCREEN 1,320,256,5,1 WINDOW 2,,,0, ViewPort&-ViewPortAddress& (WINDOW(7)) RastPort&-WINDOW(8)
OutlineModusEin
library" ON ERROR GOTO Fehler
REM burada x ve y değişkenlerinin ilk ve son REM değerleri yer alıyor.
BereichDefinieren: XMin—-3 : XMaxz3 YMin—-3 : YMax-3 REM Bu değişken eğikliği belirliyor.
Schraeglage: MalFakt-15
REM burada ise noktanın pixel cinsinden genişliği REM yer alıyor.
Groesse:
POKE RastPort&-427,1 FlagsAdr&-RastPort&--32 —PEEKW(FlagsAdr&) POKEW FlagsAdr&,(Flags OR 8)
REM İşlemler için doğrudan hafıza ayırıyoruz.
SpeicherReservieren: RAMTyp&-2465536& Remember&-0 RememberKey&-VARPTI elde Memory&—AllocR 12000&,RAMTyp&) IF Memory&-0 THEN FreeRemember& Remem- ber Key&,-1 : END
Key&,
REM Basic'in yetersiz veya yavaş kaldığı yerlerde REM Library'ler kullanılıyor. Bu fonksiyonlar için REM gerekli ön işlemler