initial cammit
[qbasicapps.git] / games / kabe.bas
1 ' This program is created by Svjatoslav Agejenko\r
2 '                     in 1998\r
3 \r
4 '    USE  w a z s  keys to move around\r
5 '   and ENTER key to celect chess and put to other place\r
6 \r
7 DECLARE SUB look ()\r
8 DECLARE SUB motleb ()\r
9 DECLARE SUB mang ()\r
10 DECLARE SUB sisend ()\r
11 DECLARE SUB asend ()\r
12 DEFINT A-Z\r
13 DIM SHARED nu(-100 TO 300) AS INTEGER\r
14 DIM SHARED kaik AS INTEGER\r
15 DIM SHARED looma AS INTEGER\r
16 DIM SHARED hiir(1000)\r
17 DIM SHARED ax1, ax2\r
18 SCREEN 2\r
19 CLS\r
20 LINE (1, 1)-(10, 1)\r
21 LINE (1, 1)-(1, 5)\r
22 LINE (10, 1)-(6, 2)\r
23 LINE (6, 2)-(10, 4)\r
24 LINE (10, 4)-(8, 5)\r
25 LINE (8, 5)-(4, 3)\r
26 LINE (4, 3)-(1, 5)\r
27 PAINT (2, 2), 1\r
28 GET (1, 1)-(10, 5), hiir\r
29 CLS\r
30 FOR a = 0 TO 10\r
31 LINE ((a * 40) + 20, 10)-((a * 40) + 20, 189), 1\r
32 NEXT a\r
33 \r
34 FOR a = 0 TO 20\r
35 LINE (20, (a * 18) + 9)-(420, (a * 18) + 9), 1\r
36 NEXT a\r
37 \r
38 FOR a = 1 TO 200\r
39 nu(a) = 4\r
40 NEXT a\r
41 \r
42 FOR a = 2 TO 10 STEP 2\r
43 FOR b = 1 TO 10 STEP 2\r
44 PAINT ((b * 40) + 5, (a * 18) + 5)\r
45 NEXT b\r
46 NEXT a\r
47 \r
48 FOR a = 1 TO 10 STEP 2\r
49 FOR b = 2 TO 10 STEP 2\r
50 PAINT ((b * 40) + 5, (a * 18) + 5)\r
51 NEXT b\r
52 NEXT a\r
53 \r
54 FOR a = 2 TO 4 STEP 2\r
55 FOR b = 1 TO 10 STEP 2\r
56 nu(((a - 1) * 20) + b) = 1\r
57 NEXT b\r
58 NEXT a\r
59 \r
60 FOR a = 1 TO 4 STEP 2\r
61 FOR b = 2 TO 10 STEP 2\r
62 nu(((a - 1) * 20) + b) = 1\r
63 NEXT b\r
64 NEXT a\r
65 \r
66 FOR a = 8 TO 10 STEP 2\r
67 FOR b = 1 TO 10 STEP 2\r
68 nu(((a - 1) * 20) + b) = 0\r
69 NEXT b\r
70 NEXT a\r
71 \r
72 FOR a = 7 TO 10 STEP 2\r
73 FOR b = 2 TO 10 STEP 2\r
74 nu(((a - 1) * 20) + b) = 0\r
75 NEXT b\r
76 NEXT a\r
77 \r
78 FOR b = 2 TO 10 STEP 2\r
79 nu(80 + b) = 3\r
80 NEXT b\r
81 \r
82 FOR b = 1 TO 10 STEP 2\r
83 nu(100 + b) = 3\r
84 NEXT b\r
85 \r
86 asend\r
87 kaik = 1\r
88 mang\r
89 \r
90 SUB asend\r
91 FOR b = 1 TO 10\r
92 FOR a = 1 TO 10\r
93 v = nu(((b - 1) * 20) + a)\r
94 SELECT CASE v\r
95 CASE 1\r
96 CIRCLE (a * 40, b * 18), 17, 1\r
97 PAINT (a * 40, b * 18), 1\r
98 CIRCLE (a * 40, b * 18), 17, 0\r
99 CIRCLE (a * 40, b * 18), 16, 0\r
100 LINE ((a * 40) - 16, b * 18)-((a * 40) + 16, b * 18), 0\r
101 CASE 0\r
102 CIRCLE (a * 40, b * 18), 17, 0\r
103 PAINT (a * 40, b * 18), 0\r
104 CIRCLE (a * 40, b * 18), 17, 1\r
105 CIRCLE (a * 40, b * 18), 15, 1\r
106 CIRCLE (a * 40, b * 18), 3, 1\r
107 CIRCLE (a * 40, b * 18), 7, 1\r
108 LINE ((a * 40) - 16, b * 18)-((a * 40) + 16, b * 18), 0\r
109 CASE 3\r
110 PAINT (a * 40, b * 18), 1\r
111 END SELECT\r
112 NEXT a\r
113 NEXT b\r
114 END SUB\r
115 \r
116 SUB look\r
117 looma = 0\r
118 FOR a = 1 TO 200\r
119 IF nu(a) = 0 AND nu(a - 21) = 1 AND nu(a - 42) = 3 THEN looma = 1\r
120 IF nu(a) = 0 AND nu(a - 19) = 1 AND nu(a - 38) = 3 THEN looma = 1\r
121 IF nu(a) = 0 AND nu(a + 21) = 1 AND nu(a + 42) = 3 THEN looma = 1\r
122 IF nu(a) = 0 AND nu(a + 19) = 1 AND nu(a + 38) = 3 THEN looma = 1\r
123 NEXT a\r
124 END SUB\r
125 \r
126 SUB mang\r
127 4\r
128 sisend\r
129 motleb\r
130 look\r
131 IF looma = 1 THEN SOUND 1234, 2\r
132 GOTO 4\r
133 END SUB\r
134 \r
135 SUB motleb\r
136 3\r
137 REM                                  T O P E L T   L O O K\r
138 FOR a = 1 TO 200\r
139 IF nu(a) = 1 AND nu(a + 21) = 0 AND nu(a + 42) = 3 AND nu(a + 61) = 0 AND nu(a + 80) = 3 THEN nu(a) = 3: nu(a + 21) = 3: nu(a + 42) = 1: kaik = 1: asend: GOTO 3\r
140 IF nu(a) = 1 AND nu(a + 21) = 0 AND nu(a + 42) = 3 AND nu(a + 23) = 0 AND nu(a + 4) = 3 THEN nu(a) = 3: nu(a + 21) = 3: nu(a + 42) = 1: kaik = 1: asend: GOTO 3\r
141 IF nu(a) = 1 AND nu(a + 19) = 0 AND nu(a + 38) = 3 AND nu(a + 59) = 0 AND nu(a + 80) = 3 THEN nu(a) = 3: nu(a + 19) = 3: nu(a + 38) = 1: kaik = 1: asend: GOTO 3\r
142 IF nu(a) = 1 AND nu(a + 19) = 0 AND nu(a + 38) = 3 AND nu(a + 17) = 0 AND nu(a - 4) = 3 THEN nu(a) = 3: nu(a + 19) = 3: nu(a + 38) = 1: kaik = 1: asend: GOTO 3\r
143 IF nu(a) = 1 AND nu(a + 21) = 0 AND nu(a + 42) = 3 AND nu(a + 63) = 0 AND nu(a + 84) = 3 THEN nu(a) = 3: nu(a + 21) = 3: nu(a + 42) = 1: kaik = 1: asend: GOTO 3\r
144 IF nu(a) = 1 AND nu(a + 19) = 0 AND nu(a + 38) = 3 AND nu(a + 57) = 0 AND nu(a + 76) = 3 THEN nu(a) = 3: nu(a + 19) = 3: nu(a + 38) = 1: aiki = 1: asend: GOTO 3\r
145 \r
146 IF nu(a) = 1 AND nu(a - 21) = 0 AND nu(a - 42) = 3 AND nu(a - 61) = 0 AND nu(a - 80) = 3 THEN nu(a) = 3: nu(a - 21) = 3: nu(a - 42) = 1: kaik = 1: asend: GOTO 3\r
147 IF nu(a) = 1 AND nu(a - 21) = 0 AND nu(a - 42) = 3 AND nu(a - 23) = 0 AND nu(a - 4) = 3 THEN nu(a) = 3: nu(a - 21) = 3: nu(a - 42) = 1: kaik = 1: asend: GOTO 3\r
148 IF nu(a) = 1 AND nu(a - 19) = 0 AND nu(a - 38) = 3 AND nu(a - 59) = 0 AND nu(a - 80) = 3 THEN nu(a) = 3: nu(a - 19) = 3: nu(a - 38) = 1: kaik = 1: asend: GOTO 3\r
149 IF nu(a) = 1 AND nu(a - 19) = 0 AND nu(a - 38) = 3 AND nu(a - 17) = 0 AND nu(a + 4) = 3 THEN nu(a) = 3: nu(a - 19) = 3: nu(a - 38) = 1: kaik = 1: asend: GOTO 3\r
150 IF nu(a) = 1 AND nu(a - 21) = 0 AND nu(a - 42) = 3 AND nu(a - 63) = 0 AND nu(a - 84) = 3 THEN nu(a) = 3: nu(a - 21) = 3: nu(a - 42) = 1: kaik = 1: asend: GOTO 3\r
151 IF nu(a) = 1 AND nu(a - 19) = 0 AND nu(a - 38) = 3 AND nu(a - 57) = 0 AND nu(a - 76) = 3 THEN nu(a) = 3: nu(a - 19) = 3: nu(a - 38) = 1: aiki = 1: asend: GOTO 3\r
152 NEXT a\r
153 \r
154 REM                                  L I H T S A L T   L O O K\r
155 FOR a = 1 TO 200\r
156 IF nu(a) = 1 AND nu(a + 21) = 0 AND nu(a + 42) = 3 THEN nu(a) = 3: nu(a + 21) = 3: nu(a + 42) = 1: GOTO 2\r
157 IF nu(a) = 1 AND nu(a + 19) = 0 AND nu(a + 38) = 3 THEN nu(a) = 3: nu(a + 19) = 3: nu(a + 38) = 1: GOTO 2\r
158 IF nu(a) = 1 AND nu(a - 21) = 0 AND nu(a - 42) = 3 THEN nu(a) = 3: nu(a - 21) = 3: nu(a - 42) = 1: GOTO 2\r
159 IF nu(a) = 1 AND nu(a - 19) = 0 AND nu(a - 38) = 3 THEN nu(a) = 3: nu(a - 19) = 3: nu(a - 38) = 1: GOTO 2\r
160 NEXT a\r
161 REM                                      K A I T S E B\r
162 FOR a = 1 TO 200\r
163 IF nu(a) = 1 AND nu(a + 19) = 3 AND nu(a + 21) = 3 AND nu(a + 40) = 1 AND nu(a + 38) = 3 AND nu(a + 61) = 0 THEN nu(a) = 3: nu(a + 19) = 1: GOTO 2\r
164 IF nu(a) = 1 AND nu(a + 19) = 3 AND nu(a + 21) = 0 AND nu(a + 40) = 1 AND nu(a + 38) = 3 AND nu(a + 61) = 0 THEN nu(a) = 3: nu(a + 19) = 1: GOTO 2\r
165 IF nu(a) = 1 AND nu(a + 19) = 3 AND nu(a + 21) = 3 AND nu(a + 40) = 1 AND nu(a + 38) = 1 AND nu(a + 61) = 0 THEN nu(a) = 3: nu(a + 19) = 1: GOTO 2\r
166 IF nu(a) = 1 AND nu(a + 19) = 3 AND nu(a + 21) = 0 AND nu(a + 40) = 1 AND nu(a + 38) = 1 AND nu(a + 61) = 0 THEN nu(a) = 3: nu(a + 19) = 1: GOTO 2\r
167 \r
168 IF nu(a - 2) = 1 AND nu(a + 19) = 3 AND nu(a) = 3 AND nu(a + 40) = 1 AND nu(a + 38) = 3 AND nu(a + 61) = 0 THEN nu(a - 2) = 3: nu(a + 19) = 1: GOTO 2\r
169 IF nu(a - 2) = 1 AND nu(a + 19) = 3 AND nu(a) = 1 AND nu(a + 40) = 1 AND nu(a + 38) = 3 AND nu(a + 61) = 0 THEN nu(a - 2) = 3: nu(a + 19) = 1: GOTO 2\r
170 IF nu(a - 2) = 1 AND nu(a + 19) = 3 AND nu(a) = 3 AND nu(a + 40) = 1 AND nu(a + 38) = 1 AND nu(a + 61) = 0 THEN nu(a - 2) = 3: nu(a + 19) = 1: GOTO 2\r
171 IF nu(a - 2) = 1 AND nu(a + 19) = 3 AND nu(a) = 1 AND nu(a + 40) = 1 AND nu(a + 38) = 1 AND nu(a + 61) = 0 THEN nu(a - 2) = 3: nu(a + 19) = 1: GOTO 2\r
172 NEXT a\r
173 REM                                  L A H E B   N U R K A\r
174 FOR a = 1 TO 200\r
175 IF nu(a) = 1 AND nu(a + 2) = 4 AND nu(a + 21) = 3 THEN nu(a) = 3: nu(a + 21) = 1: GOTO 2\r
176 IF nu(a) = 1 AND nu(a - 2) = 4 AND nu(a + 19) = 3 THEN nu(a) = 3: nu(a + 19) = 1: GOTO 2\r
177 NEXT a\r
178 REM                                  O H U T U   K A I K\r
179 FOR a = 1 TO 200\r
180 IF nu(a) = 1 AND nu(a + 19) = 3 AND nu(a + 38) = 3 AND nu(a + 40) = 3 THEN nu(a) = 3: nu(a + 19) = 1: GOTO 2\r
181 IF nu(a) = 1 AND nu(a + 21) = 3 AND nu(a + 42) = 3 AND nu(a + 40) = 3 THEN nu(a) = 3: nu(a + 21) = 1: GOTO 2\r
182 \r
183 IF nu(a) = 1 AND nu(a + 19) = 3 AND nu(a + 38) = 1 AND nu(a + 40) = 3 THEN nu(a) = 3: nu(a + 19) = 1: GOTO 2\r
184 IF nu(a) = 1 AND nu(a + 21) = 3 AND nu(a + 42) = 1 AND nu(a + 40) = 3 THEN nu(a) = 3: nu(a + 21) = 1: GOTO 2\r
185 \r
186 IF nu(a) = 1 AND nu(a + 19) = 3 AND nu(a + 38) = 3 AND nu(a + 40) = 1 THEN nu(a) = 3: nu(a + 19) = 1: GOTO 2\r
187 IF nu(a) = 1 AND nu(a + 21) = 3 AND nu(a + 42) = 3 AND nu(a + 40) = 1 THEN nu(a) = 3: nu(a + 21) = 1: GOTO 2\r
188 \r
189 IF nu(a) = 1 AND nu(a + 19) = 3 AND nu(a + 38) = 1 AND nu(a + 40) = 1 THEN nu(a) = 3: nu(a + 19) = 1: GOTO 2\r
190 IF nu(a) = 1 AND nu(a + 21) = 3 AND nu(a + 42) = 1 AND nu(a + 40) = 1 THEN nu(a) = 3: nu(a + 21) = 1: GOTO 2\r
191 NEXT a\r
192 REM                                  M O T T E T U   K A I K\r
193 FOR a = 1 TO 200\r
194 IF nu(a) = 1 AND nu(a + 21) = 3 THEN nu(a) = 3: nu(a + 21) = 1: GOTO 2\r
195 IF nu(a) = 1 AND nu(a + 19) = 3 THEN nu(a) = 3: nu(a + 19) = 1: GOTO 2\r
196 NEXT a\r
197 LOCATE 4, 5\r
198 PRINT " S I N U   V O I T"\r
199 END\r
200 GOTO 3\r
201 2\r
202 asend\r
203 9\r
204 END SUB\r
205 \r
206 SUB sisend\r
207 DIM asdf(1000)\r
208 \r
209 p = 1\r
210 5\r
211 a = ax1\r
212 b = ax2\r
213 7\r
214 IF p = 1 THEN LOCATE 1, 70: PRINT "Kust !"\r
215 IF p = 2 THEN LOCATE 1, 70: PRINT "kuhu !"\r
216 \r
217 LOCATE 2, 60\r
218 qw = (((b \ 18) - 1) * 20) + (a \ 40)\r
219 PRINT qw\r
220 GET (a, b)-(a + 10, b + 10), asdf\r
221 PUT (a, b), hiir, PSET\r
222 a$ = INPUT$(1)\r
223 PUT (a, b), asdf, PSET\r
224 IF p = 2 AND a$ = CHR$(13) THEN a2 = qw: ax1 = a: ax2 = b: GOTO 8\r
225 IF p = 1 AND a$ = CHR$(13) THEN a1 = qw: p = 2\r
226 IF a$ = "q" THEN END\r
227 IF a$ = "s" THEN a = a + 40\r
228 IF a$ = "a" THEN a = a - 40\r
229 IF a$ = "w" THEN b = b - 18\r
230 IF a$ = "z" THEN b = b + 18\r
231 IF a < 1 THEN a = 1\r
232 IF b < 1 THEN b = 1\r
233 \r
234 GOTO 7\r
235 8\r
236 kaik = 1\r
237 LOCATE 3, 60\r
238 PRINT a1; "-"; a2\r
239 10\r
240 REM                                     K O N T R O L L\r
241 IF a1 = a2 + 19 AND nu(a1) = 0 AND nu(a2) = 3 THEN BEEP: SWAP nu(a1), nu(a2)\r
242 IF a1 = a2 + 21 AND nu(a1) = 0 AND nu(a2) = 3 THEN BEEP: SWAP nu(a1), nu(a2)\r
243 zxcv = 0\r
244 IF a1 = a2 + 42 AND nu(a1) = 0 AND nu(a2) = 3 AND nu(a2 + 21) = 1 THEN BEEP: SWAP nu(a1), nu(a2): nu(a2 + 21) = 3: zxcv = 1\r
245 IF a1 = a2 + 38 AND nu(a1) = 0 AND nu(a2) = 3 AND nu(a2 + 19) = 1 THEN BEEP: SWAP nu(a1), nu(a2): nu(a2 + 19) = 3: zxcv = 1\r
246 IF a1 = a2 - 42 AND nu(a1) = 0 AND nu(a2) = 3 AND nu(a2 - 21) = 1 THEN BEEP: SWAP nu(a1), nu(a2): nu(a2 - 21) = 3: zxcv = 1\r
247 IF a1 = a2 - 38 AND nu(a1) = 0 AND nu(a2) = 3 AND nu(a2 - 19) = 1 THEN BEEP: SWAP nu(a1), nu(a2): nu(a2 - 19) = 3: zxcv = 1\r
248 asend\r
249 IF zxcv = 1 THEN look: IF looma = 1 THEN SOUND 1234, 1: p = 2: a1 = a2: GOTO 5\r
250 6\r
251 END SUB\r
252 \r