主题:[原创]双人坦克
igdx
[专家分:110] 发布于 2005-08-30 15:46:00
问题大多解决了
修改后的
DECLARE SUB ankey2 (j3!, j4!, ke)
DECLARE SUB htu (b1!, b2!, b3!, b4!)
DECLARE SUB ankey1 (j1, j2, ke)
SCREEN 12
COLOR 5
LOCATE 1, 57: PRINT "IGDX tank - II"
DATA 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1
DATA 1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1
DATA 1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1
DATA 1,0,0,1,0,0,1,1,1,1,1,1,1,1,1,1,1,0,0,1
DATA 1,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,1
DATA 1,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,1
DATA 1,0,0,1,0,0,1,1,1,1,1,0,0,0,0,0,1,0,0,1
DATA 1,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,1
DATA 1,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,1
DATA 1,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,1
DATA 1,0,0,1,1,1,1,0,0,0,1,1,1,1,0,0,1,0,0,1
DATA 1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1
DATA 1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1
DATA 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1
DIM SHARED t1s(120), t2x(120), t3z(120), t4y(120)
't1 shang---------------
LINE (0, 0)-(27, 27), 0, BF
LINE (7, 11)-(21, 25), 7, BF
LINE (13, 2)-(15, 12), 7, BF
FOR i = 2 TO 12 STEP 2
LINE (7, 11 + i)-(9, 11 + i), 0
NEXT
FOR i = 2 TO 12 STEP 2
LINE (19, 11 + i)-(21, 11 + i), 0
NEXT
GET (0, 0)-(27, 27), t1s
't2 xia------------
LINE (0, 0)-(27, 27), 0, BF
LINE (7, 2)-(21, 16), 7, BF
LINE (13, 15)-(15, 25), 7, BF
FOR i = 2 TO 12 STEP 2
LINE (7, 2 + i)-(9, 2 + i), 0
NEXT
FOR i = 2 TO 12 STEP 2
LINE (19, 2 + i)-(21, 2 + i), 0
NEXT
GET (0, 0)-(27, 27), t2x
't3 zuo---------
LINE (0, 0)-(27, 27), 0, BF
LINE (11, 7)-(25, 21), 7, BF
LINE (2, 13)-(12, 15), 7, BF
FOR i = 2 TO 12 STEP 2
LINE (11 + i, 7)-(11 + i, 9), 0
NEXT
FOR i = 2 TO 12 STEP 2
LINE (11 + i, 19)-(11 + i, 21), 0
NEXT
GET (0, 0)-(27, 27), t3z
't4 --------------------
LINE (0, 0)-(27, 27), 0, BF
LINE (2, 7)-(16, 21), 7, BF
LINE (15, 13)-(25, 15), 7, BF
FOR i = 2 TO 12 STEP 2
LINE (2 + i, 7)-(2 + i, 9), 0
NEXT
FOR i = 2 TO 12 STEP 2
LINE (2 + i, 19)-(2 + i, 29), 0
NEXT
GET (0, 0)-(27, 27), t4y
LINE (0, 0)-(27, 27), 0, BF
'---------------
DIM SHARED tu%(20, 14)
FOR i = 1 TO 14
FOR j = 1 TO 20
READ tus
tu%(j, i) = tus
NEXT j, i
'hua tu --------------
FOR i = 1 TO 14
FOR j = 1 TO 20
IF tu%(j, i) = 1 THEN
CALL htu(j * 28, i * 28, j * 28 + 28, i * 28 + 28)
END IF
NEXT j, i
'----------------
PUT (8 * 28, 13 * 28), t1s
PUT (12 * 28, 13 * 28), t1s
DO: LOOP UNTIL INKEY$ <> ""
PUT (8 * 28, 13 * 28), t1s
PUT (12 * 28, 13 * 28), t1s
'main()-----------------
DIM SHARED a1, a2, a3, a4, a, w, s, j1, j2, j3, j4, aa2, ww2, dd2, ss2, sc1
DIM SHARED d, up, left, et, sp, down, right, aa1, ww1, dd1, ss1, k1, k2, sc2
j1 = 12: j2 = 13: j3 = 8: j4 = 13
a1 = 12: a2 = 13: a3 = 8: a4 = 13
PUT (8 * 28, 13 * 28), t1s
PUT (12 * 28, 13 * 28), t1s
'-----main-----
DO
ke = INP(&H60)
CALL ankey1(j1, j2, ke)
CALL ankey2(j3, j4, ke)
LOOP
SUB ankey1 (j1, j2, ke)
'ankey1----------------
SELECT CASE ke
CASE 28
et = 28: up = 72 + 128: left = 75 + 128: down = 80 + 128: right = 77 + 128
CASE 28 + 128
et = 28 + 128
CASE 72
up = 72: et = 28 + 128: left = 75 + 128: down = 80 + 128: right = 77 + 128
CASE 72 + 128
up = 72 + 128
CASE 75
left = 75: up = 72 + 128: et = 28 + 128: down = 80 + 128: right = 77 + 128
CASE 75 + 128
left = 75 + 128
CASE 80
down = 80: up = 72 + 128: et = 28 + 128: left = 75 + 128: right = 77 + 128
CASE 80 + 128
down = 80 + 128
CASE 77
right = 77: up = 72 + 128: et = 28 + 128: left = 75 + 128: down = 80 + 128
CASE 77 + 128
right = 77 + 128
CASE 1
END
END SELECT
'-----------------------
沙发
igdx [专家分:110] 发布于 2005-08-29 00:25:00
SELECT CASE right
CASE 77
IF ABS(j1 + 1 - j3) = 0 AND (ABS(j2 - j4) < 1 OR j2 = j4) AND dd1 = 1 THEN
k1 = 1
ELSE
dd1 = 1: ww1 = 0: ss1 = 0: aa1 = 0: k1 = 0
IF tu%(j1 + 1, j2 + .47) <> 1 AND tu%(j1 + 1, j2 - .47) <> 1 AND tu%(j1 + 1, j2) <> 1 THEN
LINE (a1 * 28, a2 * 28)-(a1 * 28 + 28, a2 * 28 + 28), 0, BF
j1 = j1 + .0625 / 2: a1 = j1
PUT (j1 * 28, j2 * 28), t4y
ELSEIF j1 <> INT(j1) THEN
LINE (a1 * 28, a2 * 28)-(a1 * 28 + 28, a2 * 28 + 28), 0, BF
j1 = j1 + .0625 / 2: a1 = j1
PUT (j1 * 28, j2 * 28), t4y
END IF
END IF
END SELECT
SELECT CASE up
CASE 72
IF ABS(j2 - (j4 + 1)) = 0 AND (ABS(j1 - j3) < 1 OR j3 = j1) AND ww1 = 1 THEN
k1 = 1
ELSE
ww1 = 1: ss1 = 0: aa1 = 0: dd1 = 0: k1 = 0
IF tu%(j1 + .47, j2 - 1) <> 1 AND tu%(j1 - .47, j2 - 1) <> 1 AND tu%(j1, j2 - 1) <> 1 THEN
LINE (a1 * 28, a2 * 28)-(a1 * 28 + 28, a2 * 28 + 28), 0, BF
j2 = j2 - .0625 / 2: a2 = j2
PUT (j1 * 28, j2 * 28), t1s
ELSEIF j2 <> INT(j2) THEN
LINE (a1 * 28, a2 * 28)-(a1 * 28 + 28, a2 * 28 + 28), 0, BF
j2 = j2 - .0625 / 2: a2 = j2
PUT (j1 * 28, j2 * 28), t1s
END IF
END IF
END SELECT
SELECT CASE left
CASE 75
IF ABS(j1 - (j3 + 1)) = 0 AND (ABS(j2 - j4) < 1 OR j2 = j4) AND aa1 = 1 THEN
k1 = 1
ELSE
aa1 = 1: ww1 = 0: ss1 = 0: dd1 = 0: k1 = 0
IF tu%(j1 - 1, j2 + .47) <> 1 AND tu%(j1 - 1, j2 - .47) <> 1 AND tu%(j1 - 1, j2) <> 1 THEN
LINE (a1 * 28, a2 * 28)-(a1 * 28 + 28, a2 * 28 + 28), 0, BF
j1 = j1 - .0625 / 2: a1 = j1
PUT (j1 * 28, j2 * 28), t3z
ELSEIF j1 <> INT(j1) THEN
LINE (a1 * 28, a2 * 28)-(a1 * 28 + 28, a2 * 28 + 28), 0, BF
j1 = j1 - .0625 / 2: a1 = j1
PUT (j1 * 28, j2 * 28), t3z
END IF
END IF
END SELECT
SELECT CASE down
CASE 80
IF ABS(j2 + 1 - j4) = 0 AND (ABS(j1 - j3) < 1 OR j1 = j3) AND ss1 = 1 THEN
k1 = 1
ELSE
ss1 = 1: ww1 = 0: aa1 = 0: dd1 = 0: k1 = 0
IF tu%(j1 + .47, j2 + 1) <> 1 AND tu%(j1 - .47, j2 + 1) <> 1 AND tu%(j1, j2 + 1) <> 1 THEN
LINE (a1 * 28, a2 * 28)-(a1 * 28 + 28, a2 * 28 + 28), 0, BF
j2 = j2 + .0625 / 2: a2 = j2
PUT (j1 * 28, j2 * 28), t2x
ELSEIF j2 <> INT(j2) THEN
LINE (a1 * 28, a2 * 28)-(a1 * 28 + 28, a2 * 28 + 28), 0, BF
j2 = j2 + .0625 / 2: a2 = j2
PUT (j1 * 28, j2 * 28), t2x
END IF
END IF
END SELECT
SELECT CASE et
CASE 28
IF k1 = 1 THEN
CIRCLE (j3 * 28 + 14, j4 * 28 + 14), 6, 2
PAINT (j3 * 28 + 14, j4 * 28 + 14), 2
sc1 = sc1 + 1
LOCATE 28, 3: PRINT "1p"; sc1
k1 = 0
END IF
END SELECT
END SUB
SUB ankey2 (j3, j4, ke)
'ankey2-----------------
SELECT CASE ke
CASE 57
sp = 57: d = 32 + 128: a = 30 + 128: w = 17 + 128: s = 31 + 128
CASE 57 + 128
sp = 57 + 128
CASE 17
w = 17: sp = 57 + 128: d = 32 + 128: a = 30 + 128: s = 31 + 128
CASE 17 + 128
w = 17 + 128
CASE 30
a = 30: sp = 57 + 128: d = 32 + 128: w = 17 + 128: s = 31 + 128
CASE 30 + 128
a = 30 + 128
CASE 31
s = 31: sp = 57 + 128: d = 32 + 128: a = 30 + 128: w = 17 + 128
CASE 31 + 128
s = 31 + 128
CASE 32
d = 32: sp = 57 + 128: a = 30 + 128: w = 17 + 128: s = 31 + 128
CASE 32 + 128
d = 32 + 128
CASE 1
END
END SELECT
'-----------------------
SELECT CASE d
CASE 32
IF ABS(j3 + 1 - j1) = 0 AND (ABS(j4 - j2) < 1 OR j4 = j2) AND dd2 = 1 THEN
k2 = 1
ELSE
k2 = 0
dd2 = 1: ww2 = 0: aa2 = 0: ss2 = 0
IF tu%(j3 + 1, j4 + .47) <> 1 AND tu%(j3 + 1, j4 - .47) <> 1 AND tu%(j3 + 1, j4) <> 1 THEN
LINE (a3 * 28, a4 * 28)-(a3 * 28 + 28, a4 * 28 + 28), 0, BF
j3 = j3 + .0625 / 2: a3 = j3
PUT (j3 * 28, j4 * 28), t4y
ELSEIF j3 <> INT(j3) THEN
LINE (a3 * 28, a4 * 28)-(a3 * 28 + 28, a4 * 28 + 28), 0, BF
j3 = j3 + .0625 / 2: a3 = j3
PUT (j3 * 28, j4 * 28), t4y
END IF
END IF
END SELECT
SELECT CASE w
CASE 17
IF (ABS(j3 - j1) < 1 OR j3 = j1) AND ABS(j4 - (j2 + 1)) = 0 AND ww2 = 1 THEN
k2 = 1
ELSE
k2 = 0
ww2 = 1: dd2 = 0: aa2 = 0: ss2 = 0
IF tu%(j3 + .47, j4 - 1) <> 1 AND tu%(j3 - .47, j4 - 1) <> 1 AND tu%(j3, j4 - 1) <> 1 THEN
LINE (a3 * 28, a4 * 28)-(a3 * 28 + 28, a4 * 28 + 28), 0, BF
j4 = j4 - .0625 / 2: a4 = j4
PUT (j3 * 28, j4 * 28), t1s
ELSEIF j4 <> INT(j4) THEN
LINE (a3 * 28, a4 * 28)-(a3 * 28 + 28, a4 * 28 + 28), 0, BF
j4 = j4 - .0625 / 2: a4 = j4
PUT (j3 * 28, j4 * 28), t1s
END IF
END IF
END SELECT