CADI DAMASI

BASIC program köşemizde bu ay yine kısa bir oyun dökümü veriyoruz. Cadı Daması adındaki oyunumuz aslında oynanış bakımından bildiğimiz damadan pek farklı değil. Oyun, cadılar ve hayaletler olmak üzere iki kişi arasında oynanabildiği gibi, bir tarafın başlangıç ve bitiş hamleleri için RETURN tuşuna basarak bilgisayara karşı da oynayabilirsiniz. Taşların hareket edebildiği yönler ekranda gösterilmektedir. Başarılar.

GOTO Programkontrol 
Programkontrol:
CLEAR 
GOSUB Initialize 
GOTO istek
ikio:
h=0 :K=0 
FOR a=7 TO 35 : GOSUB altmiş : NEXT a
uco:
GOSUB terk 
IF h<0 THEN Quarterc
h=0 : K=0 : a=t : GOSUB altmis 
IF h<l THEN Quarterc 
GOTO uco
Initialize:
SCREEN 2,320,200,4,1 : COLOR 1,0 : CLS : WINDOW 2,"CADI DAMASI",,,2 
DIM hayalet(121),cadi(121),kare(98),d(28),x(35),y(35) 
DIM K35),xl(35),yl(35),n(28),b(42) 
LINE (50,80)-(81,103),l,b 
LOCATE 12,12:PRINT "CADI DAMASI" 
LINE (230,80)-(261,103),l,b 
GET (50,80)-(81,103),kare 
GOSUB hayaletyapimi
s=-l 
FOR a=0 TO 7 : READ m(a) : NEXT a 
FOR a=0 TO 28 : READ d(a) : NEXT a 
b=48 : c=32 : d=59 :e=12 
FOR a=0 TO 4
FO
R f=0 TO 4
h=6*a+f+7 : x(h)=b*f+d-15 : y(h)=c*a+e-11 : l(h)=g+97 : n(g)=h 
g=g+1 : xl(h)=6*f+10 : yl(h)=4*a+1 
NEXT f
NEXT a 
CLS 
' 
FOR a=0 TO 4
LINE(d,c*a+e)-(b*4+d,c*a+e),2 : LINE(b*a+d,e)-(b*a+d,c*4+e),2 
NEXT a 
a=0 : f=0 
GOSUB Lne 
a=b+b 
GOSUB Lne 
f=c+c 
GOSUB Lne 
a=0 
GOSUB Lne
FOR a=0 TO 42 : READ b(a) : GOSUB yedialtio : NEXT a 
RETURN
Lne:
LINE (d+a,e+f)-(2*b+d+a,2*c+e+f),2 : LINE (d+a,2*c+e+f)-(2*b+d+a,e+f),2 
RETURN
yedialtio:
IF b(a)=2 THEN RETURN 
IF b(a)<0 THEN PUT (x(a),y(a)),cadi,PSET
IF b(a)=0 THEN PUT (x(a),y(a)),kare,PSET 
IF b(a)>0 THEN PUT (x(a),y(a)),hayalet,PSET 
LOCATE yl(a),xl(a) : PRINT CHR$(l(a)) 
RETURN
istek:
d=0 : LOCATE 20,1
IF s=l THEN PRINT:PRINT "HAYALET" ELSE PRINT:PRINT   "CADI" 
LOCATE 21,1 
PRINT  TAB (16) "BAŞLANGIÇ:"; 
Lpl:
e=e+l : K$= INKEY$ : IF K$=" THEN Lpl 
IF ASC(K$)=13 THEN GOSUB Bos : RANDOMIZE TIMER : GOTO ikio 
IF ASC (K$)<97 OR ASC (K$)>121 THEN Lpl 
PRINT K$ : a=n(ASC(K$)-97) : z=a 
Lp3:
LOCATE 23,18 : PRINT "BITIS:"; 
Lp2:
K$=INKEY$ : IF K$="" THEN Lp2 
IF ASC (K$)<97 OR ASC (K$)>121 THEN Lp2 
PRINT K$; : tl=n(ASC(K$)-97) 
ck=l : 1=0 : kl=0 : GOSUB aitmiş : ok=0 : h=0 : a=7 : IF a=36 THEN calim
Dm2:
GOSUB aitmiş : IF h> = l THEN calim 
a=a+l : IF a<36 THEN Dm2 
calim:
IF d THEN dortyedio 
IF 1 THEN dortsekizo 
ses:
SOUND 99,5 : GOTO istek 
dortyedio:
IF 1=0 OR kl=0 THEN SOUND 99,5 : GOTO besbir 
dortsekizo:
IF kl=0 AND h>=l THEN ses 
f=z : t=tl : K=kl : GOSUB terk 
IF kl=0 THEN Quarterc 
a=t : z=a : h=0 : GOSUB altmiş
IF h<l THEN Quarterc 
besbir:
GOSUB Bos : d=l : GOTO Lp3
terk:
b(t)=b(f) : b(f)=0 : a=f : GOSUB yedialtio 
IF K THEN b(K)=0 : a=K : GOSUB yedialtio
a-t : GOTO yedialtio 
terk2:
IF b(c+ra(b)) THEN 160 
sc=l+RND(l)*.9
IF h<sc THEN h=se : f = a : t=c+m(b) : K=c 
IF ek=0 THEN GOTO 160
IF tl=c+m(b) THEN 1=1 : kl=c : b=7 
RETURN
Quarterc:
s = -s : h=0 : a=7 
ikialtio:
IF a=36 THEN ikic 
GOSUB altmiş
IF h=0 THEN a= a+1 : GOTO ikialtio 
GOTO istek 
Bos:
LOCATE 21,1 :PRINT SPACE$(30); 
LOCATE 23,1 :PRINT SPACE$(30); 
RETURN
altmiş:
IF b(a)=0 OR b(a)=-s OR b(a)=2 THEN RETURN 
FOR b = 0 TO d(a-7)
c=a+m(b) 
IF b(c)=s OR b(c)=2 THEN 160 
IF b(c) THEN terk2: 
sc=RND(l)*.9 
IF h<sc THEN h=sc : f = a : t=c 
IF ck=l AND tl = c THEN 1=1 : b=7 
160 NEXT:RETURN
ikic :
GOSUB Bos
LOCATE 20,1 
IF s = l THEN  PRINT "CADILAR KAZANDI i"; :GOTO basla 
PRINT "HAYALETLER KAZANDI i" : GOTO basla
basla:
LOCATE 23 1 
PRINT "TEKRAR OYNAMAK İSTER MISINIZ? (E/H)" 
dongu:
K$=INKEY$:IF K$="" THEN dongu 
IF K$="e" OR K$="e" THEN RUN 
WINDOW CLOSE 2 : SCREEN CLOSE 2 : CLEAR : SYSTEM
hayaletyapimi:
PALETTE 14,.33,.13,0 : PALETTE 13,1,.81,.67 : PALETTE 15,.46,.46,.46 
FOR y=82 TO 101 
FOR x=58 TO 73 
READ col : IF col=50 THEN Nextx 
PRESET (x,y),col 
Nextx: 
NEXT x
NEXT y 
GET (50,80)-(81,103),cadi 
FOR y=82 TO 100 
FOR x=232 TO 245 
READ col : IF col=50 THEN Nextxl 
PRESET (x,y),col 
Nextxl:
NEXT x 
NEXT y 
GET (230,80)-(261,103),hayalet 
RETURN
REM 
CADI DATASI 
210 
DATA 50,50,02,50,50,50,50,50,50,50,50,50,50,50,50.50 
201
DATA 50,02,02,02,50,50,50,50,50,50,50,50,50,50,50,50
230 
DATA 50,02,02,02,02,02,50,50,50,50,50,50,50,50,50,50 
240 
DATA 02,50,02,02,02,02,02,02,02,02,50,50,50,50,50,50 
250 
DATA 50,50,02,02,14,14,14,14,14,50,02,02,02,50,50,50 
260 
DATA 50,02,50,13,13,13,14,14,14,14,50,50,50,50,50,50 
270 
DATA 02,50,13,50,13,13,02,02,14,14,50,50,50,50,50,50 
280
13,50,02,02,02,02,02,02,-50.50.50.50
DATA 50,50,50,50,
290 
DATA 50,50,50,13,50,50,02,02,15,02,02,02,02,50,50,50 
300 
DATA 50,50,13,13,02,02,02,02,15,02,02,02,02,50,50,50 
310 
DATA 50,50,13,13,02,02,02,02,15,02,02,02,02,50,50,50 
301 
DATA 50,50,50,50,02,02,02,02,15,02,02,02.50.50,50,50 
330 
DATA 50,50,50,50,50,15,15,15,02,02,02,02,50,50,50,50 
340 
DATA 50,50,50,50,50,02,02,15,02,02,15,02,50,50,50,50 
350 
DATA 50,50,50,50,50,02,02,15,02,02,15,02,02,50,50,50 
360 
DATA 50,50,50,50,50,15,15,15,15,15,15,02.02,02,50,50 
370 
DATA 50,50,50,50,50,50,15,15,15,15,15,15,15,15,50,50 
380 
DATA 50,50,50,50,50,50,15,15,15,15,15,15,15,15,15,50 
390 
DATA 50,50,50,50,50,50,14,14,50,15,15,15,15,15,15,15 
400 
DATA 50,50,50,50,50,14,14,14,50,50,14,14,14,50,50,50
410 
REM HAYALET DATASI 
430
DATA 50,50,50,50,50,50,01,01,50,01,01,50,50,50
440 
DATA 50,50,50,50,50,50,50,01,01,01,01,01,50,50 
450 
DATA 50,50,01,01,01,50,50,01,01,01,01,01,01,50 
460 
DATA 50,50,01,01,02,01,50,01,01,01,01,01,01,50 
470 
DATA 50,50,01,02,01,01,01,01,01,01,01,50,01,50 
480 
DATA 50,50,01,01,01,02,01,01,01,01,01,01,50,50 
490 
DATA 50,50,50,50,01,01,01,01,01,01,01,01,50,50 
500 
DATA 50,01,50,01,01,01,01,01,01,01,50,01,50,50 
510 
DATA 50,01,01,01,01,01,01,01,01,01,01,50,50,50 
501 
DATA 01,01,01,01,01,01,01,01,01,01,01,01,01,50 
530 
DATA 50,01,01,01,01,50,50,01,01,01,15,01,01,50 
540 
DATA 50,01,01,01,01,50,50,01,01,01,15,01,01,50 
550 
DATA 50,50,01,01,50,50,01,01,01,15,01,15,01,50 
560 
DATA 50,50,01,01,50,01,01,15,01,15,01,01,15,50 
570 
DATA 50,50,01,50,50,01,01,15,01,15,01,01,50,50 
580 
DATA 50-, 50, 50, 50, 01, 01,15, 01, 01,15, 01, 01, 50, 50 
590 
DATA 50,50,50,01,01,15,01,01,01,15,01,01,01,50 
600 
DATA 50,50,50,01,01,50,01,01,01,15,01,01,01,01 
610 
DATA 50,50,50,50,50,50,01,01,01,50,50,01,01,01
KONTROL DATASI
DATA -6,1,6,-1,-5,7,5,-7 
DATA 7,3,7,3,7,0,3,7,3,7,3,0 
DATA 7,3,7,3,7,0,3,7,3,7,3,0,7,3,7,3,7 
DATA 2,2,2,2,2,2,2,-1,-1,-1,-1,-1.2 
DATA -1,-1,-1,-1,-1,2,-1,-1,0,1,1.2 
DATA 1,1,1,1,1,2,1,1,1,1,1,2,2,2,2,2,2,2