Subversion Repositories Kolibri OS

Rev

Rev 3132 | Rev 7332 | Go to most recent revision | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
968 leency 1
/*	------- КОСИЛКА ДЛЯ КОЛИБРИ -------
3132 leency 2
Игра пишется на C++ (используется MS Visual C++ 6.0+).
3
Это - исходник версии 1.15.
968 leency 4
 
5
					 Andrey Mihaylovich aka Dron2004
3132 leency 6
*/
968 leency 7
 
8
 
9
 
10
#include "kosSyst.h"
11
#include "kosFile.h"
3132 leency 12
#include "images.cpp"
968 leency 13
 
14
 
15
 
16
//ВНЕШНИЕ УРОВНИ
17
bool external_levels_available=false;
18
bool external_levels = false;
19
int level_read_result;
20
Byte * externallevels;
21
Byte external_levels_count[1] = {0};
22
/////////////////
23
 
24
int lastkosilkadirection=1;
3132 leency 25
int laststep=0; //Последний ход. 0-небыло, 1-вниз, 2-вверх, 3-влево, 4-вправо
968 leency 26
 
27
 
28
Byte skindata[13824];
29
int read_result=0;
30
bool skin_available=false;
31
bool w_redraw=true;
32
 
33
const char windowTitle[]="Љ®бЁ«Є  ¤«п Љ®«ЁЎаЁ";
3132 leency 34
const char version[]="‚ҐабЁп 1.15";
968 leency 35
int levelcount=7; //Число уровней
36
 
37
char gamearea[20][20]; //Карта
38
 
39
 
40
short int kosilkax; // Положение косилки
41
short int kosilkay;
42
short int kosilkadirection=1; //Направление прошлого шага. 1-вниз, 2-вверх, 3-влево, 4-вправо
43
short int lives=2; // Жизни
44
short int level=1; //Уровень
45
short int status=0; //Где 0 - приветствие
46
					// 1 - игра
47
					// 2 - игра пройдена
48
					// 3 - вы проиграли
49
					// 4 - выбор набора уровней (встроенный или внешний)
50
					// -1 - о программе
51
bool gamestarted=false; //Блокировка игровых клавиш. Если false - играть нельзя
52
 
53
bool drawgraphics=true; //Рисовать ли детальную графику (или ограничиться аскетичной)
1012 leency 54
bool drawanimation=true; //Анимировать ли
968 leency 55
int grassLeft();  //Сообщим о наличии функции Grass Left
56
 
57
RGB kosilka_d[576];
58
RGB kosilka_l[576];
59
RGB kosilka_r[576];
60
RGB kosilka_u[576];
61
RGB grass[576];
62
RGB stone[576];
63
RGB tree[576];
64
RGB skos[576];
65
 
66
//Палитра цветов. Декодируем в 0xRRGGBB
67
char * apppath;
68
char * levpath;
69
 
70
 
71
char * getLevelsPathName(){
72
 
73
	int lastslashindex=0;
74
	static char levfilename[]="koslevel.pak";
75
	int tempslfnd=0;
76
 
77
	for (tempslfnd=0; tempslfnd < strlen(kosExePath); tempslfnd++){
78
			if (kosExePath[tempslfnd]=='/'){lastslashindex=tempslfnd;}
79
	}
80
 
81
	levpath = new char[lastslashindex+strlen(levfilename)+1];
82
 
83
	for (tempslfnd=0; tempslfnd <= lastslashindex; tempslfnd++){
84
		levpath[tempslfnd]=kosExePath[tempslfnd];
85
	}
86
	for (tempslfnd=0; tempslfnd < strlen(levfilename); tempslfnd++){
87
		levpath[tempslfnd+lastslashindex+1]=levfilename[tempslfnd];
88
	}
89
 
90
	return levpath;
91
}
92
 
93
 
94
void interlevelpause(){ //Пауза между уровнями
95
	Byte tempCode;
96
	RGB tmprgb;
97
	int tmpa=0;
98
	laststep=0;
99
	static int yellow_pal[] = {0xA8A93D,0xBEBF4C,0xD6D856,0xDFE15A,0xECEE5B,
100
						    0xECEE5B,0xDFE15A,0xD6D856,0xBEBF4C,0xA8A93D};
101
		for (int iic=0;iic<240;iic++){
3137 leency 102
			kos_WaitForEvent(1); //Pause()?
968 leency 103
			kos_GetKey(tempCode);
104
 
105
			kos_DrawBar(iic*2,0,2,480,yellow_pal[tmpa]);
106
 
107
			tmpa++;
3132 leency 108
			if (tmpa>9) tmpa=0;
968 leency 109
		}
110
}
111
 
112
void draw_element(int elx, int ely){ //Отрисовка элемента карты
113
switch (gamearea[elx][ely]){
114
			case 'g':
115
				if (drawgraphics==true){
116
					kos_PutImage((RGB*)grass,24,24,elx*24,ely*24);
117
				}
118
				else
119
				{
120
					kos_DrawBar(elx*24,ely*24,24,24,0xAAAA00);
121
				}
122
 
123
				break;
124
			case 'k':
125
				if (drawgraphics==true){
126
					switch(kosilkadirection){
127
					case 1:
128
						kos_PutImage((RGB*)kosilka_d,24,24,elx*24,ely*24);
129
						break;
130
					case 2:
131
						kos_PutImage((RGB*)kosilka_u,24,24,elx*24,ely*24);
132
						break;
133
					case 3:
134
						kos_PutImage((RGB*)kosilka_l,24,24,elx*24,ely*24);
135
						break;
136
					case 4:
137
						kos_PutImage((RGB*)kosilka_r,24,24,elx*24,ely*24);
138
						break;
139
					}
140
				}
141
				else
142
				{
143
					kos_DrawBar(elx*24,ely*24,24,24,0x00AAAA);
144
				}
145
 
146
 
147
				break;
148
			case 'n':
149
				if (drawgraphics==true){
150
					kos_PutImage((RGB*)skos,24,24,elx*24,ely*24);
151
				}
152
				else
153
				{
154
					kos_DrawBar(elx*24,ely*24,24,24,0xAAAAAA);
155
				}
156
 
157
 
158
				break;
159
			case 's':
160
				if (drawgraphics==true){
161
					kos_PutImage((RGB*)stone,24,24,elx*24,ely*24);
162
				}
163
				else
164
				{
165
					kos_DrawBar(elx*24,ely*24,24,24,0x555555);
166
				}
167
 
168
 
169
				break;
170
 
171
			case 't':
172
				if (drawgraphics==true){
173
					kos_PutImage((RGB*)tree,24,24,elx*24,ely*24);
174
				}
175
				else
176
				{
177
					kos_DrawBar(elx*24,ely*24,24,24,0x005500);
178
				}
179
 
180
 
181
				break;
182
			}
183
 
184
}
185
 
