⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 link4.bas

📁 smallbasic for linux
💻 BAS
📖 第 1 页 / 共 3 页
字号:
16010 TOT=0
16020 COL=BOARD(RW,OLD.POS)
16030 NEW.COL=COL:X=RW
16040 WHILE NEW.COL=COL AND X<=6
16050  TOT=TOT+2
16055  X=X+1
16057  IF X<=6 THEN NEW.COL=BOARD(X,OLD.POS)
16060 WEND
16085 FOR I = 1 TO 3
16090 IF OLD.POS-I=0 THEN GOTO 16110 ELSE IF BOARD(RW,OLD.POS-I)=COL THEN TOT=TOT+NEW.COL+1 ELSE GOTO 16110
16100 NEXT I
16110 FOR I = 1 TO 3
16120 IF OLD.POS+I=8 THEN GOTO 16140 ELSE IF BOARD(RW,OLD.POS+I)=COL THEN TOT=TOT+NEW.COL+1 ELSE GOTO 16140
16130 NEXT I
16140 FOR I = 1 TO 3
16170 IF OLD.POS-I=0 OR RW+I=7 THEN GOTO 16190 ELSE IF BOARD(RW+I,OLD.POS-I)=COL THEN TOT=TOT+NEW.COL+1 ELSE GOTO 16190
16180 NEXT I
16190 FOR I = 1 TO 3
16200 IF OLD.POS+I=8 OR RW-I=0 THEN GOTO 16220 ELSE IF BOARD(RW-I,OLD.POS+I)=COL THEN TOT=TOT+NEW.COL+1 ELSE GOTO 16220
16210 NEXT I
16220 FOR I = 1 TO 3
16250 IF OLD.POS-I=0 OR RW-I=0 THEN GOTO 16270 ELSE IF BOARD(RW-I,OLD.POS-I)=COL THEN TOT=TOT+NEW.COL+1 ELSE GOTO 16270
16260 NEXT I
16270 FOR I = 1 TO 3
16280 IF OLD.POS+I=8 OR RW+I=7 THEN GOTO 16300 ELSE IF BOARD(RW+I,OLD.POS+I)=COL THEN TOT=TOT+NEW.COL+1 ELSE GOTO 16300
16290 NEXT I
16300 RETURN
17000 REM MOVE C.CHIP
17010 T.H.POS=4
17020 IF OLD.POS=T.H.POS THEN RETURN
17030 IF OLD.POS > T.H.POS THEN GOTO 17070
17040 FOR M=1 TO T.H.POS-OLD.POS
17050  GOSUB 17200
17060 NEXT M:T.H.POS=4:RETURN
17070 FOR M=1 TO OLD.POS-T.H.POS
17080  GOSUB 17400
17090 NEXT M:T.H.POS=4:RETURN
17200 PUT((T.H.POS+1)*H.SKIP+1,T.POS),C.CHIP,XOR
17210 T.H.POS=T.H.POS-1
17220 IF T.H.POS = 0 THEN T.H.POS = 7
17230 PUT((T.H.POS+1)*H.SKIP+1,T.POS),C.CHIP,XOR
17240 PLAY "L40O2C"
17250 RETURN
17400 PUT((T.H.POS+1)*H.SKIP+1,T.POS),C.CHIP,XOR
17410 T.H.POS=T.H.POS+1
17420 IF T.H.POS = 8 THEN T.H.POS = 1
17430 PUT((T.H.POS+1)*H.SKIP+1,T.POS),C.CHIP,XOR
17440 PLAY "L40O2C"
17450 RETURN
18000 REM drop COMPUTER PIECE
18020 PUT((OLD.POS+1)*H.SKIP+1,T.POS),C.CHIP,XOR
18030 PUT((OLD.POS+1)*H.SKIP,V.OFFSET),C.CHIP2,PSET
18040 PLAY "L10O3C"
18050 IF RW=1 THEN PLAY "L40O2C":RETURN
18060 PUT((OLD.POS+1)*H.SKIP,V.OFFSET),SQ,PSET
18070 PUT((OLD.POS+1)*H.SKIP,V.OFFSET+V.SKIP),C.CHIP2,PSET
18080 PLAY "L10O3D"
18090 IF RW=2 THEN PLAY "L40O2C":RETURN
18100 PUT((OLD.POS+1)*H.SKIP,V.OFFSET+V.SKIP),SQ,PSET
18110 PUT((OLD.POS+1)*H.SKIP,V.OFFSET+V.SKIP*2),C.CHIP2,PSET
18120 PLAY "L10O3E"
18130 IF RW=3 THEN PLAY "L40O2C":RETURN
18140 PUT((OLD.POS+1)*H.SKIP,V.OFFSET+V.SKIP*2),SQ,PSET
18150 PUT((OLD.POS+1)*H.SKIP,V.OFFSET+V.SKIP*3),C.CHIP2,PSET
18160 PLAY "L10O3F"
18170 IF RW=4 THEN PLAY "L40O2C":RETURN
18180 PUT((OLD.POS+1)*H.SKIP,V.OFFSET+V.SKIP*3),SQ,PSET
18190 PUT((OLD.POS+1)*H.SKIP,V.OFFSET+V.SKIP*4),C.CHIP2,PSET
18200 PLAY "L10O3G"
18210 IF RW=5 THEN PLAY "L40O2C":RETURN
18220 PUT((OLD.POS+1)*H.SKIP,V.OFFSET+V.SKIP*4),SQ,PSET
18230 PUT((OLD.POS+1)*H.SKIP,V.OFFSET+V.SKIP*5),C.CHIP2,PSET
18240 PLAY "L10O3A"
18250 PLAY "L40O2C":RETURN
19000 REM FLASH
19010 IF FLASH=0 THEN RETURN
19015 IF COL <> 1 THEN PLAY "MB P4 L2 C L2 C L2 C L1 O1 D MF"
      IF COL = 1 THEN PLAY "MBP4L4CL8CL1EMF"
