3D LABİRENT

Hatırlarsanız, ilk sayılarımızdan birinde bir Labirent programı yayınlamıştık. Bu ay yine bir Labirent programımız var. Tümer ve Burak TOGAN kardeşlerin Atari'den adapte ettiği program, 640*400 ve 320*200 modlarında çalışabiliyor. Kumanda Joystick ya da klavyeden yapılıyor. Klavye kontrolünde kullanılan tuşlar, ok tuşları. Beğeneceğinizden eminiz.

10 DIM m(41,24),mm(140),nn(140):a$="E #A":MID$(a$,4,1)=CHR$(127):k=6 
22 p$="(J) & (K)" 
30CLS 
40 lOCATE 2 25 'PRINT "****************************" 
50 LOCATE 3İ25 :PRINT "* 
60 LOCATE 4,25 :PRINT "* 3 D L A B İ RE N T   *" 
70 LOCATE 5,25 :PRINT "* 
80 LOCATE 6,25 .PRINT " "******************************** 
81 FOR i=9 TO 11:LOCATE i,12:COLOR 1,2:PRINT " 
82 NEXT i 
90 LOCATE 10,16:COLOR 2,1 :PRINT "ATARI'den adaptasyon ":LOCATE 10,38:COLOR 1,2:PRINT " Tumer & Burak TUGAN " 
130 FOR n=0 TO 40:FOR i=0 TO 22:m(n,i)=3 
140 NEXT i:NEXT n.COLOR 1,0 
141 LOCATE 13,5:PRINT " 1-640x200 cozunurluk":LOCATE 14,5:PRINT " 2-320x200 cozunurluk" 
142 INPUT"secimlniz:";a
143 IF a=1 THEN c=640:v=2 
144 IF a=2 THEN c=320:v=1 
145 IF a<1 OR a>2 THEN a=0:GOTO 141 
150 COLOR 3,2:LOCATE 19,5:PRINT pS 
155 GOTO 4000 
160 LOCATE 19,5:PRINT pS 
230 LOCATE 21,5:PRINT "Lütfen biraz bekleyiniz!" 
240 GOSUB 2000 
245 SCREEN 1 c,200,2,v:WINDOW 2,„0,1:COLOR 3,2 
,
247 GOTO 340 
250 IF m(ai,aj)=4 THEN GOTO 370 
260 q$=INKEY$:IF q$="a" OR q$="A" THEN GOSUB 2500 
264 IF p=0 GOTO 286 
266 q$=INKEY$:IF q$=CHR$(31) THEN j=dj:dj=di:di=-j:GOTO 330 
268 IF q$=CHR$(30) THEN j=dj:dj=-di:di=j:GOTO 330 
270 IF q$=CHR$(28) THEN ai=ai+di:aj=aj+dj:g=g+1 :GOTO 310 
272 IF p=1 THEN GOTO 260 
286 IF STICK(2)=-1 THEN j=dj:dj=di:di=-j:GOTO 330 
288 IF STICK(2)=1 THEN J=dj:dj=-di:di=j:GOTO 330 
290 IF STICK(3)=-1 THEN ai=ai+di:aj=aj+dj:g=g+1:GOTO 310 
300 GOTO 260 
310 IF m(ai.aj)<>3 AND m(ai,aj)<>0 THEN GO O 330 
T
320 ai=ai-di:a =aj-dj:GOSUB 3800:GOTO 260 
330 IF m
aj)=4 THEN GOTO 370 
(ai,
340 REM 
350 CLS:LOCATE 3,47:COLOR 3,2:PRINT "Tumer & Burak TUGAN" 
360 GOSUB 3000:GOTO 260 
360 REM 
370 REM 
390 CLS 
400 REM 
410 REM 
420 SCREEN CLOSE 1 CLS 
425 LOCATE 9,9:PRINT " Tebrikler ";g;" adimda bitirdiniz !" 
430 PRINT :CO OR 1,2:PRINT :PRINT :PRINT :PRINT "      Tekrar için aya bas " 
L
440 q$=INKEY$ 
450 IF q$="a" OR q$="A" THEN RUN 
460 REM 
470 GOTO 440 
2000 ON ERROR GOTO 4100 
2010 FOR n=2 TO 36:m(n,0)=2:m(n,22)=2:NEXT n 
2020 FOR n=0 TO 24:m(2,n)=2.m(36,n)=2:NEXT n 
2030 k=0:mm=18: n=10 
n
2040 m(mm,nn)=2 
2050 x=m(mm+2,nn):IF x=3 THEN 2100 
2060 x=m(mm-2,nn):IF x=3 THEN 2100 
2070 x=m(mm,nn+2):IF x=3 THEN 2100 
2080 x=m(mm,nn-2):IF x=3 THEN 2100 
2090 GOTO 2210 
2100 th$=RIGHT$(TIME$,2):th=VAL(th$) 
2102 RANDOMIZE(th) 
2104 d=INT(RND*4)+1:ON d GOTO 2120,2130,2140,2150 
2110 d=INT(RND*4)+1:ON d GOTO 2120,2130,2140,2150 
2120 m1=-1:n1=0:GOTO 2160 
2130 m1=0:n1=1:GOTO 2160 
2140 m1=1 :n1 =0:GOTO 2160 
2150 m1=0:n1=-1 
2160 x=m(mm+m1*2,nn+n1*2):IF x=2 THEN 2100 
2170 m(m
+m1,nn+n1)=2:m(mrn+m1*2,nn+n1*2)=INT(RND*1.8)+1 
m
2180 REM 
2190 mm=mm+m1*2:nn=nn+n1*2:k=k+1:ON ERROR GOTO 4100:mm(k)=mm:nn(k)=nn 
2200 GOTO 2050 
2210 mm=mm(k):nn=nn(k):k=k-1 
2220 IF k=0 THE GOTO 2240 
N
2230 GOTO 2050 
2240 BEEP 
2250 mi=36:mj=22 
2260 di=-1 :dj=0:ct=1 
2270 FOR n=3 TO 33 
2280 IF m(n,20)=2 THEN m(n,21)=0:ai=n:GOTO 2300
2290 NEXT n 
2300 FOR n=33 TO 3 STEP -1 
2310 IF m(n,2)=2 THEN m(n,1)=4:GOTO 2330 
2320 NEXT n 
2330 aj=20 
2340 RETURN 
2500 CLS:LOCATE 1,2:PRINT "Labirentin ü ten gorunusu" 
s
2510 FOR i=1 TO 21 :FOR i=35 TO 3 STEP -1 
2520 IF ai=i AND aj=i THEN PRI T "*";:GOTO 2550 
N
2530 PRINT MID$(a$,m(j,i)+1,1); 
2540 IF ai=j AND ai-i THEN k=42 
2550 NEXT j:PRINT :NEXT i:g=g+10 
2560 q$=INKEY$:IF q$="A" ÖR q$="a" THEN GOTO 2500 
2562 IF p=0 THEN GOTO 2570 
2564 IF q$<>CHR$(28) AND q$<>CHR$(30) AND q$<>CHR$(31) THEN GOTO 2560 
2566 RETURN 
2570 IF STICK 2)<>-1 AND STICK(2)<>1 AND STICK(3)<>-1 THEN GOTO 2560 
(
2580 RET RN 
U
3000 ct=0 
3010 j=m(ai+di*ct-di,aj+dj*ct+di) 
3015 LINE (320,1 )-(320,199),1 :LINE (321,1)-(321,199),1 :LOCATE 15,50:COLOR 0,2:PRINT " adim sayisi ";g 
3015 COLOR 3,2 
3020 ON ct+1 GOSUB 3260,3320,3380,3440,3520,3580 
3030 j=m(ai+di*ct+dj,aj+dj*ct-di) 
3040 ON ct+1 GOSUB 3290,3350,3410,3480,3550,3610 
3050 ct=ct+1 :i=m(ai+di*ct,ai+dj*ct) 
3060 IF j=1 OR j=2 THEN GOTO 3080 
3070 IF j=0 OR j=3 OR j=4 THE GOTO 3100 
N
3080 IF ct<6 THEN GOTO 3010 
3090 GOSUB 3700:RETURN 
3100 ON et GOSUB 3640,3650,3660,3670,3680,3690 
3110 IF j=0 THEN IF ct<=1 THEN GOTO 3710 
3120 IFj=4 THEN IF ct<=3 THEN 3740 
3130 RETURN 
3260 LINE (36,1)-(36,176):IF j<>3 THE GOTO 3280 
N
3270 LINE (36,176)-(21,191):RETURN 
3280 LINE (36,176)-(1,176):RETURN 
3290 LINE (284,1 )-(284,176):IF i<>3 THE GOTO 3310 
N
3300 LINE (284,176)-(299,191 ):RETURN 
3310 LINE (284,176)-(319,176):RETURN 
3320 LINE (76,1)-(76,136):IF i<>3 THEN GOTO 3340 
3330 LINE (76,136)-(36,176):RETURN 
3340 LINE (76,136)-(36,136):RETURN 
3350 LINE (244,1 )-(244,136):IF j<>3 THEN GOTO 3370 
3360 LINE (244,136)-(284,176):RETURN 
3370 LINE (244,136)-(284,136):RETURN 
3380 LINE (108,1)-(108,104):IF j<>3 TH N GOTO 3400 
E
3390 LINE (108,104)-(76,136):RETURN 
3400 LINE (108,104)-(76,104):RETURN 
3410 LINE (212,1)-(212,103):IF j<>3 THEN GOTO 3430 
3420 LINE (212,104)-(244,136):RETURN 
3430 LINE (212,104)-(244,104):RETURN 
3440 LINE (132,24)-(132,80):IF j<>3 THEN 3470 
3450 LINE (132,80)-(108,104) 
3460 LINE (132,24)-(108,1):RETURN 
3470 LINE (132,80)-(108,80):LINE (132,24)-(188,24):RE URN 
T
3480 LINE (188,24)-(188,80):I j<>3 THEN GOTO 3510 
F
3490 LINE (188,80)-(212.104) 
3500 LINE (188,24)-(212,1):RETURN 
3510 LINE (188,80)-(212,80):LINE (188,24)-(212,24):RE URN 
T
3520 LINE (148,40)-(148,64):IF j<>3 THEN GOTO 3540 
3530 LINE (148,64)-(132,80):LINE (148,40)-(132,24):RETURN 
3540 LINE (148,64)-(132,64):LINE (148,40)-(132.40):RETURN 
3550 LINE (172,40)-(172,64):IF j<>3 THEN GOTO 3570 
3560 LINE (172,64)-(188,80):LINE (172,40)-(188,24):RETURN 
3570 LINE (172,64)-(188,64):LINE (172,40)-(188,40):RE URN 
T
3580 LINE (156,48)-(156,56):IF j<>3 THEN GOTO 3600 
3590 LINE (156,56)-(148,64):LINE (156,48)-(148,40):RETURN 
3600 LINE (156,56)-(148,56):LINE (156,48)-(148,48):RE URN 
T
3610 LINE (164,48)-(164,56):IF j<>3 THEN GOTO 3630 
3620 LINE (164,56)-(172,64):LINE (164,48)-(172,40):RETURN 
3630 LINE (164,56)-(172,56):LINE (164,48)-(172,48):RETURN 
3640 LINE (36,176)-(284,176):RETURN 
3650 LINE (76,136)-(244,136):RETURN 
3660 LINE (108,104)-(212,104):RETURN 
3670 LINE (132.80)-(188,80):RETURN 
3680 LINE (148,64)-(172,64):LINE (148,40)-(172,40):RETURN 
3690 LINE (156,56)-(164,56):LINE (156,48)-(164,48):RETURN 
3700 LINE (164,48)-(156,56):LINE (156,48)-(164,56):RETURN 
3710 LINE (150,50)-(180,50):LINE (180,50)-(180,55):LINE (180,55)-(155,55):LINE (155,55)-(155,70):LINE (155,70)-(175,70) 
3720 LINE (175,70)-(175,75):LINE (175,75)-(155,75):LINE (155,75)-(155,90):LINE (155,90)-(180,90):LINE (180,90)-(180,95):LINE 
(180,95)-(150,95):LINE(150,95)-(150,50) 
3730 RETURN 
3740 LINE (150,50)-(180,50):LINE (180,50)-(180,95):LINE (180,95)-(175,95):LINE (175,95H175,75):LINE (175,75)-(155,75) 
3750 LINE(155,75)-(155,95):LINE (155,95)-(150,95):LINE (150,95)-(150,50):LINE (155,55)-(175,55):LINE (175,55)-(175,70) 
3760 LINE (175,70)-(155,70):LINE (155,70)-(155,55) 
3770 RETU N 
R
3800 BEEP 
3810 RETURN 
4000 REM IF p=0 THEN p=l :p$="(K)lavye":GOSUB 4050:GOTO 160 
4010 REM IF p=1 THEN p=0:p$="(J)oystick":GOSUB 4050:GOTO 160 
4050 q$=INKEY$:IF q$="k" OR q$="K" THEN p$r"(K)lavye ":p= :GOTO 160 
1
4060 IF q$="j
M OR q$="J" THEN p$="(J)oystick":p=0:GOTO 160 
4070 GOTO 4000 
4100 RUN