186
 
187
void display_grass_left(){ //Выводим на экран количество оставшейся травы
188
	kos_DrawBar(605,120,20,10,0xEEEEEE);
189
	kos_DisplayNumberToWindow(grassLeft(),3,605,120,0x0000FF,nbDecimal,false);
190
}
191
 
192
 
193
void animate(int initcellx, int initcelly, int direction){ //анимация движения косилки
194
	int tmpp=0;
195
 
3132 leency 196
	switch (direction){
968 leency 197
		case 1:
198
			for (tmpp=0; tmpp<23;tmpp++){
199
				if (drawgraphics==true){
200
					kos_PutImage((RGB*)skos,24,24,initcellx*24,initcelly*24);
201
					kos_PutImage((RGB*)kosilka_d,24,24,initcellx*24,initcelly*24+tmpp);
202
				} else {
203
					kos_DrawBar(initcellx*24,initcelly*24,24,24,0xAAAAAA);
204
					kos_DrawBar(initcellx*24,initcelly*24+tmpp,24,24,0x00AAAA);
205
 
206
				}
207
				kos_Pause(1);
208
			}
209
			break;
210
		case 2:
211
			for (tmpp=0; tmpp<23;tmpp++){
212
				if (drawgraphics==true){
213
					kos_PutImage((RGB*)skos,24,24,initcellx*24,initcelly*24);
214
					kos_PutImage((RGB*)kosilka_u,24,24,initcellx*24,initcelly*24-tmpp);
215
				} else {
216
					kos_DrawBar(initcellx*24,initcelly*24,24,24,0xAAAAAA);
217
					kos_DrawBar(initcellx*24,initcelly*24-tmpp,24,24,0x00AAAA);
218
				}
219
				kos_Pause(1);
220
			}
221
			break;
222
		case 3:
223
			for (tmpp=0; tmpp<23;tmpp++){
224
				if (drawgraphics==true){
225
					kos_PutImage((RGB*)skos,24,24,initcellx*24,initcelly*24);
226
					kos_PutImage((RGB*)kosilka_r,24,24,initcellx*24+tmpp,initcelly*24);
227
				} else {
228
					kos_DrawBar(initcellx*24,initcelly*24,24,24,0xAAAAAA);
229
					kos_DrawBar(initcellx*24+tmpp,initcelly*24,24,24,0x00AAAA);
230
 
231
				}
232
				kos_Pause(1);
233
			}
234
			break;
235
		case 4:
236
			for (tmpp=0; tmpp<23;tmpp++){
237
				if (drawgraphics==true){
238
					kos_PutImage((RGB*)skos,24,24,initcellx*24,initcelly*24);
239
					kos_PutImage((RGB*)kosilka_l,24,24,initcellx*24-tmpp,initcelly*24);
240
				} else {
241
					kos_DrawBar(initcellx*24,initcelly*24,24,24,0xAAAAAA);
242
					kos_DrawBar(initcellx*24-tmpp,initcelly*24,24,24,0x00AAAA);
243
 
244
				}
245
				kos_Pause(1);
246
			}
247
			break;
3132 leency 248
	}
968 leency 249
}
250
 
251
 
