Move Memory Blocks game to CMM folder, update app to version 1.1. Use icons from icons32.png instead of build in. Better and more flexible code.
git-svn-id: svn://kolibrios.org@6954 a494cfbc-eb01-0410-851d-a64ba20cac60
This commit is contained in:
parent
1a13dac7e1
commit
670acb8f9c
6
programs/cmm/mblocks/Tupfile.lua
Normal file
6
programs/cmm/mblocks/Tupfile.lua
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
if tup.getconfig("NO_CMM") ~= "" then return end
|
||||||
|
if tup.getconfig("LANG") == "ru"
|
||||||
|
then C_LANG = "LANG_RUS"
|
||||||
|
else C_LANG = "LANG_ENG" -- this includes default case without config
|
||||||
|
end
|
||||||
|
tup.rule("mblocks.c", "c-- /D=AUTOBUILD /D=$(C_LANG) %f" .. tup.getconfig("KPACK_CMD"), "mblocks.com")
|
9
programs/cmm/mblocks/compile_en.bat
Normal file
9
programs/cmm/mblocks/compile_en.bat
Normal file
@ -0,0 +1,9 @@
|
|||||||
|
@del lang.h--
|
||||||
|
@echo #define LANG_ENG 1 >lang.h--
|
||||||
|
|
||||||
|
@c-- mblocks.c
|
||||||
|
@del mblocks.kex
|
||||||
|
@rename mblocks.com mblocks
|
||||||
|
@del warning.txt
|
||||||
|
@del lang.h--
|
||||||
|
pause
|
202
programs/cmm/mblocks/mblocks.c
Normal file
202
programs/cmm/mblocks/mblocks.c
Normal file
@ -0,0 +1,202 @@
|
|||||||
|
/*
|
||||||
|
Memory Blocks for KolibriOS v1.1
|
||||||
|
Leency&Veliant Edition
|
||||||
|
2008-2017
|
||||||
|
*/
|
||||||
|
|
||||||
|
#define MEMSIZE 4096 * 12
|
||||||
|
#include "..\lib\gui.h"
|
||||||
|
#include "..\lib\random.h"
|
||||||
|
|
||||||
|
#include "..\lib\obj\libio_lib.h"
|
||||||
|
#include "..\lib\obj\libimg_lib.h"
|
||||||
|
#include "..\lib\patterns\libimg_load_skin.h"
|
||||||
|
|
||||||
|
proc_info Form;
|
||||||
|
|
||||||
|
#ifndef AUTOBUILD
|
||||||
|
#include "lang.h--"
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#define COLOR_CELL_BG 0xFFFfff
|
||||||
|
#define COLOR_CELL_BORDER 0x94AECE
|
||||||
|
#define CELL_SIZE 43
|
||||||
|
#define PANEL_Y CELL_SIZE+4*6 + 4
|
||||||
|
#define PANEL_H 36
|
||||||
|
|
||||||
|
#define strok 6 //cell count x
|
||||||
|
#define stolbcov 10 //cell count y
|
||||||
|
|
||||||
|
#ifdef LANG_RUS
|
||||||
|
#define LABEL_NEW_GAME "New game (F2)";
|
||||||
|
#else
|
||||||
|
#define LABEL_NEW_GAME "<22>®¢ ï ¨£à (F2)";
|
||||||
|
#endif
|
||||||
|
|
||||||
|
int bitstat[60], bitpict[60];
|
||||||
|
dword butonsx[60], butonsy[60];
|
||||||
|
dword firstbit, secondbit;
|
||||||
|
int i, count, lang;
|
||||||
|
|
||||||
|
|
||||||
|
void main()
|
||||||
|
{
|
||||||
|
dword id;
|
||||||
|
load_dll(libio, #libio_init,1);
|
||||||
|
load_dll(libimg, #libimg_init,1);
|
||||||
|
|
||||||
|
Libimg_LoadImage(#skin, "/sys/icons32.png");
|
||||||
|
Libimg_FillTransparent(skin.image, skin.w, skin.h, COLOR_CELL_BG);
|
||||||
|
|
||||||
|
NewGame();
|
||||||
|
|
||||||
|
loop() switch(WaitEvent())
|
||||||
|
{
|
||||||
|
case evKey:
|
||||||
|
GetKeys();
|
||||||
|
if (key_scancode==60) NewGame();
|
||||||
|
break;
|
||||||
|
|
||||||
|
case evButton:
|
||||||
|
id = GetButtonID();
|
||||||
|
if (id==1) ExitProcess();
|
||||||
|
else if (id==5) NewGame();
|
||||||
|
else {
|
||||||
|
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 evReDraw:
|
||||||
|
system.color.get();
|
||||||
|
DefineAndDrawWindow(215,100,CELL_SIZE+4*10 + 4 + 9,PANEL_Y + 4 + PANEL_H +skin_height,0x34,0xC0C0C0,"Memory Blocks",0);
|
||||||
|
GetProcessInfo(#Form, SelfInfo);
|
||||||
|
Draw_Panel();
|
||||||
|
Draw_Game_Pole();
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void NewGame()
|
||||||
|
{
|
||||||
|
int off;
|
||||||
|
|
||||||
|
FOR (i = 0; i < 60; i++)
|
||||||
|
{
|
||||||
|
bitpict[i] = 0;
|
||||||
|
bitpict[i] = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
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;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void ReDraw_Game_Button(int id)
|
||||||
|
{
|
||||||
|
DefineButton(butonsx[id], butonsy[id], CELL_SIZE, CELL_SIZE, 100 + id + BT_HIDE, 0);
|
||||||
|
switch (bitstat[id])
|
||||||
|
{
|
||||||
|
case 0:
|
||||||
|
Draw_Block(butonsx[id], butonsy[id]);
|
||||||
|
break;
|
||||||
|
case 1:
|
||||||
|
Draw_Pressed_Block(butonsx[id], butonsy[id]);
|
||||||
|
img_draw stdcall(skin.image, butonsx[id]+6, butonsy[id]+6, 32, 32, 0, bitpict[id]*32);
|
||||||
|
BREAK;
|
||||||
|
case 2:
|
||||||
|
Draw_Open_Block(butonsx[id], butonsy[id]);
|
||||||
|
img_draw stdcall(skin.image, butonsx[id]+6, butonsy[id]+6, 32, 32, 0, bitpict[id]*32);
|
||||||
|
BREAK;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void Draw_Game_Pole()
|
||||||
|
{
|
||||||
|
byte j;
|
||||||
|
for (j = 0; j < stolbcov; j++) for (i = 0; i < strok; i++)
|
||||||
|
{
|
||||||
|
butonsx[j*strok+i] = CELL_SIZE+4 * j + 4; //save coordinates to avoid their recalculation after
|
||||||
|
butonsy[j*strok+i] = CELL_SIZE+4 * i + 4;
|
||||||
|
ReDraw_Game_Button(j*strok + i);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void Draw_Block(dword x, y)
|
||||||
|
{
|
||||||
|
DrawRectangle(x, y, CELL_SIZE, CELL_SIZE, COLOR_CELL_BORDER);//border
|
||||||
|
DrawRectangle3D(x + 1, y + 1, CELL_SIZE-2, CELL_SIZE-2, 0xFFFFFF, 0xDEDEDE);//bump
|
||||||
|
DrawBar(x + 2, y + 2, CELL_SIZE-3, CELL_SIZE-3, 0xBDC7D6);//background
|
||||||
|
}
|
||||||
|
|
||||||
|
void Draw_Open_Block(dword x, y)
|
||||||
|
{
|
||||||
|
DrawRectangle(x, y, CELL_SIZE, CELL_SIZE, COLOR_CELL_BORDER);//border
|
||||||
|
DrawBar(x + 1, y + 1, CELL_SIZE-1, CELL_SIZE-1, COLOR_CELL_BG);//background
|
||||||
|
}
|
||||||
|
|
||||||
|
void Draw_Pressed_Block(dword x, y)
|
||||||
|
{
|
||||||
|
DrawRectangle(x, y, CELL_SIZE, CELL_SIZE, COLOR_CELL_BORDER);//border
|
||||||
|
DrawWideRectangle(x + 1, y + 1, CELL_SIZE-1, CELL_SIZE-1, 2, 0x94DB00);//border green
|
||||||
|
DrawBar(x + 3, y + 3, CELL_SIZE-5, CELL_SIZE-5, COLOR_CELL_BG);//background
|
||||||
|
}
|
||||||
|
|
||||||
|
void Draw_Panel()
|
||||||
|
{
|
||||||
|
DrawBar(0, PANEL_Y, Form.cwidth, 1, system.color.work_dark);
|
||||||
|
DrawBar(0, PANEL_Y+1, Form.cwidth, 1, system.color.work_light);
|
||||||
|
DrawBar(0, PANEL_Y+2, Form.cwidth, PANEL_H-2, system.color.work);
|
||||||
|
DrawStandartCaptButton(9, PANEL_Y+5, 5, LABEL_NEW_GAME);
|
||||||
|
Draw_Count();
|
||||||
|
}
|
||||||
|
|
||||||
|
void Draw_Count()
|
||||||
|
{
|
||||||
|
DrawBar(Form.cwidth-32,PANEL_Y + 12,30,12,system.color.work);
|
||||||
|
WriteNumber(Form.cwidth-32, PANEL_Y + 12, 0x90, system.color.work_text, 3, count);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
stop:
|
Binary file not shown.
Before Width: | Height: | Size: 11 KiB |
@ -1,4 +0,0 @@
|
|||||||
..\..\c--\c-- mblocks.c--
|
|
||||||
del mblocks.kex
|
|
||||||
rename mblocks.com mblocks.kex
|
|
||||||
pause
|
|
File diff suppressed because it is too large
Load Diff
@ -1,162 +0,0 @@
|
|||||||
#startaddress 0
|
|
||||||
#code32 TRUE
|
|
||||||
|
|
||||||
char os_name[8] = {'M','E','N','U','E','T','0','1'};
|
|
||||||
dword os_version = 0x00000001;
|
|
||||||
dword start_addr = #main;
|
|
||||||
dword final_addr = #stop+32;
|
|
||||||
dword alloc_mem = 0x00100000;
|
|
||||||
dword x86esp_reg = 0x0007fff0;
|
|
||||||
dword I_Param = 0x0;
|
|
||||||
dword I_Icon = 0x0;
|
|
||||||
|
|
||||||
//Events
|
|
||||||
#define evButton 3
|
|
||||||
#define evKey 2
|
|
||||||
#define evReDraw 1
|
|
||||||
|
|
||||||
//Button options
|
|
||||||
#define BT_DEL 0x80000000
|
|
||||||
#define BT_HIDE 0x40000000
|
|
||||||
#define BT_NOFRAME 0x20000000
|
|
||||||
|
|
||||||
|
|
||||||
//------------------------------------------------------------------------------
|
|
||||||
inline fastcall dword WaitEvent(){
|
|
||||||
EAX = 10;
|
|
||||||
$int 0x40
|
|
||||||
}
|
|
||||||
|
|
||||||
inline fastcall void ExitProcess(){
|
|
||||||
EAX = -1;
|
|
||||||
$int 0x40
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
inline fastcall word GetKey(){
|
|
||||||
EAX = 2;
|
|
||||||
$int 0x40
|
|
||||||
EAX = EAX >> 8;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
inline fastcall word GetButtonID(){
|
|
||||||
EAX = 17;
|
|
||||||
$int 0x40
|
|
||||||
EAX = EAX >> 8;
|
|
||||||
}
|
|
||||||
|
|
||||||
//------------------------------------------------------------------------------
|
|
||||||
|
|
||||||
|
|
||||||
void DefineAndDrawWindow(dword x,y,sizeX,sizeY,byte mainAreaType,dword
|
|
||||||
mainAreaColor,byte headerType,dword headerColor,EDI)
|
|
||||||
{
|
|
||||||
EBX = x << 16 + sizeX;
|
|
||||||
ECX = y << 16 + sizeY;
|
|
||||||
EDX = mainAreaType << 24 | mainAreaColor;
|
|
||||||
ESI = headerType << 24 | headerColor;
|
|
||||||
$xor eax,eax
|
|
||||||
$int 0x40
|
|
||||||
}
|
|
||||||
|
|
||||||
void WindowRedrawStatus(dword EBX)
|
|
||||||
{
|
|
||||||
EAX = 12;
|
|
||||||
$int 0x40
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
inline fastcall dword GetSkinWidth(){
|
|
||||||
EAX = 48;
|
|
||||||
EBX = 4;
|
|
||||||
$int 0x40
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
void DefineButton(dword x,y,w,h,EDX,ESI){
|
|
||||||
EAX = 8;
|
|
||||||
EBX = x<<16+w;
|
|
||||||
ECX = y<<16+h;
|
|
||||||
$int 0x40
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
void WriteText(dword x,y,byte fontType, dword color, EDX, ESI)
|
|
||||||
{
|
|
||||||
EAX = 4;
|
|
||||||
EBX = x<<16+y;
|
|
||||||
ECX = fontType<<24+color;
|
|
||||||
$int 0x40;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
void DrawBar(dword x,y,w,h,EDX)
|
|
||||||
{
|
|
||||||
EAX = 13;
|
|
||||||
EBX = x<<16+w;
|
|
||||||
ECX = y<<16+h;
|
|
||||||
$int 0x40
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
void DrawRegion(dword x,y,width,height,color1)
|
|
||||||
{
|
|
||||||
DrawBar(x,y,width,1,color1); //ïîëîñà ãîð ñâåðõó
|
|
||||||
DrawBar(x,y+height,width,1,color1); //ïîëîñà ãîð ñíèçó
|
|
||||||
DrawBar(x,y,1,height,color1); //ïîëîñà âåðò ñëåâà
|
|
||||||
DrawBar(x+width,y,1,height+1,color1); //ïîëîñà âåðò ñïðàâà
|
|
||||||
}
|
|
||||||
|
|
||||||
void DrawFlatButton(dword x,y,width,height,id,color)
|
|
||||||
{
|
|
||||||
DrawRegion(x,y,width,height,0x94AECE);
|
|
||||||
DrawBar(x+1,y+1,width-1,1,0xFFFFFF); //ïîëîñà ãîð áåëàÿ
|
|
||||||
DrawBar(x+1,y+height-1,width-2,1,0xC7C7C7); //òåíü âåðò
|
|
||||||
DrawBar(x+1,y+1,1,height-1,0xFFFFFF); //ïîëîñà âåðò áåëàÿ
|
|
||||||
DrawBar(x+width-1,y+2,1,height-2,0xC7C7C7); //òåíü âåðò
|
|
||||||
DrawBar(x+2,y+2,width-3,height-3,color); //çàëèâêà
|
|
||||||
DefineButton(x,y,width,height,id+BT_HIDE,0xEFEBEF); //îïðåäåëÿåì êíîïêó
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
void PutImage(dword EBX,w,h,x,y, EDI)
|
|
||||||
{
|
|
||||||
EAX = 65;
|
|
||||||
ECX = w<<16+h;
|
|
||||||
EDX = x<<16+y;
|
|
||||||
ESI = 8;
|
|
||||||
EBP = 0;
|
|
||||||
$int 0x40
|
|
||||||
}
|
|
||||||
|
|
||||||
void WriteNumber(dword x,y,byte fontType, dword color, count, ECX)
|
|
||||||
{
|
|
||||||
EAX = 47;
|
|
||||||
EBX = count<<16;
|
|
||||||
EDX = x<<16+y;
|
|
||||||
ESI = fontType<<24+color;
|
|
||||||
$int 0x40;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
dword generator; // random number generator - äëÿ ãåíåðàöèè ñëó÷àéíûõ ÷èñåë
|
|
||||||
:int random(int max)
|
|
||||||
// get pseudo-random number - ïîëó÷èòü ïñåâäîñëó÷àéíîå ÷èñëî
|
|
||||||
{
|
|
||||||
$rdtsc // eax & edx
|
|
||||||
$xor eax,edx
|
|
||||||
$not eax
|
|
||||||
|
|
||||||
EBX = generator;
|
|
||||||
$ror ebx,3
|
|
||||||
$xor ebx,0xdeadbeef
|
|
||||||
EBX += EAX;
|
|
||||||
generator = EBX;
|
|
||||||
|
|
||||||
EAX += EBX;
|
|
||||||
EAX = EAX % max;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -1,209 +0,0 @@
|
|||||||
/*
|
|
||||||
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