Subversion Repositories Kolibri OS

Rev

Rev 8081 | Rev 8324 | Go to most recent revision | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 8081 Rev 8084
Line 1... Line 1...
1
#include 
1
#include 
2
#include 
2
#include 
3
#include 
3
#include 
4
#include 
4
#include 
-
 
5
#include 
Line 5... Line 6...
5
 
6
 
Line 6... Line -...
6
#include "kolibri_libimg.h"
-
 
7
 
-
 
8
/* 
-
 
Line -... Line 7...
-
 
7
#include "kolibri_libimg.h"
-
 
8
 
9
 EVENTS LOOK LIKE IN C--
9
 
10
*/
10
 
11
 
11
//EVENTS LOOK LIKE IN C--
-
 
12
#define evReDraw  1
-
 
13
#define evKey     2
-
 
14
#define evButton  3
-
 
15
#define evExit    4
-
 
16
#define evDesktop 5
-
 
17
#define evMouse   6
Line -... Line 18...
-
 
18
#define evIPC     7
Line -... Line 19...
-
 
19
#define evNetwork 8
12
#define evReDraw 1
20
#define evDebug   9
13
#define evKey 2
-
 
14
#define evButton 3
21
 
Line 15... Line -...
15
 
-
 
16
 
22
 
17
 
23
#define RESTART 99
18
#define _size 4
24
 
19
 
25
#define b_color 0xbbbbbb
20
#define bs 44
26
#define _size 4
-
 
27
#define bs 44
-
 
28
 
-
 
29
int field[_size][_size] = {
-
 
30
	{0, 0, 0, 1},
21
 
31
	{0, 0, 1, 0},
-
 
32
	{0, 0, 0, 1},
-
 
33
	{1, 0, 0, 0}
Line 22... Line 34...
22
 
34
	/*{0, 0, 0, 0},
Line 23... Line -...
23
int field[_size][_size] = {
-
 
Line -... Line 35...
-
 
35
	{0, 0, 0, 0},
24
	{0, 0, 0, 1},
36
	{0, 0, 0, 0},
25
	{0, 0, 1, 0},
37
	{0, 0, 0, 0}*/
26
	{0, 0, 0, 1},
38
};
Line 59... Line 71...
59
 
71
 
60
    return fdata;
72
		return fdata;
Line 61... Line -...
61
}
-
 
62
 
-
 
63
 
73
}
64
 
74
 
65
 
75
 
66
void load_pict() {
76
void load_pict() {
Line 89... Line 99...
89
    img_to_rgb2(image_data, VER);
99
		img_to_rgb2(image_data, VER);
Line 90... Line 100...
90
    
100
		
91
    img_destroy(image_data);
101
		img_destroy(image_data);
92
    free(filedata);
102
		free(filedata);
-
 
103
}
Line 93... Line -...
93
}
-
 
94
 
-
 
95
 
-
 
96
 
-
 
97
 
104
// END OF PICTURES LOAD CODE
98
// END OF PIC LOAD CODE
105
 
99
 
106
 
100
 
107
 
101
void redraw_buttons() {
108
void redraw_buttons() {
Line 102... Line 109...
102
	for (int j = 5, yy = 0; yy<_size; j+=bs, yy++)
109
		for (int j = 5, yy = 0; yy<_size; j+=bs, yy++)
103
			for (int i = 15, xx = 0; xx<_size; i+=bs, xx++)
110
				for (int i = 15, xx = 0; xx<_size; i+=bs, xx++)
104
			{
111
				{
105
				define_button(65536 * i + (bs-1), 65536 * j + (bs-1), ((xx+1)*10)+yy+1, 0xbbbbbb);
112
					define_button(65536 * i + (bs-1), 65536 * j + (bs-1), ((xx+1)*10)+yy+1, b_color);
Line 106... Line 113...
106
				
113
					
107
				if (field[yy][xx]) draw_bitmap(VER, i, j, bs, bs);
114
					if (field[yy][xx]) draw_bitmap(VER, i, j, bs, bs);
108
				else draw_bitmap(HOR, i, j, bs, bs);
115
					else draw_bitmap(HOR, i, j, bs, bs);
109
			}
116
				}
110
}
117
}
111
 
118
 
Line -... Line 119...
-
 
119
void draw_game_window(){
-
 
120
		BeginDraw(); 
-
 
121
		DrawWindow(215,100,220, 220,title,b_color,0x34);
-
 
122
		redraw_buttons();
-
 
123
		EndDraw();
-
 
124
}
-
 
125
 
-
 
126
 
-
 
127
 
-
 
128
static inline
-
 
129
void draw_text_sysNEW(const char *text, int x, int y, int len, int fontType, color_t color)
-
 
130
{
-
 
131
		__asm__ __volatile__(
-
 
132
		"int $0x40"
-
 
133
		::"a"(4),"d"(text),
-
 
134
		  "b"((x << 16) | y),
-
 
135
		  "S"(len),"c"(fontType<<24+color)
-
 
136
		 :"memory");
-
 
137
}
-
 
138
 
-
 
139
void SetUp() {
-
 
140
		for (int y = 0; y<_size; y++)
-
 
141
					for (int x = 0; x<_size; x++)
-
 
142
					{
-
 
143
						field[x][y] = rand() % 2;
-
 
144
					}
-
 
145
}
-
 
146
 
-
 
147
void draw_victory_window() {
-
 
148
		BeginDraw(); 
-
 
149
		DrawWindow(215,100,220, 220,title,b_color,0x34);
-
 
150
		
-
 
151
		draw_text_sysNEW("Ну вы, и", 10, 10, strlen("Ну вы, и"), 0xB1, 0x000000);
-
 
152
		draw_text_sysNEW("медвежатник,", 10, 50, strlen("Ну вы, и медвежатник,"), 0xB1, 0x000000);
-
 
153
		draw_text_sysNEW("Шеф!", 12, 90, strlen("Шеф!"), 0xB1, 0x000000);
-
 
154
		
-
 
155
		if (debug_pr) {
-
 
156
			printf("Fridge: Very great!\n");
-
 
157
			debug_pr = 0;
-
 
158
		}
-
 
159
		
112
void draw_window(){
160
		define_button(65536 * ((220/2)-(50)) + 140, 65536 * 140 + 25+12, RESTART, 0x9A9A9A);
113
        BeginDraw(); 
161
		draw_text_sysNEW("Заново", 80, 145, strlen("Заново"), 0xB1, 0x000000);
114
        DrawWindow(215,100,220, 220,title,0xbbbbbb,0x34);
162
		EndDraw();
-
 
163
}
-
 
164
 
-
 
165
 
-
 
166
 
-
 
167
void Button() {
115
        redraw_buttons();
168
		int id = get_os_button();
116
        EndDraw();
169
		if (id == 1) exit(0); else
117
}
170
		if (id == RESTART) {
Line 118... Line 171...
118
 
171
			SetUp();
Line 133... Line 186...
133
		
186
			
134
		redraw_buttons();
187
			redraw_buttons();
135
	}
188
		}
Line -... Line 189...
-
 
189
}
-
 
190
 
-
 
191
 
-
 
192
int fridge_opened() {
136
}
193
		int fr_op = 0;
137
 
194
		for (int y = 0; y<_size; y++)
-
 
195
				for (int x = 0; x<_size; x++)
-
 
196
				{
-
 
197
					fr_op += field[x][y];
-
 
198
				}
-
 
199
		if (fr_op == 0) return 1;
-
 
200
		return 0;
-
 
201
}
-
 
202
 
-
 
203
 
-
 
204
int main()
-
 
205
{
138
int main(int argc, char **argv)
206
		srand(time(0));
139
{
207
		
140
    if (kolibri_libimg_init() == -1) 
208
		if (kolibri_libimg_init() == -1) 
141
    {
209
		{
142
		printf("Can not load libimg.obj!\n");
210
			printf("Can not load libimg.obj!\n");
143
		exit(1);
-
 
144
	}
211
			exit(1);
Line 145... Line 212...
145
    
212
		}
146
    load_pict();
213
		load_pict();
147
    
214
		
148
    draw_window();
215
		draw_game_window();
149
    while(1)
216
		while(1)
150
    {
217
		{
151
		switch(get_os_event())
218
			switch(get_os_event())
-
 
219
			{
-
 
220
				case evButton:
-
 
221
					Button();
-
 
222
					if (fridge_opened()) {
152
		{
223
						vict = 1;
153
			case evButton:
224
						debug_pr = 1;
Line 154... Line 225...
154
				Button();
225
						draw_victory_window();
155
				
226
					}
156
				break;
227
					break;
Line 157... Line 228...
157
		  
228
			  
-
 
229
				case evKey:
158
			case evKey:
230
					get_key();
159
				get_key();
231
					break;
160
				break;
232
				 
161
			 
233
				case evReDraw:
162
			case evReDraw:
234
					if (!vict) draw_game_window();