252
void draw_window(void){ //Перерисовка окна
2131 leency 253
	sProcessInfo sPI;
254
 
968 leency 255
	if (w_redraw)
256
	{
257
		kos_WindowRedrawStatus(1); //Начало перерисовки
3132 leency 258
		kos_DefineAndDrawWindow(50,50,640,506-22+kos_GetSkinHeight(),0x74,0xEEEEEE,0,0,(Dword)windowTitle);
2131 leency 259
		kos_WindowRedrawStatus(2); //Конец перерисовки
968 leency 260
	}
261
	w_redraw=false;
262
 
2131 leency 263
	kos_ProcessInfo( &sPI );
2334 leency 264
	if (sPI.rawData[70]&0x04) return; //ничего не делать если окно схлопнуто в заголовок
968 leency 265
 
266
	//Перерисовка карты
267
	if ((status!=0)&&(status!=-1)&&(status!=4))
268
	{
269
		kos_DrawBar(631-151,0,151,480,0xEEEEEE);
270
 
3132 leency 271
		kos_WriteTextToWindow(500,30,0x80, 0 ,"Љ  Ћ  ‘  €  ‹  Љ  Ђ",19);
272
		kos_WriteTextToWindow(517,40,0x80, 0 ,"¤«п Љ®«ЁЎаЁ Ћ‘",14);
968 leency 273
 
274
		kos_WriteTextToWindow(495,80,0x80, 0 ,"“а®ўҐ­м:",6);
275
		kos_DisplayNumberToWindow(level,3,605,80,0x0000FF,nbDecimal,false);
276
 
277
		kos_WriteTextToWindow(495,95,0x80, 0 ,"Ћбв «®бм Ї®Їлв®Є:",11);
278
		kos_DisplayNumberToWindow(lives,1,605,95,0x0000FF,nbDecimal,false);
279
 
280
		kos_WriteTextToWindow(495,120,0x80, 0 ,"Ћбв «®бм ва ўл:",11);
281
		display_grass_left();
282
 
283
		kos_WriteTextToWindow(526,450,0x80, 0 ,(char*)version,12);
284
 
285
		for (int cy=0;cy<20;cy++) for (int cx=0;cx<20;cx++)	draw_element(cx,cy);
286
	}
287
 
288
	if (status==0){
289
		kos_DrawBar(0,0,4,480,0x000000);
290
		kos_DrawBar(628,0,3,480,0x000000);
291
		//Leency----
292
 
293
 
294
		for (int tmpppy=0;tmpppy<20;tmpppy++){
295
			for (int tmpppx=0;tmpppx<26;tmpppx++){
296
				if ((tmpppx==0) || (tmpppx==25) || (tmpppy==0) || (tmpppy==19)){
297
					kos_PutImage((RGB*)stone,24,24,4+tmpppx*24,tmpppy*24);
298
				}
299
				else
300
				{
301
					kos_PutImage((RGB*)skos,24,24,4+tmpppx*24,tmpppy*24);
302
				}
303
			}
304
		}
305
 
306
		if (drawgraphics==true){
307
			kos_PutImage((RGB*)kosilka_d,24,24,305,150);
308
		}
309
		else
310
		{
311
			kos_DrawBar(305,150,24,24,0x00AAAA);
312
		}
313
 
314
 
315
		if (drawanimation==true){
316
			kos_DrawBar(335,150,24,24,0x00AA00);
317
		}
318
		else
319
		{
320
			kos_DrawBar(335,150,24,24,0xAA0000);
321
		}
322
 
3132 leency 323
                kos_WriteTextToWindow(255,200,0x80, 0xFFFFFF ,"Љ   Ћ   ‘   €   ‹   Љ   Ђ",19);
968 leency 324
                kos_WriteTextToWindow(290, 220,0x80, 0xFFFFFF ,"¤«п Љ®«ЁЎаЁ Ћ‘",14);
325
                kos_WriteTextToWindow(239, 240,0x80, 0xFFFFFF ,"<¤«п ­ з «  ЁЈал ­ ¦¬ЁвҐ ENTER>",30);
326
                kos_WriteTextToWindow(30, 380,0x80, 0xFFFFFF ,"<­ ¦¬ЁвҐ  ¤«п ЇҐаҐЄ«о祭Ёп ०Ё¬  Ја дЁЄЁ>",53);
327
                kos_WriteTextToWindow(30, 400,0x80, 0xFFFFFF ,"<­ ¦¬ЁвҐ  ¤«п ўЄ«о祭Ёп/ўлЄ«о祭Ёп  ­Ё¬ жЁЁ>",41);
328
                kos_WriteTextToWindow(30, 420,0x80, 0xFFFFFF ,"<­ ¦¬ЁвҐ  ¤«п Їа®б¬®ва  бўҐ¤Ґ­Ё© ® Їа®Ја ¬¬Ґ>",32);
329
                if (skin_available==true) {kos_WriteTextToWindow(30, 440,0x80, 0xFFFFFF ,"<­ ¦¬ЁвҐ  зв®Ўл ўлЄ«озЁвм/ўЄ«озЁвм бЄЁ­>",27);}
330
 
331
 
332
        //      kos_WriteTextToWindow(470, 440,0x80, 0xFFFFFF ,"­ ¦¬ЁвҐ  ¤«п ўл室 ",27);
333
	//	kos_DisplayNumberToWindow(external_levels_count[0],3,200,340,0x0000FF,nbDecimal,false);
334
 
335
 
336
 
1012 leency 337
		kos_WriteTextToWindow(533, 440,0x80, 0xFFFFFF ,(char*)version,0);
968 leency 338
	}
339
	if (status==2){
340
	   kos_DrawBar(10,150,610,200,0x528B4C);
341
	   kos_DrawBar(15,155,601,190,0x3BCF46);
342
           kos_WriteTextToWindow(240,230,0x80, 0xFFFFFF ,"‚л ўлЁЈа «Ё!",13);
343
           kos_WriteTextToWindow(240,250,0x80, 0xFFFFFF ,"<­ ¦¬ЁвҐ q ¤«п ў®§ўа в  ў ¬Ґ­о>",17);
344
	}
345
	if (status==3){
346
	   kos_DrawBar(10,150,610,200,0x8B4C4C);
347
	   kos_DrawBar(15,155,601,190,0xCF3B3B);
348
           kos_WriteTextToWindow(220,220,0x80, 0xFFFFFF ,"€Ја  ®Є®­зҐ­ ...",13);
349
           kos_WriteTextToWindow(220,240,0x80, 0xFFFFFF ,"<­ ¦¬ЁвҐ r ¤«п в®Ј®, зв®Ўл блЈа вм Ґйс а §>",23);
350
           kos_WriteTextToWindow(220,260,0x80, 0xFFFFFF ,"<­ ¦¬ЁвҐ q ¤«п ў®§ўа в  ў ¬Ґ­о>",17);
351
	}
352
	if (status==-1){
353
 
354
		kos_DrawBar(0,0,4,480,0x000000);
355
		kos_DrawBar(631-3,0,3,480,0x000000);
356
 
357
	   for (int tmpppy=0;tmpppy<20;tmpppy++){
358
			for (int tmpppx=0;tmpppx<26;tmpppx++){
359
				if ((tmpppx==0) || (tmpppx==25) || (tmpppy==0) || (tmpppy==19)){
360
					kos_PutImage((RGB*)stone,24,24,4+tmpppx*24,tmpppy*24);
361
				}
362
				else
363
				{
364
					kos_PutImage((RGB*)skos,24,24,4+tmpppx*24,tmpppy*24);
365
				}
366
			}
367
		}
368
 
369
           kos_WriteTextToWindow(40,40,0x80, 0xFFFFFF ,"Љ®бЁ«Є  ¤«п Ћ‘ Љ®«ЁЎаЁ",22);
370
	   kos_WriteTextToWindow(40,60,0x80, 0xFFFFFF ,(char*)version,12);
371
	   kos_WriteTextToWindow(40,75,0x80, 0xFFFFFF ,"________________________________________",40);
372
 
373
           kos_WriteTextToWindow(40,120,0x80, 0xFFFFFF ,"Љ®««ҐЄвЁў а §а Ў®взЁЄ®ў:",18);
374
           kos_WriteTextToWindow(40,150,0x80, 0xEEFFEE ,"Ђ­¤аҐ© ЊЁе ©«®ўЁз aka Dron2004 - Їа®Ја ¬¬Ёа®ў ­ЁҐ, ўбв஥­­ п Ја дЁЄ  (ЎҐ§ бЄЁ­ )",32);
375
           kos_WriteTextToWindow(40,170,0x80, 0xDDFFDD ,"Mario79 - вҐбвЁа®ў ­ЁҐ, Ї®¬®йм ў а §а Ў®вЄҐ, ў ¦­лҐ Ё¤ҐЁ",35);
376
           kos_WriteTextToWindow(40,190,0x80, 0xCCFFCC ,"Ataualpa - вҐбвЁа®ў ­ЁҐ, Ї®¬®йм ў а §а Ў®вЄҐ",36);
377
           kos_WriteTextToWindow(40,210,0x80, 0xBBFFBB ,"Leency - вҐбвЁа®ў ­ЁҐ, Ї®¬®йм ў а §а Ў®вЄҐ, § ¬Ґз вҐ«м­лҐ бЄЁ­л, ў ¦­лҐ Ё¤ҐЁ",62);
378
           kos_WriteTextToWindow(40,230,0x80, 0xAAFFAA ,"Mike - вҐбвЁа®ў ­ЁҐ, Ї®¬®йм ў а §а Ў®вЄҐ",34);
379
           kos_WriteTextToWindow(40,250,0x80, 0x99FF99 ,"bw - вҐбвЁа®ў ­ЁҐ, Ї®¬®йм ў а §а Ў®вЄҐ, ў ¦­лҐ Ё¤ҐЁ",49);
380
			kos_WriteTextToWindow(40,270,0x80, 0x99FF99 ,"diamond - Ё¤Ґп ®в¬Ґ­л 室 , вҐбвЁа®ў ­ЁҐ",49);
381
 
382
           kos_WriteTextToWindow(40,300,0x80, 0x88FF88 ,"Ћв¤Ґ«м­®Ґ бЇ бЁЎ®:",16);
383
           kos_WriteTextToWindow(40,330,0x80, 0x77FF77 ,"‚ᥬ, Єв® ЁЈа Ґв ў нвг ЁЈаг :-) !",50);
384
 
385
 
386
           kos_WriteTextToWindow(40,430,0x80, 0x66FF66 ,"­ ¦¬ЁвҐ  ¤«п ў®§ўа в  ў ¬Ґ­о",35);
387
	}
388
 
389
 
390
	if (status==4){
391
		kos_DrawBar(0,0,631,480,0x000000);
392
 
393
 
394
		for (int tmpppy=0;tmpppy<20;tmpppy++){
395
			for (int tmpppx=0;tmpppx<26;tmpppx++){
396
				if ((tmpppx==0) || (tmpppx==25) || (tmpppy==0) || (tmpppy==19)){
397
					kos_PutImage((RGB*)stone,24,24,4+tmpppx*24,tmpppy*24);
398
				}
399
				else
400
				{
401
					kos_PutImage((RGB*)skos,24,24,4+tmpppx*24,tmpppy*24);
402
				}
403
			}
404
		}
405
 
406
                kos_WriteTextToWindow(215, 200,0x80, 0xFFFFFF ,"‚лЎҐаЁвҐ ­ Ў®а га®ў­Ґ© (­ ¦¬ЁвҐ <1> Ё«Ё <2>):",0);
407
                kos_WriteTextToWindow(215, 220,0x80, 0xFFFFFF ,"1. ‚бв஥­­лҐ га®ў­Ё",0);
408
                kos_WriteTextToWindow(215, 240,0x80, 0xFFFFFF ,"2. ‚­Ґи­Ё© ­ Ў®а га®ў­Ґ©",0);
409
 
410
	}
411
 
412
}
413
 
414
 
415
 
416
//Описание уровней игры
417
//, где	k - косилка
418
//		g - трава
419
//		n - скошенная трава
420
//		s - камень
421
//		t - дерево
422
void initializeLevel(int levnum){
423
	laststep=0;
424
	if (external_levels==false){
425
 
426
	kosilkadirection=1;
427
	if (levnum==1){
428
		static char tmparea[20][20]={{'k','t','g','g','g','g','g','s','g','g','g','g','g','g','g','g','g','g','g','g'},
429
								{'g','s','g','s','g','g','g','s','g','s','g','g','s','g','g','g','g','g','g','g'},
430
								{'g','t','g','s','g','g','g','s','g','s','g','g','s','g','g','g','g','g','g','g'},
431
								{'g','s','g','s','g','g','g','s','g','s','g','g','s','g','g','g','g','g','g','g'},
432
								{'g','t','g','s','g','g','g','s','g','s','g','g','s','g','g','g','g','g','g','g'},
433
								{'g','s','g','s','g','g','g','s','g','g','g','g','s','g','g','g','g','g','g','g'},
434
								{'g','t','g','s','g','g','g','s','g','g','g','g','s','g','g','s','s','s','g','g'},
435
								{'g','s','g','s','g','g','g','s','g','g','g','g','s','g','g','s','s','s','g','g'},
436
								{'g','t','g','s','g','g','g','s','g','g','g','g','s','g','g','s','s','s','g','g'},
437
								{'g','s','g','s','g','g','g','s','g','g','g','g','s','g','g','s','g','g','g','g'},
438
								{'g','t','g','s','g','g','g','s','g','g','g','g','s','g','g','g','g','g','g','g'},
439
								{'g','s','g','s','g','g','g','s','g','g','g','g','s','g','g','g','g','g','g','g'},
440
								{'g','t','g','s','g','g','g','s','g','g','g','g','s','g','g','g','g','g','g','g'},
441
								{'g','s','g','s','g','g','g','s','g','g','g','g','s','g','g','g','g','g','g','g'},
442
								{'g','t','g','s','g','g','g','s','g','g','g','g','s','g','g','g','g','g','g','g'},
443
								{'g','s','g','s','g','g','g','s','g','g','g','g','s','g','g','g','g','g','g','g'},
444
								{'g','t','g','s','g','g','g','s','g','g','g','g','s','g','g','g','g','g','g','g'},
445
								{'g','s','g','s','g','g','g','s','g','g','g','g','s','g','g','g','g','g','g','g'},
446
								{'g','t','g','s','g','g','g','s','g','g','g','g','s','g','g','g','g','g','g','g'},
447
								{'g','g','g','s','g','g','g','g','g','s','g','g','s','g','g','g','g','g','g','g'}};
448
			for (int tyy=0;tyy<20;tyy++){
449
				for (int txx=0;txx<20;txx++){
450
 
451
					if (tmparea[txx][tyy]=='k'){
452
						kosilkax=tyy;
453
						kosilkay=txx;
454
					}
455
 
456
					gamearea[txx][tyy]=tmparea[tyy][txx];
457
				}
458
			}
459
	}
460
	if (levnum==2){
461
		static char tmparea[20][20]={{'s','s','g','g','g','g','g','g','g','g','g','g','g','g','g','g','g','g','g','g'},
462
								{'s','s','g','g','g','g','g','g','g','g','g','g','g','g','g','g','g','s','s','g'},
463
								{'g','k','g','g','g','g','g','g','g','g','g','g','g','g','g','g','g','s','s','g'},
464
								{'g','g','g','g','g','g','g','g','g','g','g','g','s','s','g','g','g','g','g','g'},
465
								{'g','g','g','g','g','g','g','g','g','g','g','g','s','s','g','g','g','g','g','g'},
466
								{'g','g','g','g','g','g','g','g','g','g','g','g','g','g','g','g','g','g','g','g'},
467
								{'g','g','g','g','g','g','g','g','g','g','g','g','g','g','g','g','g','g','g','g'},
468
								{'g','g','g','g','g','g','g','g','g','g','g','g','g','g','g','g','g','g','g','g'},
469
								{'s','s','g','g','g','g','g','g','g','g','g','g','g','g','g','g','g','g','g','g'},
470
								{'s','s','g','g','g','g','g','g','g','g','g','g','g','g','g','g','g','g','g','g'},
471
								{'g','g','g','g','g','g','g','g','s','s','g','g','g','g','g','g','g','s','s','g'},
472
								{'g','g','g','g','g','g','g','g','s','s','g','g','g','g','g','g','g','s','s','g'},
473
								{'g','g','g','g','g','g','g','g','g','g','g','g','g','g','g','g','g','g','g','g'},
474
								{'g','g','g','g','g','g','g','g','g','g','g','g','g','g','g','g','g','g','g','g'},
475
								{'g','g','g','g','g','g','g','g','g','g','g','g','g','s','s','g','g','g','g','g'},
476
								{'g','g','g','g','g','g','g','g','g','g','g','g','g','s','s','g','g','g','g','g'},
477
								{'g','g','g','s','s','g','g','g','g','g','g','g','g','g','g','g','g','g','g','g'},
478
								{'g','g','g','s','s','g','g','g','g','g','g','g','g','g','g','g','g','g','g','g'},
479
								{'g','g','g','g','g','g','g','g','g','g','g','g','g','g','g','g','g','g','g','g'},
480
								{'g','g','g','g','g','g','g','g','g','g','g','g','g','g','g','g','g','g','g','g'}};
481
			for (int tyy=0;tyy<20;tyy++){
482
				for (int txx=0;txx<20;txx++){
483
 
484
					if (tmparea[txx][tyy]=='k'){
485
						kosilkax=tyy;
486
						kosilkay=txx;
487
					}
488
 
489
					gamearea[txx][tyy]=tmparea[tyy][txx];
490
				}
491
			}
492
	}
493
 
494
	if (levnum==3){
495
		static char tmparea[20][20]={{'t','n','t','n','t','n','t','n','t','n','t','n','t','n','t','n','t','n','t','k'},
496
								{'n','t','g','g','g','g','g','g','g','g','g','g','s','n','n','s','n','s','t','g'},
497
								{'t','n','g','g','g','g','g','g','g','g','g','g','n','t','n','n','n','t','t','g'},
498
								{'n','t','g','g','g','g','g','g','g','g','g','g','n','s','n','s','n','s','t','g'},
499
								{'t','n','g','g','g','g','g','s','s','g','g','g','n','n','n','n','n','t','t','g'},
500
								{'n','t','g','g','g','g','g','g','g','g','g','g','t','n','s','n','n','s','t','g'},
501
								{'t','n','g','g','g','g','g','g','g','g','g','g','n','n','n','n','n','t','t','g'},
502
								{'n','t','g','g','g','g','g','g','g','g','g','g','n','n','s','n','n','s','t','g'},
503
								{'t','n','g','g','g','g','g','g','g','g','g','g','n','s','n','n','n','t','t','g'},
504
								{'n','t','g','g','g','g','g','g','g','g','g','g','s','n','n','n','n','t','g','g'},
505
								{'t','n','g','g','g','s','g','g','g','g','g','g','t','t','t','t','t','t','g','g'},
506
								{'n','t','g','g','g','s','g','g','g','g','g','g','g','g','g','g','g','t','g','g'},
507
								{'t','n','g','g','g','g','g','g','g','g','g','g','t','t','g','g','g','t','g','g'},
508
								{'n','t','g','g','g','g','g','g','t','t','g','g','g','t','g','g','g','t','g','g'},
509
								{'t','n','g','g','g','g','g','g','t','t','g','g','g','t','g','g','g','t','g','g'},
510
								{'n','t','g','g','g','g','g','g','g','g','g','g','g','t','g','g','g','t','g','g'},
511
								{'t','n','g','g','g','g','g','g','g','g','g','g','g','t','t','g','g','t','g','g'},
512
								{'n','t','g','g','g','g','g','g','g','g','g','g','g','g','t','g','g','t','g','g'},
513
								{'t','n','g','g','g','g','g','g','g','g','g','g','g','g','t','g','g','t','g','g'},
514
								{'n','t','s','s','s','s','s','s','s','s','s','s','s','s','t','g','g','g','g','g'}};
515
			for (int tyy=0;tyy<20;tyy++){
516
				for (int txx=0;txx<20;txx++){
517
 
518
					if (tmparea[txx][tyy]=='k'){
519
						kosilkax=tyy;
520
						kosilkay=txx;
521
					}
522
 
523
					gamearea[txx][tyy]=tmparea[tyy][txx];
524
				}
525
			}
526
	}
527
 
528
		if (levnum==4){
529
		static char tmparea[20][20]={{'t','t','t','t','t','t','t','t','t','t','t','t','t','t','t','t','t','t','t','t'},
530
								{'t','g','g','g','g','g','g','g','g','g','g','g','g','g','g','g','g','s','n','t'},
531
								{'t','g','g','g','g','g','g','g','g','g','g','g','g','g','g','g','g','s','n','t'},
532
								{'t','g','g','g','g','g','g','g','g','g','g','g','g','g','g','g','g','s','n','t'},
533
								{'t','g','g','g','g','g','g','g','t','t','g','g','g','g','g','g','g','s','n','t'},
534
								{'t','g','g','g','g','g','g','g','t','t','g','g','g','g','g','g','g','s','n','t'},
535
								{'t','g','g','g','g','g','g','g','t','t','g','g','g','g','g','g','g','s','n','t'},
536
								{'t','g','g','g','g','g','g','g','t','t','g','g','g','g','g','g','g','s','n','t'},
537
								{'t','g','g','g','g','g','g','g','t','t','g','g','g','g','g','g','g','s','s','t'},
538
								{'t','g','g','g','g','t','t','t','t','t','t','t','t','g','g','g','g','g','g','t'},
539
								{'t','g','g','g','g','t','t','t','t','t','t','t','t','g','g','g','g','g','g','t'},
540
								{'t','g','g','g','g','g','g','g','t','t','g','g','g','g','g','g','g','g','g','t'},
541
								{'t','g','g','g','g','g','g','g','t','t','g','g','g','g','g','g','g','g','g','t'},
542
								{'t','g','g','g','g','g','g','g','t','t','g','g','g','g','g','g','g','g','g','t'},
543
								{'t','g','g','g','g','g','g','g','t','t','g','g','g','g','g','g','g','g','g','t'},
544
								{'t','g','g','g','g','g','g','g','t','t','g','g','g','g','g','g','g','g','g','t'},
545
								{'t','g','g','g','g','g','g','g','g','g','g','g','g','g','g','g','g','g','g','t'},
546
								{'t','k','g','g','g','g','g','g','g','g','g','g','g','g','g','g','g','g','g','t'},
547
								{'t','g','g','g','g','g','g','g','g','g','g','g','g','g','g','g','g','g','g','t'},
548
								{'t','t','t','t','t','t','t','t','t','t','t','t','t','t','t','t','t','t','t','t'}};
549
			for (int tyy=0;tyy<20;tyy++){
550
				for (int txx=0;txx<20;txx++){
551
 
552
					if (tmparea[txx][tyy]=='k'){
553
						kosilkax=tyy;
554
						kosilkay=txx;
555
					}
556
 
557
					gamearea[txx][tyy]=tmparea[tyy][txx];
558
				}
559
			}
560
	}
561
 
562
			if (levnum==5){
563
		static char tmparea[20][20]={{'t','t','t','t','t','t','t','t','t','t','t','t','t','t','t','t','t','t','t','t'},
564
								{'t','s','g','g','g','g','g','g','g','g','g','g','g','g','g','g','g','g','g','t'},
565
								{'t','t','g','g','g','g','g','g','g','g','g','g','g','g','g','g','g','g','g','t'},
566
								{'t','s','g','g','g','g','g','g','g','g','g','g','g','g','g','g','g','g','g','t'},
567
								{'t','s','g','g','g','g','g','t','g','g','t','g','g','g','g','g','g','g','g','t'},
568
								{'t','t','g','g','g','g','t','n','t','t','t','g','g','g','g','g','g','g','g','t'},
569
								{'t','s','g','g','g','g','t','n','n','n','t','g','g','g','g','g','g','g','g','t'},
570
								{'t','k','g','g','g','g','t','n','n','n','t','g','g','g','g','g','g','g','g','t'},
571
								{'t','g','g','g','g','g','t','n','n','n','t','g','g','g','g','g','g','g','g','t'},
572
								{'t','g','g','g','g','g','t','n','n','t','g','g','g','g','g','g','g','g','g','t'},
573
								{'t','g','g','g','g','g','t','n','n','t','g','g','g','g','g','g','g','g','g','t'},
574
								{'t','g','g','g','g','g','t','n','n','n','t','g','g','g','g','g','g','g','g','t'},
575
								{'t','g','g','g','g','g','t','n','n','n','t','g','g','g','g','g','g','g','g','t'},
576
								{'t','g','g','g','g','g','g','t','n','t','t','g','g','g','g','g','g','g','g','t'},
577
								{'t','g','g','g','g','g','g','t','t','g','g','g','g','g','g','g','g','g','g','t'},
578
								{'t','g','g','g','g','g','g','g','g','g','g','g','g','g','g','g','g','g','g','t'},
579
								{'t','g','g','g','g','g','g','g','g','g','g','g','g','g','g','g','g','g','g','t'},
580
								{'t','g','g','g','g','g','g','g','g','g','g','g','g','g','g','g','g','g','g','t'},
581
								{'t','g','g','g','g','g','g','g','g','g','g','g','g','g','g','g','g','g','g','t'},
582
								{'t','t','t','t','t','t','t','t','t','t','t','t','t','t','t','t','t','t','t','t'}};
583
			for (int tyy=0;tyy<20;tyy++){
584
				for (int txx=0;txx<20;txx++){
585
 
586
					if (tmparea[txx][tyy]=='k'){
587
						kosilkax=tyy;
588
						kosilkay=txx;
589
					}
590
 
591
					gamearea[txx][tyy]=tmparea[tyy][txx];
592
				}
593
			}
594
			}
595
 
596
		if (levnum==6){
597
		static char tmparea[20][20]={{'s','s','s','s','s','s','s','s','s','s','s','s','s','s','s','s','s','s','s','s'},
598
								{'s','k','t','g','g','g','g','g','g','g','g','g','g','g','g','g','g','g','g','s'},
599
								{'s','g','g','g','g','g','g','g','g','g','g','g','g','g','g','g','g','g','g','s'},
600
								{'s','g','g','s','s','s','s','s','s','s','s','s','s','s','s','s','s','g','g','s'},
601
								{'s','g','g','g','g','g','g','g','g','g','g','g','g','g','t','t','s','g','g','s'},
602
								{'s','g','g','s','g','g','g','g','g','g','g','g','g','g','t','t','s','g','g','s'},
603
								{'s','g','g','s','g','g','g','g','g','g','g','g','g','g','t','t','s','g','g','s'},
604
								{'s','g','g','s','g','g','g','g','g','t','t','g','g','g','g','g','s','g','g','s'},
605
								{'s','g','g','s','g','g','g','g','g','t','t','t','g','g','g','g','s','g','g','s'},
606
								{'s','g','g','s','g','g','g','t','t','t','t','t','t','g','g','g','s','g','g','s'},
607
								{'s','g','g','s','g','g','g','t','t','t','t','t','t','g','g','g','s','g','g','s'},
608
								{'s','g','g','s','g','g','g','g','g','t','t','g','g','g','g','g','s','g','g','s'},
609
								{'s','g','g','s','g','g','g','g','g','t','t','g','g','g','g','g','s','g','g','s'},
610
								{'s','g','g','s','g','g','g','g','g','g','g','g','g','g','g','g','s','g','g','s'},
611
								{'s','g','g','s','g','g','g','g','g','g','g','g','g','g','g','g','s','g','g','s'},
612
								{'s','g','g','s','g','g','g','g','g','g','g','g','g','g','g','g','s','g','g','s'},
613
								{'s','g','g','s','s','s','s','s','s','s','s','s','s','s','s','s','s','g','g','s'},
614
								{'s','g','g','g','g','g','g','g','g','g','g','g','g','g','g','g','g','g','g','s'},
615
								{'s','g','g','g','g','g','g','g','g','g','g','g','g','g','g','g','g','g','g','s'},
616
								{'s','s','s','s','s','s','s','s','s','s','s','s','s','s','s','s','s','s','s','s'}};
617
			for (int tyy=0;tyy<20;tyy++){
618
				for (int txx=0;txx<20;txx++){
619
 
620
					if (tmparea[txx][tyy]=='k'){
621
						kosilkax=tyy;
622
						kosilkay=txx;
623
					}
624
 
625
					gamearea[txx][tyy]=tmparea[tyy][txx];
626
				}
627
			}
628
		}
629
 
630
 
631
			if (levnum==7){
632
		static char tmparea[20][20]={{'s','s','s','s','s','s','s','s','s','s','s','s','s','s','s','s','s','s','s','s'},
633
								{'s','g','g','g','g','g','g','g','g','g','g','g','g','g','g','g','s','t','t','s'},
634
								{'s','g','g','g','g','g','g','g','g','g','g','g','g','g','g','g','s','t','t','s'},
635
								{'s','g','g','g','g','g','g','g','g','g','g','g','g','g','g','g','s','t','t','s'},
636
								{'s','g','g','g','g','g','g','g','g','g','g','g','g','g','g','g','s','t','t','s'},
637
								{'s','g','g','g','g','g','t','t','t','t','t','t','g','g','g','g','s','t','t','s'},
638
								{'s','g','g','g','g','g','t','k','g','g','g','t','g','g','g','g','s','t','t','s'},
639
								{'s','g','g','g','g','g','t','g','g','g','g','t','g','g','g','g','s','t','t','s'},
640
								{'s','g','g','g','g','g','t','g','g','g','g','t','g','g','g','g','s','t','t','s'},
641
								{'s','g','g','g','g','g','t','g','g','g','g','t','g','g','g','g','s','s','s','s'},
642
								{'s','g','g','g','g','g','t','g','g','g','g','t','g','g','g','g','g','g','g','s'},
643
								{'s','g','g','g','g','g','t','t','t','t','g','t','g','g','g','g','g','g','g','s'},
644
								{'s','g','g','g','g','g','g','g','g','g','g','g','g','g','g','g','g','g','g','s'},
645
								{'s','g','g','g','g','g','g','g','g','g','g','g','g','g','g','g','g','g','g','s'},
646
								{'s','g','g','g','g','g','g','g','g','g','g','g','g','g','g','g','g','g','g','s'},
647
								{'s','g','g','g','g','g','g','g','g','g','g','g','g','g','g','g','g','g','g','s'},
648
								{'s','g','g','g','g','g','g','g','g','g','g','g','g','g','g','g','g','g','g','s'},
649
								{'s','g','g','g','g','g','g','g','g','t','g','g','t','g','g','g','g','g','g','s'},
650
								{'s','g','g','g','g','g','g','g','g','t','g','g','t','g','g','g','g','g','g','s'},
651
								{'s','s','s','s','s','s','s','s','s','s','s','s','s','s','s','s','s','s','s','s'}};
652
			for (int tyy=0;tyy<20;tyy++){
653
				for (int txx=0;txx<20;txx++){
654
 
655
					if (tmparea[txx][tyy]=='k'){
656
						kosilkax=tyy;
657
						kosilkay=txx;
658
					}
659
 
660
					gamearea[txx][tyy]=tmparea[tyy][txx];
661
				}
662
			}
663
		}
664
		}
665
		else
666
		{
667
			//ВНЕШНИЕ УРОВНИ
668
			kosilkadirection=1;
669
 
670
			int currentrow=0;
671
			int currentcol=0;
672
 
673
			for (int tmpcntr=0;tmpcntr<400;tmpcntr++){
674
 
675
				currentcol=(int)(tmpcntr/20);
676
				currentrow=tmpcntr-(((int)(tmpcntr/20))*20);
677
				switch(externallevels[tmpcntr+(400*(levnum-1))]){
678
 
679
				case 0:
680
					gamearea[currentrow][currentcol]='n';
681
					break;
682
				case 1:
683
					gamearea[currentrow][currentcol]='g';
684
					break;
685
				case 2:
686
					gamearea[currentrow][currentcol]='k';
687
					kosilkax=currentrow;
688
					kosilkay=currentcol;
689
					break;
690
				case 3:
691
					gamearea[currentrow][currentcol]='s';
692
					break;
693
				case 4:
694
					gamearea[currentrow][currentcol]='t';
695
					break;
696
 
697
				}
698
			}
699
 
700
 
701
		}
702
 
703
	draw_window();
704
 
705
}
706
 