19020 IF PL>1 THEN GOTO 19100
19030 FOR X = 1 TO 50
19035  FOR Y = 1 TO 75:NEXT Y
19040  FOR Y = 0 TO 3
19050   IF COL=1 THEN PUT((OLD.POS+1)*H.SKIP,V.OFFSET+V.SKIP*(RW+Y-1)),P.CHIP2,XOR
19060   IF COL=2 THEN PUT((OLD.POS+1)*H.SKIP,V.OFFSET+V.SKIP*(RW+Y-1)),C.CHIP2,XOR
19070  NEXT Y
19080 NEXT X
19090 RETURN
19100 IF PL>2 THEN GOTO 19300
19110 TEMP.POS=OLD.POS
19120 WHILE BOARD(RW,TEMP.POS)=COL
19130  TEMP.POS=TEMP.POS-1
19140  IF TEMP.POS=0 THEN GOTO 19160
19150 WEND
19160 TEMP.POS=TEMP.POS+1
19170 FOR X = 1 TO 50
19185  FOR Y = 1 TO 75:NEXT Y
19190  FOR Y = 0 TO 3
19200   IF COL=1 THEN PUT((TEMP.POS+Y+1)*H.SKIP,V.OFFSET+V.SKIP*(RW-1)),P.CHIP2,XOR
19210   IF COL=2 THEN PUT((TEMP.POS+Y+1)*H.SKIP,V.OFFSET+V.SKIP*(RW-1)),C.CHIP2,XOR
19220  NEXT Y
19230 NEXT X
19240 RETURN
19300 IF PL>3 THEN GOTO 19500
19310 TEMP.POS=OLD.POS:TEMP.RW=RW
19320 WHILE BOARD(TEMP.RW,TEMP.POS)=COL
19330  TEMP.POS=TEMP.POS-1:TEMP.RW=TEMP.RW+1
19340  IF TEMP.POS=0 OR TEMP.RW=7 THEN GOTO 19360
19350 WEND
19360 TEMP.POS=TEMP.POS+1:TEMP.RW=TEMP.RW-1
19370 FOR X = 1 TO 50
19385  FOR Y = 1 TO 75:NEXT Y
19390  FOR Y = 0 TO 3
19400   IF COL=1 THEN PUT((TEMP.POS+Y+1)*H.SKIP,V.OFFSET+V.SKIP*(TEMP.RW-Y-1)),P.CHIP2,XOR
19410   IF COL=2 THEN PUT((TEMP.POS+Y+1)*H.SKIP,V.OFFSET+V.SKIP*(TEMP.RW-Y-1)),C.CHIP2,XOR
19420  NEXT Y
19430 NEXT X
19440 RETURN
19500 IF PL > 4 THEN PRINT "ERROR TRAP AT 19500, PL>4":AA$=INPUT$(1):RETURN
19510 TEMP.POS=OLD.POS:TEMP.RW=RW
19520 WHILE BOARD(TEMP.RW,TEMP.POS)=COL
19530  TEMP.POS=TEMP.POS-1:TEMP.RW=TEMP.RW-1
19540  IF TEMP.POS=0 OR TEMP.RW=0 THEN GOTO 19560
19550 WEND
19560 TEMP.POS=TEMP.POS+1:TEMP.RW=TEMP.RW+1
19570 FOR X = 1 TO 50
19585  FOR Y = 1 TO 75:NEXT Y
19590  FOR Y = 0 TO 3
19600   IF COL=1 THEN PUT((TEMP.POS+Y+1)*H.SKIP,V.OFFSET+V.SKIP*(TEMP.RW+Y-1)),P.CHIP2,XOR
19610   IF COL=2 THEN PUT((TEMP.POS+Y+1)*H.SKIP,V.OFFSET+V.SKIP*(TEMP.RW+Y-1)),C.CHIP2,XOR
19620  NEXT Y
19630 NEXT X
19640 RETURN

20000 REM CHECK FOR AN OPEN TRIPLE
20010 TOT=0
20020 COL=BOARD(RW,OLD.POS)
20030 NEW.COL=COL:X=RW
20040 WHILE NEW.COL=COL AND X<=6
20050  TOT=TOT+1
20055  X=X+1
20057  IF X<=6 THEN NEW.COL=BOARD(X,OLD.POS)
20060 WEND
20070 IF TOT>=3 THEN PL=1:WIN=COL:RETURN
20080 TOT=1
20085 FOR I = 1 TO 3
20090 IF OLD.POS-I=0 THEN GOTO 20110 ELSE IF BOARD(RW,OLD.POS-I)=COL THEN TOT=TOT+1 ELSE GOTO 20110
20100 NEXT I
20110 FOR I = 1 TO 3
20120 IF OLD.POS+I=8 THEN GOTO 20140 ELSE IF BOARD(RW,OLD.POS+I)=COL THEN TOT=TOT+1 ELSE GOTO 20140
20130 NEXT I
20140 IF TOT>=3 THEN PL=2:WIN=COL:RETURN
20150 TOT=1
20165 FOR I = 1 TO 3
20170 IF OLD.POS-I=0 OR RW+I=7 THEN GOTO 20190 ELSE IF BOARD(RW+I,OLD.POS-I)=COL THEN TOT=TOT+1 ELSE GOTO 20190
20180 NEXT I
20190 FOR I = 1 TO 3
20200 IF OLD.POS+I=8 OR RW-I=0 THEN GOTO 20220 ELSE IF BOARD(RW-I,OLD.POS+I)=COL THEN TOT=TOT+1 ELSE GOTO 20220
20210 NEXT I
20220 IF TOT>=3 THEN PL=3:WIN=COL:RETURN
20230 TOT=1
20245 FOR I = 1 TO 3
20250 IF OLD.POS-I=0 OR RW-I=0 THEN GOTO 20270 ELSE IF BOARD(RW-I,OLD.POS-I)=COL THEN TOT=TOT+1 ELSE GOTO 20270
20260 NEXT I
20270 FOR I = 1 TO 3
20280 IF OLD.POS+I=8 OR RW+I=7 THEN GOTO 20300 ELSE IF BOARD(RW+I,OLD.POS+I)=COL THEN TOT=TOT+1 ELSE GOTO 20300
20290 NEXT I
20300 IF TOT>=3 THEN PL=4:WIN=COL:RETURN
20310 RETURN
21000 REM CHECK FOR DRAW
21005 IF WIN <> 0 THEN RETURN
21010 FOR X = 1 TO 7
21020  IF BOARD(1,X)=0 THEN RETURN
21030 NEXT X
21040 WIN=3:RETURN
22000 REM LOAD SHAPE L.K
22010 DIM L.K( 158 )
22020 S.WIDTH= 35 :S.HEIGHT= 35
22030 FOR I = 0 TO S.WIDTH-1
22040 FOR J = 0 TO S.HEIGHT-1
22050 READ S.COL
22060 IF S.COL <> 0 THEN PSET(I+78,J+77),S.COL
22070 NEXT J
22080 NEXT I
22090 GET(78,77)-(78+S.WIDTH-1,77+S.HEIGHT-1),L.K
22100 RETURN
23000 REM LOAD SHAPE L.E
23010 DIM L.E( 48 )
23020 S.WIDTH= 19 :S.HEIGHT= 19
23030 FOR I = 0 TO S.WIDTH-1
23040 FOR J = 0 TO S.HEIGHT-1
23050 READ S.COL
23060 IF S.COL<>0 THEN PSET(I+111,J+93),S.COL
23070 NEXT J
23080 NEXT I
23090 GET(111,93)-(111+S.WIDTH-1,93+S.HEIGHT-1),L.E
23100 RETURN
24000 REM LOAD SHAPE L.N
24010 DIM L.N( 48 )
24020 S.WIDTH= 19 :S.HEIGHT= 19
24030 FOR I = 0 TO S.WIDTH-1
24040 FOR J = 0 TO S.HEIGHT-1
24050 READ S.COL
24060 IF S.COL<>0 THEN PSET(I+130,J+93),S.COL
24070 NEXT J
24080 NEXT I
24090 GET(130,93)-(130+S.WIDTH-1,93+S.HEIGHT-1),L.N
24100 RETURN
25000 REM LOAD SHAPE L.H
25010 DIM L.H( 132 )
25020 S.WIDTH= 30 :S.HEIGHT= 35
25030 FOR I = 0 TO S.WIDTH-1
25040 FOR J = 0 TO S.HEIGHT-1
25050 READ S.COL
25060 IF S.COL<>0 THEN PSET(I+168,J+77),S.COL
25070 NEXT J
25080 NEXT I
25090 GET(168,77)-(168+S.WIDTH-1,77+S.HEIGHT-1),L.H
25100 RETURN
26000 REM LOAD SHAPE L.I
26010 DIM L.I( 53 )
26020 S.WIDTH= 12 :S.HEIGHT= 35
26030 FOR I = 0 TO S.WIDTH-1
26040 FOR J = 0 TO S.HEIGHT-1
26050 READ S.COL
26060 IF S.COL<>0 THEN PSET(I+201,J+77),S.COL
26070 NEXT J
26080 NEXT I
26090 GET(201,77)-(201+S.WIDTH-1,77+S.HEIGHT-1),L.I
26100 RETURN
27000 REM LOAD SHAPE L.L
27010 DIM L.L( 53 )
27020 S.WIDTH= 12 :S.HEIGHT= 35
27030 FOR I = 0 TO S.WIDTH-1
27040 FOR J = 0 TO S.HEIGHT-1
27050 READ S.COL
27060 IF S.COL<>0 THEN PSET(I+215,J+77),S.COL
27070 NEXT J
27080 NEXT I
27090 GET(215,77)-(215+S.WIDTH-1,77+S.HEIGHT-1),L.L
27100 RETURN
28000 REM INITIALIZE TITLE SCREEN
28010 SCREEN 1
28020 LOCATE 5,16:PRINT "LINK - FOUR"
28030 LOCATE 7,14:PRINT "A Logic Game By:"
28040 GOSUB 22000:GOSUB 23000:GOSUB 24000:GOSUB 25000:GOSUB 26000:GOSUB 27000
28050 PUT(229,77),L.L
28060 LOCATE 17,8:PRINT "Efficient Computer Solutions"
28070 LOCATE 18,13:PRINT "For Your Business"
28080 LOCATE 19,14:PRINT "(818) 709-8366"
28140 RETURN
29000 REM DRAW TITLE SCREEN
29010 CLS
29020 LOCATE 5,16:PRINT "LINK - FOUR"
29030 LOCATE 7,14:PRINT "A Logic Game By:"
29040 PUT(78,77),L.K
29042 PUT(111,93),L.E
29044 PUT(130,93),L.N
29046 PUT(168,77),L.H
29048 PUT(201,77),L.I
29050 PUT(215,77),L.L
29052 PUT(229,77),L.L
29060 LOCATE 17,8:PRINT "Efficient Computer Solutions"
29070 LOCATE 18,13:PRINT "For Your Business"
29080 LOCATE 19,14:PRINT "(818) 702-0450"
29090 LOCATE 21,10:PRINT "PRESS ANY KEY TO BEGIN"
29140 WHILE INKEY$="":WEND:RETURN

60000 DATA 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
60010 DATA 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
60020 DATA 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,0
60030 DATA 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,0,0,3,3,0
60040 DATA 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,3,0,0,3,3,3,3
60050 DATA 3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,0,0,3,3,3,3,3
60060 DATA 3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,0,0,3,3,3,3,3,3

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -