2,35 → 2,47 |
#include <string.h> |
#include <stdlib.h> |
#include <stdio.h> |
#include <time.h> |
|
#include "kolibri_libimg.h" |
|
/* |
EVENTS LOOK LIKE IN C-- |
*/ |
|
|
//EVENTS LOOK LIKE IN C-- |
#define evReDraw 1 |
#define evKey 2 |
#define evButton 3 |
#define evExit 4 |
#define evDesktop 5 |
#define evMouse 6 |
#define evIPC 7 |
#define evNetwork 8 |
#define evDebug 9 |
|
|
#define RESTART 99 |
|
#define b_color 0xbbbbbb |
#define _size 4 |
|
#define bs 44 |
|
|
int field[_size][_size] = { |
{0, 0, 0, 1}, |
{0, 0, 1, 0}, |
{0, 0, 0, 1}, |
{1, 0, 0, 0} |
/*{0, 0, 0, 0}, |
{0, 0, 0, 0}, |
{0, 0, 0, 0}, |
{0, 0, 0, 0}*/ |
}; |
short vict = 0; |
short debug_pr = 0; |
|
char* title = "Fridge v0.1"; |
char* title = "Fridge"; |
|
|
// PICTURES LOADING CODE |
|
char temp_path[4096]; |
char* HOR; |
char* VER; |
61,8 → 73,6 |
} |
|
|
|
|
void load_pict() { |
const int icon_rgb_size = bs*bs; |
char *image_data, |
91,18 → 101,15 |
img_destroy(image_data); |
free(filedata); |
} |
// END OF PICTURES LOAD CODE |
|
|
|
|
// END OF PIC LOAD CODE |
|
|
void redraw_buttons() { |
for (int j = 5, yy = 0; yy<_size; j+=bs, yy++) |
for (int i = 15, xx = 0; xx<_size; i+=bs, xx++) |
{ |
define_button(65536 * i + (bs-1), 65536 * j + (bs-1), ((xx+1)*10)+yy+1, 0xbbbbbb); |
define_button(65536 * i + (bs-1), 65536 * j + (bs-1), ((xx+1)*10)+yy+1, b_color); |
|
if (field[yy][xx]) draw_bitmap(VER, i, j, bs, bs); |
else draw_bitmap(HOR, i, j, bs, bs); |
109,16 → 116,62 |
} |
} |
|
void draw_window(){ |
void draw_game_window(){ |
BeginDraw(); |
DrawWindow(215,100,220, 220,title,0xbbbbbb,0x34); |
DrawWindow(215,100,220, 220,title,b_color,0x34); |
redraw_buttons(); |
EndDraw(); |
} |
|
|
|
static inline |
void draw_text_sysNEW(const char *text, int x, int y, int len, int fontType, color_t color) |
{ |
__asm__ __volatile__( |
"int $0x40" |
::"a"(4),"d"(text), |
"b"((x << 16) | y), |
"S"(len),"c"(fontType<<24+color) |
:"memory"); |
} |
|
void SetUp() { |
for (int y = 0; y<_size; y++) |
for (int x = 0; x<_size; x++) |
{ |
field[x][y] = rand() % 2; |
} |
} |
|
void draw_victory_window() { |
BeginDraw(); |
DrawWindow(215,100,220, 220,title,b_color,0x34); |
|
draw_text_sysNEW("Ну вы, и", 10, 10, strlen("Ну вы, и"), 0xB1, 0x000000); |
draw_text_sysNEW("медвежатник,", 10, 50, strlen("Ну вы, и медвежатник,"), 0xB1, 0x000000); |
draw_text_sysNEW("Шеф!", 12, 90, strlen("Шеф!"), 0xB1, 0x000000); |
|
if (debug_pr) { |
printf("Fridge: Very great!\n"); |
debug_pr = 0; |
} |
|
define_button(65536 * ((220/2)-(50)) + 140, 65536 * 140 + 25+12, RESTART, 0x9A9A9A); |
draw_text_sysNEW("Заново", 80, 145, strlen("Заново"), 0xB1, 0x000000); |
EndDraw(); |
} |
|
|
|
void Button() { |
int id = get_os_button(); |
if (id == 1) exit(0); else |
if (id == RESTART) { |
SetUp(); |
vict = 0; |
draw_game_window(); |
} else |
{ |
int x = (id/10)-1; |
int y = (id%10)-1; |
135,17 → 188,31 |
} |
} |
|
int main(int argc, char **argv) |
|
int fridge_opened() { |
int fr_op = 0; |
for (int y = 0; y<_size; y++) |
for (int x = 0; x<_size; x++) |
{ |
fr_op += field[x][y]; |
} |
if (fr_op == 0) return 1; |
return 0; |
} |
|
|
int main() |
{ |
srand(time(0)); |
|
if (kolibri_libimg_init() == -1) |
{ |
printf("Can not load libimg.obj!\n"); |
exit(1); |
} |
|
load_pict(); |
|
draw_window(); |
draw_game_window(); |
while(1) |
{ |
switch(get_os_event()) |
152,7 → 219,11 |
{ |
case evButton: |
Button(); |
|
if (fridge_opened()) { |
vict = 1; |
debug_pr = 1; |
draw_victory_window(); |
} |
break; |
|
case evKey: |
160,7 → 231,8 |
break; |
|
case evReDraw: |
draw_window(); |
if (!vict) draw_game_window(); |
else draw_victory_window(); |
break; |
} |
} |