707
//Преоверяем остаток травы
708
int grassLeft(){
709
	int leftgrass=0;
710
	for (int chky=0;chky<20;chky++){
711
		for (int chkx=0;chkx<20;chkx++){
712
			if (gamearea[chkx][chky]=='g') {
713
				leftgrass++;
714
			}
715
		}
716
	}
717
	return leftgrass;
718
}
719
 
720
 
721
//Меняем уровень или выводим сообщение о том, что все уровни пройдены
722
void updateStatus(){
723
 
724
	if (grassLeft()==0) {
725
		if (level==levelcount){
726
			gamestarted=false;
727
			status=2;
728
			draw_window();
729
		} else {
730
			gamestarted=false;
731
			interlevelpause();
732
			level++;
733
			initializeLevel(level);
734
			gamestarted=true;
735
		}
736
	}
737
 
738
}
739
 
740
 
741
 
742
void load_external_levels(){
743
 
744
	CKosFile lev(getLevelsPathName());
745
 
3132 leency 746
	level_read_result=lev.Read (external_levels_count,1);
968 leency 747
 
3132 leency 748
	if (level_read_result == 1)
749
			external_levels_available=true;
750
	else
751
			external_levels_available=false;
968 leency 752
 
3132 leency 753
	if (external_levels_count[0]==0)
968 leency 754
			external_levels_available=false;
3132 leency 755
	else
756
	{
757
		externallevels = new Byte[400*external_levels_count[0]];
758
		lev.Read (externallevels,400*external_levels_count[0]);
759
	}
968 leency 760
}
761
 
762
void app_halt(){
763
 
764
	delete apppath;
765
	delete levpath;
766
	if (external_levels_available==true) {delete externallevels;}
767
	kos_ExitApp();
768
}
769
 
3132 leency 770
 
771
 
968 leency 772
void kos_Main(){
773
 
774
	load_external_levels();
775
 
3132 leency 776
	decode_graphics(576*0 + kosilka_gfx,kosilka_d);
777
	decode_graphics(576*1 + kosilka_gfx,kosilka_u);
778
	decode_graphics(576*2 + kosilka_gfx,kosilka_l);
779
	decode_graphics(576*3 + kosilka_gfx,kosilka_r);
780
	decode_graphics(576*4 + kosilka_gfx,skos);
781
	decode_graphics(576*5 + kosilka_gfx,stone);
782
	decode_graphics(576*6 + kosilka_gfx,tree);
783
	decode_graphics(576*7 + kosilka_gfx,grass);
968 leency 784
 
785
	for (;;){
786
 
787
		switch (kos_WaitForEvent()){
788
		case 1:
789
			w_redraw=true;
790
			draw_window();
791
			break;
792
		case 2:
793
			Byte keyCode;
794
			kos_GetKey(keyCode);
795
			if (status==1){
796
			if (gamestarted==true){
797
				switch (keyCode){
798
				case 177:
799
					if (kosilkay<19){
800
						if (gamearea[kosilkax][kosilkay+1]=='g'){
801
							gamearea[kosilkax][kosilkay]='n';
802
							gamearea[kosilkax][kosilkay+1]='k';
803
 
804
							if (drawanimation==true) {animate(kosilkax,kosilkay,1);}
805
 
806
 
807
							lastkosilkadirection=kosilkadirection;
808
							laststep=1;
809
 
810
							kosilkay++;
811
							kosilkadirection=1;
812
							draw_element(kosilkax,kosilkay);
813
							draw_element(kosilkax,kosilkay-1);
814
							display_grass_left();
815
							updateStatus();
816
						}
817
					}
818
					break;
819
				case 178:
820
					if (kosilkay>0){
821
						if (gamearea[kosilkax][kosilkay-1]=='g'){
822
							gamearea[kosilkax][kosilkay]='n';
823
							gamearea[kosilkax][kosilkay-1]='k';
824
 
825
							if (drawanimation==true) {animate(kosilkax,kosilkay,2);}
826
 
827
							lastkosilkadirection=kosilkadirection;
828
							laststep=2;
829
 
830
							kosilkay--;
831
							kosilkadirection=2;
832
 
833
							draw_element(kosilkax,kosilkay);
834
							draw_element(kosilkax,kosilkay+1);
835
							display_grass_left();
836
							updateStatus();
837
						}
838
					}
839
					break;
840
 
841
				case 179:
842
					if (kosilkax<19){
843
						if (gamearea[kosilkax+1][kosilkay]=='g'){
844
							gamearea[kosilkax][kosilkay]='n';
845
							gamearea[kosilkax+1][kosilkay]='k';
846
 
847
							if (drawanimation==true) {animate(kosilkax,kosilkay,3);}
848
 
849
 
850
							lastkosilkadirection=kosilkadirection;
851
							laststep=3;
852
 
853
							kosilkax++;
854
							kosilkadirection=4;
855
 
856
							draw_element(kosilkax,kosilkay);
857
							draw_element(kosilkax-1,kosilkay);
858
							display_grass_left();
859
							updateStatus();
860
						}
861
					}
862
					break;
863
 
864
				case 176:
865
					if (kosilkax>0){
866
						if (gamearea[kosilkax-1][kosilkay]=='g'){
867
							gamearea[kosilkax][kosilkay]='n';
868
							gamearea[kosilkax-1][kosilkay]='k';
869
 
870
							if (drawanimation==true) {animate(kosilkax,kosilkay,4);}
871
 
872
							lastkosilkadirection=kosilkadirection;
873
							laststep=4;
874
 
875
							kosilkax--;
876
							kosilkadirection=3;
877
 
878
							draw_element(kosilkax,kosilkay);
879
							draw_element(kosilkax+1,kosilkay);
880
							display_grass_left();
881
							updateStatus();
882
						}
883
					}
884
					break;
885
 
886
				case 27:
887
					if (lives>0){
888
						lives--;
889
						initializeLevel(level);
890
 
891
					} else {
892
						gamestarted=false;
893
						status=3;
894
						draw_window();
895
					}
896
					break;
897
 
898
				case 8:
899
					if (laststep!=0){
900
						kosilkadirection=lastkosilkadirection;
901
						if (laststep==1){
902
							gamearea[kosilkax][kosilkay]='g';
903
							gamearea[kosilkax][kosilkay-1]='k';
904
							draw_element(kosilkax,kosilkay);
905
							draw_element(kosilkax,kosilkay-1);
906
							kosilkay--;
907
						}
908
					if (laststep==2){
909
							gamearea[kosilkax][kosilkay]='g';
910
							gamearea[kosilkax][kosilkay+1]='k';
911
							draw_element(kosilkax,kosilkay);
912
							draw_element(kosilkax,kosilkay+1);
913
							kosilkay++;
914
						}
915
 
916
					if (laststep==3){
917
							gamearea[kosilkax][kosilkay]='g';
918
							gamearea[kosilkax-1][kosilkay]='k';
919
							draw_element(kosilkax,kosilkay);
920
							draw_element(kosilkax-1,kosilkay);
921
							kosilkax--;
922
						}
923
 
924
					if (laststep==4){
925
							gamearea[kosilkax][kosilkay]='g';
926
							gamearea[kosilkax+1][kosilkay]='k';
927
							draw_element(kosilkax,kosilkay);
928
							draw_element(kosilkax+1,kosilkay);
929
							kosilkax++;
930
						}
931
 
932
 
933
						laststep=0;
934
					}
935
					break;
936
 
937
				}
938
 
939
			}
940
			}
941
			if (status==0){
942
				if (keyCode==13){ //enter
943
					if (external_levels_available==true){
944
						status=4;
945
						draw_window();
946
					}
947
					else
948
					{
949
						status=1;
950
						initializeLevel(1);
951
						gamestarted=true;
952
					}
953
 
954
				}
955
 
956
				if (keyCode==103){
957
					if (drawgraphics==true){
958
						drawgraphics=false;
959
					} else {
960
						drawgraphics=true;
961
					}
962
 
963
					if (drawgraphics==true){
964
						kos_PutImage((RGB*)kosilka_d,24,24,305,150);
965
					}
966
					else
967
					{
968
					kos_DrawBar(305,150,24,24,0x00AAAA);
969
					}
970
				}
971
 
972
				if (keyCode==97){
973
					if (drawanimation==true){
974
						drawanimation=false;
975
					} else {
976
						drawanimation=true;
977
					}
978
 
979
					if (drawanimation==true){
980
						kos_DrawBar(335,150,24,24,0x00AA00);
981
					}
982
					else
983
					{
984
						kos_DrawBar(335,150,24,24,0xAA0000);
985
					}
986
				}
987
				if (keyCode==104){
988
						status=-1;
989
						draw_window();
990
				}
991
 
992
				if (keyCode==27){
993
					app_halt();
994
				}
995
 
996
			}
997
 
998
			if (status==4){
999
				if (keyCode==49){ //1
1000
						external_levels=false;
1001
						status=1;
1002
						initializeLevel(1);
1003
						gamestarted=true;
1004
 
1005
				}
1006
 
1007
				if (keyCode==50){ //2
1008
						external_levels=true;
1009
						levelcount=external_levels_count[0];
1010
						status=1;
1011
						initializeLevel(1);
1012
						gamestarted=true;
1013
 
1014
				}
1015
			}
1016
 
1017
			if (status==2){
1018
				if (keyCode==113){
1019
						lives=2;
1020
						status=0;
1021
						level=1;
1022
						draw_window();
1023
						gamestarted=true;
1024
				}
1025
			}
1026
 
1027
			if (status==3){
1028
				if (keyCode==113){
1029
						lives=2;
1030
						status=0;
1031
						level=1;
1032
						draw_window();
1033
						gamestarted=true;
1034
 
1035
				}
1036
				if (keyCode==114){
1037
						lives=2;
1038
						status=1;
1039
						level=1;
1040
						initializeLevel(1);
1041
						gamestarted=true;
1042
				}
1043
 
1044
			}
1045
 
1046
			if (status==-1){
1047
				if (keyCode==8){
1048
					status=0;
1049
					draw_window();
1050
				}
1051
			}
1052
 
1053
			break;
1054
		case 3:
1055
 
1056
			app_halt();
1057
			break;
1058
		}
1059
	}
1060
}
1061
 
3132 leency 1062
// Конец исходника