3D LABİRENT
Retro bilgisayarHatı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