Subversion Repositories Kolibri OS

Rev

Rev 6368 | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
1805 yogev_ezra 1
//(C) Artemonische, 2010
2
 
3
#pragma option meos
8287 leency 4
#include "kolibri.h--" //подключаем библиотеку с KolibriOS API
1805 yogev_ezra 5
 
6368 cheptil 6
#ifndef AUTOBUILD
7
#include "lang.h--"
8
#endif
9
 
10
#ifdef LANG_RUS
11
	?define TOP_TEXT_COL 4
12
	?define TOP_TEXT "Соберите все числа от 10 до 90 по порядку..."
13
	?define BOT_LEFT_TEXT_COL 4
14
	?define BOT_LEFT_TEXT "Ищем число: "
15
	?define BOT_RIGHT_TEXT_COL 162
16
	?define BOT_RIGHT_TEXT "Осталось найти: "
17
	?define BOT_LEFT_NUMBER_COL 70
18
	?define BOT_RIGHT_NUMBER_COL 252
19
	?define F2_TEXT "Заново (F2)"
20
	?define WIN_TEXT "Вы нашли все числа! :)"
21
#else
22
	?define TOP_TEXT_COL 2
23
	?define TOP_TEXT "Collect all numbers from 10 to 90 in order..."
24
	?define BOT_LEFT_TEXT_COL 2
25
	?define BOT_LEFT_TEXT "Looking for number: "
26
	?define BOT_RIGHT_TEXT_COL 156
27
	?define BOT_RIGHT_TEXT "Remains to find: "
28
	?define BOT_LEFT_NUMBER_COL 116
29
	?define BOT_RIGHT_NUMBER_COL 252
8287 leency 30
	?define F2_TEXT " Anew (F2) "
6368 cheptil 31
	?define WIN_TEXT "You have found all numbers! :)"
32
#endif
33
 
8287 leency 34
int find;
35
struct {
1805 yogev_ezra 36
	int x;
37
	int y;
38
	int button_id;
39
	int mark;
40
	int text;
8287 leency 41
}box[81];
1805 yogev_ezra 42
 
8287 leency 43
#define BUTTON_NEW_GAME 582
44
 
1805 yogev_ezra 45
void main()
46
{
47
	int button,tempi,tempj;
48
	randomize();
8287 leency 49
	new_game();
50
	loop() switch(@WaitEvent())
1805 yogev_ezra 51
	{
8287 leency 52
		case evButton:
53
			button=@GetButtonID();
54
			IF (button==1)
55
				{
56
				ExitProcess();
57
				}
58
			IF (button==BUTTON_NEW_GAME)
59
				{
60
				new_game();
61
				}
62
			if (button>500) && (button
63
				{
64
				box[button-500].mark=2;
65
				find++;
66
				IF (find==91)
1805 yogev_ezra 67
					{
68
					draw_window();
69
					}
8287 leency 70
				else
1805 yogev_ezra 71
					{
8287 leency 72
					DeleteButton(button);
73
					tempi=box[button-500].y*30-30;
74
					tempj=30*box[button-500].x-16;
75
					DrawBar(tempi,tempj,30,30,0xDCFFDC);
76
					DrawBar(70,289,16,8,0xDCFFDC);
77
					DrawBar(252,289,16,8,0xDCFFDC);
78
					WriteNumber(70,289,0x80,0,find);
79
					WriteNumber(252,289,0x80,0,90-find+1);
1805 yogev_ezra 80
					}
8287 leency 81
				}
82
			BREAK;
83
		case evKey: //если произошло нажатие клавиши на клавиатуре
84
			IF (@GetKey()==051) new_game(); //F2
85
			BREAK;
86
		case evReDraw:
87
			draw_window();
88
			draw_buttons();
1805 yogev_ezra 89
	}
90
}
91
 
92
void draw_window()
93
{
8287 leency 94
	DefineAndDrawWindow(300,176,280,343,0x34,0xDCFFDC,"FindNumbers");
1805 yogev_ezra 95
	DrawBar(0,13,271,1,0x0CFF0C); //линия сверху
96
	DrawBar(0,285,271,1,0x0CFF0C);
97
	DrawBar(0,299,271,1,0x0CFF0C); //линия снизу
98
	if (find<=90)
99
		{
6368 cheptil 100
		WriteText(TOP_TEXT_COL,4,0x80,0x000000,TOP_TEXT);
101
		WriteText(BOT_LEFT_TEXT_COL,289,0x80,0x000000,BOT_LEFT_TEXT);
102
		WriteText(BOT_RIGHT_TEXT_COL,289,0x80,0x000000,BOT_RIGHT_TEXT);
103
		WriteNumber(BOT_LEFT_NUMBER_COL,289,0x80,0,find);
104
		WriteNumber(BOT_RIGHT_NUMBER_COL,289,0x80,0,90-find+1);
8287 leency 105
		DrawNewGameButton(155,300,115,14,0xAFFFAF);
6368 cheptil 106
		WriteText(2,304,0x80,0x000000,"Made by Artemonische,2010");
1805 yogev_ezra 107
		}
1827 yogev_ezra 108
	IF (find==91)
1805 yogev_ezra 109
		{
6368 cheptil 110
		WriteText(70,100,0x80,0x000000,WIN_TEXT);
8287 leency 111
		DrawNewGameButton(100,110,70,20,0xE4DFE1);
1805 yogev_ezra 112
		}
113
}
114
 
8287 leency 115
void DrawNewGameButton(dword x,y,width,height,color)
116
{
117
	DefineButton(x,y,width,height,BUTTON_NEW_GAME,color);
118
	WriteText(-11*6+width/2+x+1,height/2-3+y,0x80,0,F2_TEXT,0);
119
}
120
 
121
void new_game()
122
{
123
	find=10;
124
	initialization();
125
	draw_window();
126
	draw_buttons();
127
}
128
 
1805 yogev_ezra 129
void draw_buttons()
130
{
131
int i,tempi,tempj;
1827 yogev_ezra 132
	FOR (i=1;i<=81;i++)
1805 yogev_ezra 133
		{
1828 yogev_ezra 134
		IF (box[i].mark==1)
1805 yogev_ezra 135
			{
136
			tempi=box[i].y*30-30;
137
			tempj=30*box[i].x-16;
138
			DefineButton(tempi,tempj,29,29,box[i].button_id,0xAFFFAF);
139
			WriteNumber(tempi+11,tempj+11,0x80,0,box[i].text);
140
			}
141
		}
142
}
143
 
144
void initialization()
145
{
146
int i,j,t;
147
t=0;
1827 yogev_ezra 148
	FOR (i=1;i<=9;i++)
1805 yogev_ezra 149
		{
1827 yogev_ezra 150
		FOR (j=1;j<=9;j++)
1805 yogev_ezra 151
			{
152
			t++;
153
			box[t].x=j;
154
			box[t].y=i;
155
			box[t].mark=1;
156
			box[t].button_id=500+t;
157
			box[t].text=Generate(t);
158
			}
159
		}
160
}
161
 
162
int Generate(int xx)
163
{
164
	int temp,k,p;
165
	p=2;
1827 yogev_ezra 166
	WHILE (p==2)
1805 yogev_ezra 167
		{
168
		temp=random(81)+10;
169
		p=1;
1827 yogev_ezra 170
		FOR (k=1; k
1805 yogev_ezra 171
			{
1827 yogev_ezra 172
			IF (box[k].text==temp)
1805 yogev_ezra 173
				{
174
				p=2;
1827 yogev_ezra 175
				BREAK;
1805 yogev_ezra 176
				}
177
			}
178
		}
179
	return temp;
180
}
181
stop: