forked from KolibriOS/kolibrios
C-- memory blocks
git-svn-id: svn://kolibrios.org@933 a494cfbc-eb01-0410-851d-a64ba20cac60
This commit is contained in:
parent
f188b83bd4
commit
c3c10da1af
209
programs/games/mblocks/branches/mblocks_C--/mblocks.c--
Normal file
209
programs/games/mblocks/branches/mblocks_C--/mblocks.c--
Normal file
@ -0,0 +1,209 @@
|
|||||||
|
/*
|
||||||
|
Memory Blocks for KolibriOS v1.02
|
||||||
|
L&V Edition
|
||||||
|
|
||||||
|
Èäåÿ è äèçàéí: Leency
|
||||||
|
Ðåàëèçîâàíî: Veliant è Leency
|
||||||
|
Compile with C--
|
||||||
|
2008
|
||||||
|
*/
|
||||||
|
#codesize
|
||||||
|
#include "kolibri.h--"
|
||||||
|
#include "icons.txt"
|
||||||
|
#define strok 6 //êîëè÷åñòâî áëîêîâ ïî âåðòèêàëè
|
||||||
|
#define stolbcov 10 //êîëè÷åñòâî áëîêîâ ïî ãîðèçîíòàëè
|
||||||
|
|
||||||
|
char button_r[20] = "<22>®¢ ï ¨£à (F2) ‘ç¥â:"; //íîâàÿ èãðà
|
||||||
|
char button_e[20] = "New game (F2)Count:";
|
||||||
|
|
||||||
|
byte bitstat[60], bitpict[60];
|
||||||
|
dword butonsx[60], butonsy[60];
|
||||||
|
dword firstbit, secondbit;
|
||||||
|
int i, count, lang;
|
||||||
|
|
||||||
|
void main()
|
||||||
|
{
|
||||||
|
byte id;
|
||||||
|
init();
|
||||||
|
loop()
|
||||||
|
{
|
||||||
|
switch (WaitEvent())
|
||||||
|
{
|
||||||
|
CASE evButton:
|
||||||
|
id = GetButtonID();
|
||||||
|
SWITCH (id)
|
||||||
|
{
|
||||||
|
CASE 1:
|
||||||
|
ExitProcess();
|
||||||
|
CASE 5:
|
||||||
|
init();
|
||||||
|
break;
|
||||||
|
CASE 6:
|
||||||
|
FOR (i=0;i<20;i++) button_r[i]><button_e[i];
|
||||||
|
IF (!lang) lang=1; ELSE lang=0;
|
||||||
|
Draw_Panel();
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
if (bitstat[id-100] == 0)
|
||||||
|
{
|
||||||
|
if (firstbit <> 0x0BAD)
|
||||||
|
{
|
||||||
|
if (secondbit <> 0x0BAD)
|
||||||
|
{
|
||||||
|
IF (bitpict[firstbit-100] == bitpict[secondbit-100])
|
||||||
|
bitstat[firstbit-100] = bitstat[secondbit-100] = 2;
|
||||||
|
ELSE
|
||||||
|
bitstat[firstbit-100] = bitstat[secondbit-100] = 0;
|
||||||
|
ReDraw_Game_Button(firstbit - 100);
|
||||||
|
ReDraw_Game_Button(secondbit - 100);
|
||||||
|
secondbit = 0x0BAD;
|
||||||
|
firstbit = id;
|
||||||
|
bitstat[id-100] = 1;
|
||||||
|
ReDraw_Game_Button(id - 100);
|
||||||
|
count++;
|
||||||
|
}
|
||||||
|
ELSE IF (firstbit<>id)
|
||||||
|
{
|
||||||
|
secondbit = id;
|
||||||
|
bitstat[id-100] = 1;
|
||||||
|
ReDraw_Game_Button(id - 100);
|
||||||
|
count++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
ELSE
|
||||||
|
{
|
||||||
|
firstbit = id;
|
||||||
|
bitstat[id-100] = 1;
|
||||||
|
ReDraw_Game_Button(id - 100);
|
||||||
|
count++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
Draw_Count();
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case evKey:
|
||||||
|
IF (GetKey()==51) init();
|
||||||
|
BREAK;
|
||||||
|
case evReDraw:
|
||||||
|
WindowRedrawStatus(1);
|
||||||
|
DefineAndDrawWindow(100, 100, 434, 291 + GetSkinWidth(), 0x34, 0x10C0C0C0, 0, 0, "Memory Blocks L&V Edition");
|
||||||
|
Draw_Panel();
|
||||||
|
Draw_Game_Pole();
|
||||||
|
WindowRedrawStatus(2);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void init()
|
||||||
|
{
|
||||||
|
byte off;
|
||||||
|
$mov edi, #bitstat
|
||||||
|
$mov ecx, 60
|
||||||
|
$xor al, al
|
||||||
|
$rep $stosb //ñòèðàåì ñòàðûå äàíívå î íàæàòûõ êíîïêàõ
|
||||||
|
|
||||||
|
$mov edi, #bitpict
|
||||||
|
$mov ecx, 60
|
||||||
|
$xor al, al
|
||||||
|
$rep $stosb //ñòèðàåì ñòàðûå äàííûå î êàðòèíêàõ
|
||||||
|
|
||||||
|
count = 0;
|
||||||
|
firstbit = secondbit = 0x0BAD;
|
||||||
|
FOR (i = 0; i < 30; i++)
|
||||||
|
{
|
||||||
|
do off = random(60); while (bitpict[off] != 0);
|
||||||
|
bitpict[off] = i;
|
||||||
|
do off = random(60); while (bitpict[off] != 0);
|
||||||
|
bitpict[off] = i;
|
||||||
|
}
|
||||||
|
Draw_Game_Pole();
|
||||||
|
Draw_Panel();
|
||||||
|
}
|
||||||
|
|
||||||
|
void ReDraw_Game_Button(int id)
|
||||||
|
{
|
||||||
|
DefineButton(butonsx[id], butonsy[id], 38, 38, 100 + id + BT_HIDE, 0xEFEBEF); //äåëàåì íîâóþ
|
||||||
|
switch (bitstat[id])
|
||||||
|
{
|
||||||
|
CASE 0:
|
||||||
|
Draw_Block(butonsx[id], butonsy[id]);
|
||||||
|
break;
|
||||||
|
CASE 1:
|
||||||
|
Draw_Pressed_Block(butonsx[id], butonsy[id]);
|
||||||
|
PutImage(bitpict[id]*32*32+#data,32,32,butonsx[id]+3,butonsy[id]+3, #palitra);
|
||||||
|
BREAK;
|
||||||
|
CASE 2:
|
||||||
|
Draw_Open_Block(butonsx[id], butonsy[id]);
|
||||||
|
PutImage(bitpict[id]*32*32+#data,32,32,butonsx[id]+3,butonsy[id]+3, #palitra);
|
||||||
|
BREAK;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void Draw_Game_Pole()
|
||||||
|
{
|
||||||
|
byte j;
|
||||||
|
FOR (j = 0; j < stolbcov; j++) FOR (i = 0; i < strok; i++)
|
||||||
|
{
|
||||||
|
butonsx[j*strok+i] = j * 42 + 4; //ñîõðàíÿåì êîîðäèíàòû ÷òîá íå ñ÷èòàòü â äàëüíåéøåì
|
||||||
|
butonsy[j*strok+i] = i * 42 + 4;
|
||||||
|
ReDraw_Game_Button(j*strok + i); //ðèñóåì ïîëå
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void Draw_Block(dword x, y)
|
||||||
|
{
|
||||||
|
DrawRegion(x, y, 38, 38, 0x0094AECE);//ðàìêà
|
||||||
|
DrawBar(x+1, y+1, 37, 1, 0xFFFFFF); //áåëûå ëèíèè
|
||||||
|
DrawBar(x+1, y+2, 1, 35, 0xFFFFFF);
|
||||||
|
DrawBar(x+1, y+37, 37, 1, 0xDEDEDE); //ñåðûå ëèíèè
|
||||||
|
DrawBar(x+37, y+2, 1, 35, 0xDEDEDE);
|
||||||
|
DrawBar(x + 2, y + 2, 35, 35, 0x00BDC7D6);//ôîí
|
||||||
|
}
|
||||||
|
|
||||||
|
void Draw_Open_Block(dword x, y)
|
||||||
|
{
|
||||||
|
DrawRegion(x, y, 38, 38, 0x0094AECE);//ðàìêà
|
||||||
|
DrawBar(x + 1, y + 1, 37, 37, 0x00EFEBEF);//ôîí
|
||||||
|
}
|
||||||
|
|
||||||
|
void Draw_Pressed_Block(dword x, y)
|
||||||
|
{
|
||||||
|
DrawRegion(x, y, 38, 38, 0x0094AECE);//ðàìêà
|
||||||
|
DrawRegion(x + 1, y + 1, 36, 36, 0x0094DB00);//ðàìêà çåëåíàÿ
|
||||||
|
DrawRegion(x + 2, y + 2, 34, 34, 0x0094DB00);//ðàìêà çåëåíàÿ
|
||||||
|
DrawBar(x + 3, y + 3, 33, 33, 0x00EFEBEF);//ôîí
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void Draw_Panel()
|
||||||
|
{
|
||||||
|
DrawBar(0, 255, 425, 32, 0xEBE7DB);//ôîí ïàíåëè
|
||||||
|
DrawBar(0, 255, 425, 1, 0x94AECE); //ëèíèè
|
||||||
|
DrawBar(0, 256, 425, 1, 0xFFFFFF); //ëèíèè
|
||||||
|
//êíîïêè
|
||||||
|
DrawFlatButton(9, 260, 107, 23, 5, 0xEFEBEF);//íîâàÿ èãðà
|
||||||
|
WriteText(22,268,0x00,0,#button_r,14);
|
||||||
|
WriteText(150, 268, 0x80, 0x00, #button_r+14, 0); //íàäïèñü "Ñ÷åò"
|
||||||
|
DrawFlatButton(215, 260, 23, 23, 6, 0xEFEBEF); //ÿçûê
|
||||||
|
IF (!lang)
|
||||||
|
WriteText(221,268,0x80,0,"EN",0);
|
||||||
|
ELSE
|
||||||
|
WriteText(221,268,0x80,0,"RU",0);
|
||||||
|
Draw_Count();
|
||||||
|
//ïðÿìîóãîëüíèêè ñïðàâà
|
||||||
|
DrawBar(400 , 265, 2, 2, 0xBDCBDE);
|
||||||
|
DrawBar(398 , 270, 6, 6, 0xBDCBDE);
|
||||||
|
DrawBar(406 , 275, 6, 6, 0xBDCBDE);
|
||||||
|
DrawBar(407 , 262, 9, 8, 0xD6D7CE);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void Draw_Count()
|
||||||
|
{
|
||||||
|
DrawBar(190,268,18,7,0xEBE7DB); //öâåò ïàíåëè
|
||||||
|
WriteNumber(190, 268, 0x80, 0x00, 3, count);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
stop:
|
Loading…
Reference in New Issue
Block a user