Rev 2281 | Rev 2283 | Go to most recent revision | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 2281 | Rev 2282 | ||
---|---|---|---|
Line 118... | Line 118... | ||
118 | { |
118 | { |
119 | switch(WaitEvent()) |
119 | switch(WaitEvent()) |
120 | { |
120 | { |
121 | case evButton: |
121 | case evButton: |
122 | id = GetButtonID(); |
122 | id = GetButtonID(); |
123 | if (id==1) || (id==4) ExitProcess(); |
123 | IF (id==1) || (id==4) ExitProcess(); |
124 | if (id==2) goto _NEW_GAME_MARK; |
124 | IF (id==2) goto _NEW_GAME_MARK; |
125 | if (id==3) goto _HELP_MARK; |
125 | IF (id==3) goto _HELP_MARK; |
126 | if (id>=100) make_turn(id-100); |
126 | IF (id>=100) make_turn(id-100); |
127 | if (id>=10) |
127 | if (id>=10) |
128 | { |
128 | { |
129 | id=id-10*3; |
129 | id=id-10*3; |
Line 130... | Line 130... | ||
130 | 130 | ||
Line 131... | Line 131... | ||
131 | if (BLOCK_SIZE == DIFFICULTY_LEV_PARAMS[id]) break; //âûáðàí òîò æå ðàçìåð |
131 | IF (BLOCK_SIZE == DIFFICULTY_LEV_PARAMS[id]) break; //âûáðàí òîò æå ðàçìåð |
132 | 132 | ||
133 | BLOCK_SIZE = DIFFICULTY_LEV_PARAMS[id]; //ðàçìåð êâàäðàòèêà |
133 | BLOCK_SIZE = DIFFICULTY_LEV_PARAMS[id]; //ðàçìåð êâàäðàòèêà |
Line 139... | Line 139... | ||
139 | MoveSize(-1, -1, BLOCK_SIZE*BLOCKS_NUM +14+USER_PANEL_WIDTH, BLOCK_SIZE*BLOCKS_NUM +GetSkinWidth()+14); |
139 | MoveSize(-1, -1, BLOCK_SIZE*BLOCKS_NUM +14+USER_PANEL_WIDTH, BLOCK_SIZE*BLOCKS_NUM +GetSkinWidth()+14); |
140 | } |
140 | } |
141 | break; |
141 | break; |
142 | case evKey: |
142 | case evKey: |
143 | key = GetKey(); |
143 | key = GetKey(); |
144 | if (key==027) //Escape |
144 | IF (key==027) //Escape |
145 | ExitProcess(); |
145 | ExitProcess(); |
146 | if (key==050) //F1 |
146 | IF (key==050) //F1 |
147 | { |
147 | { |
148 | _HELP_MARK: |
148 | _HELP_MARK: |
149 | CreateThread(#help,#stak); |
149 | CreateThread(#help,#stak); |
150 | } |
150 | } |
151 | if (key==051) //F2 |
151 | IF (key==051) //F2 |
152 | { |
152 | { |
153 | _NEW_GAME_MARK: |
153 | _NEW_GAME_MARK: |
154 | new_game(); |
154 | new_game(); |
155 | draw_clicks_num(); |
155 | draw_clicks_num(); |
156 | draw_field(); |
156 | draw_field(); |
157 | } |
157 | } |
158 | if (key==113) make_turn(0); //Q |
158 | IF (key==113) make_turn(0); //Q |
159 | if (key==119) make_turn(1); //W |
159 | IF (key==119) make_turn(1); //W |
160 | if (key==101) make_turn(2); //E |
160 | IF (key==101) make_turn(2); //E |
161 | if (key==097) make_turn(3); //A |
161 | IF (key==097) make_turn(3); //A |
162 | if (key==115) make_turn(4); //S |
162 | IF (key==115) make_turn(4); //S |
163 | if (key==100) make_turn(5); //D |
163 | IF (key==100) make_turn(5); //D |
164 | break; |
164 | break; |
165 | case evReDraw: |
165 | case evReDraw: |
166 | draw_window(); |
166 | draw_window(); |
167 | } |
167 | } |
168 | } |
168 | } |
169 | } |
169 | } |
Line 170... | Line 170... | ||
170 | 170 | ||
171 | 171 | ||
172 | void make_turn(int turn_id) |
172 | void make_turn(int turn_id) |
173 | { |
173 | { |
Line 174... | Line 174... | ||
174 | if (color_matrix[0]==turn_id) return; //åñëè öâåò ïåðâîé ôèøêè òàêîé æå, èãíîðèðóåì áåññìûñëåííûé õîä |
174 | IF (color_matrix[0]==turn_id) return; //åñëè öâåò ïåðâîé ôèøêè òàêîé æå, èãíîðèðóåì áåññìûñëåííûé õîä |
175 | if (CLICKS>=MAX_CLICKS) return; //åñëè èãðà çàêîí÷åíà |
175 | IF (CLICKS>=MAX_CLICKS) return; //åñëè èãðà çàêîí÷åíà |
Line 176... | Line 176... | ||
176 | 176 | ||
Line 192... | Line 192... | ||
192 | 192 | ||
Line 193... | Line 193... | ||
193 | DefineAndDrawWindow(300,176, BLOCK_SIZE*BLOCKS_NUM +14+USER_PANEL_WIDTH, BLOCK_SIZE*BLOCKS_NUM +GetSkinWidth()+14, 0x74,sc.work,0,0,"Flood-it!"); |
193 | DefineAndDrawWindow(300,176, BLOCK_SIZE*BLOCKS_NUM +14+USER_PANEL_WIDTH, BLOCK_SIZE*BLOCKS_NUM +GetSkinWidth()+14, 0x74,sc.work,0,0,"Flood-it!"); |
194 | 194 | ||
195 | //ïðîâåðÿåì íå ñõëîïíóòî ëè îêíî â çàãîëîâîê |
195 | //ïðîâåðÿåì íå ñõëîïíóòî ëè îêíî â çàãîëîâîê |
Line 196... | Line 196... | ||
196 | GetProcessInfo(#Form, SelfInfo); |
196 | GetProcessInfo(#Form, SelfInfo); |
197 | if (Form.height==GetSkinWidth()+3) return; |
197 | IF (Form.height==GetSkinWidth()+3) return; |
198 | 198 | ||
199 | //çàêðàøèâàåì ôîí -> óìåíüøàåò ïåðåðèñîâêó |
199 | //çàêðàøèâàåì ôîí -> óìåíüøàåò ïåðåðèñîâêó |
200 | for (i=0;i<=4;i++) |
200 | for (i=0;i<=4;i++) |
201 | { |
201 | { |
202 | if (i<>4) |
202 | IF (i<>4) |
203 | DrawRegion(USER_PANEL_WIDTH+i-5,i, BLOCK_SIZE*BLOCKS_NUM +9-i-i, BLOCK_SIZE*BLOCKS_NUM+9-i-i, sc.work); |
203 | DrawRegion(USER_PANEL_WIDTH+i-5,i, BLOCK_SIZE*BLOCKS_NUM +9-i-i, BLOCK_SIZE*BLOCKS_NUM+9-i-i, sc.work); |
204 | else |
204 | else |
Line 222... | Line 222... | ||
222 | WriteText(17,BLOCKS_NUM*BLOCK_SIZE-20+7,0x80,sc.work_text,#LEVELS_TEXT,0); |
222 | WriteText(17,BLOCKS_NUM*BLOCK_SIZE-20+7,0x80,sc.work_text,#LEVELS_TEXT,0); |
223 | for (j=0;j<2;j++) |
223 | for (j=0;j<2;j++) |
224 | { |
224 | { |
225 | DefineButton(j*25+56,BLOCKS_NUM*BLOCK_SIZE-20, 20,20, j+10,sc.work_button); |
225 | DefineButton(j*25+56,BLOCKS_NUM*BLOCK_SIZE-20, 20,20, j+10,sc.work_button); |
Line 226... | Line 226... | ||
226 | 226 | ||
227 | if (BLOCK_SIZE == DIFFICULTY_LEV_PARAMS[j*3]) EDI=0x800080; |
227 | IF (BLOCK_SIZE == DIFFICULTY_LEV_PARAMS[j*3]) EDI=0x800080; |
Line 228... | Line 228... | ||
228 | else EDI=sc.work_button_text; |
228 | else EDI=sc.work_button_text; |
229 | 229 | ||
230 | WriteText(j*25+56+8,BLOCKS_NUM*BLOCK_SIZE-20+7,0x80,EDI,BOARD_SIZES[j],0); |
230 | WriteText(j*25+56+8,BLOCKS_NUM*BLOCK_SIZE-20+7,0x80,EDI,BOARD_SIZES[j],0); |
Line 266... | Line 266... | ||
266 | restart=0; |
266 | restart=0; |
Line 267... | Line 267... | ||
267 | 267 | ||
268 | for (i=0;i |
268 | for (i=0;i |
269 | for (j=0;j |
269 | for (j=0;j |
270 | { |
270 | { |
271 | if (color_matrix[i*BLOCKS_NUM+j]<>old_color_id) continue; //åñëè ôèøêà íå íóæíîãî öâåòà èä¸ì äàëüøå |
271 | IF (color_matrix[i*BLOCKS_NUM+j]<>old_color_id) continue; //åñëè ôèøêà íå íóæíîãî öâåòà èä¸ì äàëüøå |
Line 272... | Line 272... | ||
272 | if (color_matrix[i*BLOCKS_NUM+j]==MARKED) continue; //åñëè ôèøêà óæå îòìå÷åíà, èä¸ì äàëåå |
272 | IF (color_matrix[i*BLOCKS_NUM+j]==MARKED) continue; //åñëè ôèøêà óæå îòìå÷åíà, èä¸ì äàëåå |
273 | 273 | ||
274 | if (j>0) && (color_matrix[i*BLOCKS_NUM+j-1]==MARKED) color_matrix[i*BLOCKS_NUM+j]=MARKED; //ñìîòðèì ëåâûé |
274 | IF (j>0) && (color_matrix[i*BLOCKS_NUM+j-1]==MARKED) color_matrix[i*BLOCKS_NUM+j]=MARKED; //ñìîòðèì ëåâûé |
275 | if (i>0) && (color_matrix[i-1*BLOCKS_NUM+j]==MARKED) color_matrix[i*BLOCKS_NUM+j]=MARKED; //ñìîòðèì âåðõíèé |
275 | IF (i>0) && (color_matrix[i-1*BLOCKS_NUM+j]==MARKED) color_matrix[i*BLOCKS_NUM+j]=MARKED; //ñìîòðèì âåðõíèé |
Line 276... | Line 276... | ||
276 | if (j |
276 | IF (j |
277 | if (i |
277 | IF (i |
278 | 278 | ||
Line 279... | Line 279... | ||
279 | if (color_matrix[i*BLOCKS_NUM+j]==MARKED) restart=1; //åñëè ôèøêó îòìåòèëè, òî ïîòîì öèêë íóæíî áóäåò ïðîêðóòèòü ñíà÷àëà - ìîæ åù¸ ÷¸ îòìåòèì |
279 | IF (color_matrix[i*BLOCKS_NUM+j]==MARKED) restart=1; //åñëè ôèøêó îòìåòèëè, òî ïîòîì öèêë íóæíî áóäåò ïðîêðóòèòü ñíà÷àëà - ìîæ åù¸ ÷¸ îòìåòèì |
280 | } |
280 | } |
281 | if (restart) goto _RESTART_MARK; |
281 | IF (restart) goto _RESTART_MARK; |
282 | 282 | ||
Line 283... | Line 283... | ||
283 | for (i=0;i |
283 | for (i=0;i |
284 | for (j=0;j |
284 | for (j=0;j |
285 | if (color_matrix[i*BLOCKS_NUM+j]==MARKED) color_matrix[i*BLOCKS_NUM+j]=new_color_id; |
285 | IF (color_matrix[i*BLOCKS_NUM+j]==MARKED) color_matrix[i*BLOCKS_NUM+j]=new_color_id; |
Line 286... | Line 286... | ||
286 | } |
286 | } |
287 | 287 | ||
288 | 288 | ||
289 | int check_for_end() |
289 | int check_for_end() |
290 | { |
290 | { |
291 | int i, j, ii, jj; |
291 | int i, j, ii, jj; |
292 | 292 | ||
293 | if (CLICKS>=MAX_CLICKS) //åñëè ïðîèãðûø |
293 | if (CLICKS>=MAX_CLICKS) //åñëè ïðîèãðûø |
294 | { |
294 | { |
Line 295... | Line 295... | ||
295 | if (CLICKS==MAX_CLICKS) //âûèãðûøü íà ïîñëåäíåì õîäå |
295 | IF (CLICKS==MAX_CLICKS) //âûèãðûøü íà ïîñëåäíåì õîäå |
Line 296... | Line 296... | ||
296 | { |
296 | { |
297 | for (i=0;i |
297 | for (i=0;i |
298 | for (j=0;j |
298 | for (j=0;j |
299 | if (color_matrix[i*BLOCKS_NUM+j]<>color_matrix[0]) goto _LOOSE_MARK; |
299 | IF (color_matrix[i*BLOCKS_NUM+j]<>color_matrix[0]) goto _LOOSE_MARK; |
300 | goto _WIN_MARK; |
300 | goto _WIN_MARK; |
301 | } |
301 | } |
302 | 302 | ||
303 | _LOOSE_MARK: |
303 | _LOOSE_MARK: |
304 | 304 | ||
Line 326... | Line 326... | ||
326 | return 1; |
326 | return 1; |
327 | } |
327 | } |
Line 328... | Line 328... | ||
328 | 328 | ||
329 | for (i=0;i |
329 | for (i=0;i |
330 | for (j=0;j |
330 | for (j=0;j |
Line 331... | Line 331... | ||
331 | if (color_matrix[i*BLOCKS_NUM+j]<>color_matrix[0]) return 0; |
331 | IF (color_matrix[i*BLOCKS_NUM+j]<>color_matrix[0]) return 0; |
Line 332... | Line 332... | ||
332 | 332 | ||
Line 344... | Line 344... | ||
344 | CLICKS=MAX_CLICKS; |
344 | CLICKS=MAX_CLICKS; |
Line 345... | Line 345... | ||
345 | 345 | ||
346 | for (i=0;i<14;i++) |
346 | for (i=0;i<14;i++) |
347 | for (j=0;j<14;j++) |
347 | for (j=0;j<14;j++) |
348 | { |
348 | { |
349 | if (BLOCK_SIZE == DIFFICULTY_LEV_PARAMS[0]) //çàëèâêà äëÿ ïîëåé ðàçíîãî ðàçìåðà ðàçíàÿ |
349 | IF (BLOCK_SIZE == DIFFICULTY_LEV_PARAMS[0]) //çàëèâêà äëÿ ïîëåé ðàçíîãî ðàçìåðà ðàçíàÿ |
350 | { |
350 | { |
351 | ii=i; |
351 | ii=i; |
352 | jj=j; |
352 | jj=j; |
353 | } |
353 | } |
Line 374... | Line 374... | ||
374 | 374 | ||
Line 375... | Line 375... | ||
375 | DrawBar(8*6+TEXT_X, TEXT_Y, 6*2,9, sc.work); |
375 | DrawBar(8*6+TEXT_X, TEXT_Y, 6*2,9, sc.work); |
Line 376... | Line 376... | ||
376 | 376 | ||
377 | WriteText(TEXT_X,TEXT_Y,0x80,sc.work_text,#CLICKS_TEXT,0); |
377 | WriteText(TEXT_X,TEXT_Y,0x80,sc.work_text,#CLICKS_TEXT,0); |
Line 378... | Line 378... | ||
378 | 378 | ||
Line 379... | Line 379... | ||
379 | if (CLICKS<10) EBX=9*6+TEXT_X; |
379 | IF (CLICKS<10) EBX=9*6+TEXT_X; |
Line 405... | Line 405... | ||
405 | 405 | ||
406 | loop() |
406 | loop() |
407 | switch (WaitEvent()) |
407 | switch (WaitEvent()) |
408 | { |
408 | { |
409 | CASE evButton: |
409 | CASE evButton: |
410 | if (GetButtonID()==1) ExitProcess(); |
410 | IF (GetButtonID()==1) ExitProcess(); |
411 | break; |
411 | break; |
412 | CASE evKey: |
412 | CASE evKey: |
413 | if (GetKey()==27) ExitProcess(); //Esc |
413 | IF (GetKey()==27) ExitProcess(); //Esc |
414 | break; |
414 | break; |
415 | CASE evReDraw: |
415 | CASE evReDraw: |
Line 416... | Line 416... | ||
416 | for (i=0; HELP_TEXT[i]<>0; i++;) {}; |
416 | for (i=0; HELP_TEXT[i]<>0; i++;) {}; |