Subversion Repositories Kolibri OS

Rev

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++;) {};