Форум программистов, компьютерный форум, киберфорум
C++ Builder
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.53/19: Рейтинг темы: голосов - 19, средняя оценка - 4.53
Я Фоюмчанин ? дааааа)
 Аватар для ivan.-94
213 / 204 / 23
Регистрация: 02.06.2012
Сообщений: 1,424
Записей в блоге: 12

Структура приложения "Спичечные головоломки"

15.02.2015, 13:01. Показов 3914. Ответов 56
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Всем доброго времени суток.
С самого начала: хочу реализовать приложение головоломку "спички".
И так, что я пока сделал:
Я могу ввести число строк и столбцов и нарисовать, а так же сразу
создаю массив с точками пересечения прямых.

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
    Image1->Canvas->Brush->Color = clWhite;
    Image1->Canvas->Pen->Color = clSkyBlue;
    int N = 7;
    N = Edit1->Text.ToInt();
    Panel1->Width = Panel1->Height;
    float dx, dy;
    dy = (float)Image1->Height / N;
    dx = (float)Image1->Width / N;
    TPointF *map = new TPointF[(N+1)*(N+1)]; // массив точек
    int i = 0;
    for (float y = 0; y < Image1->Height; y+=dy) {
        for (float x = 0; x < Image1->Width; x+=dx) {
            Image1->Canvas->Rectangle(x, y , x+dx, y+dy);
            if (x==0&&y==0) {
                map[i] = PointF(x,y);       i++;
                map[i] = PointF(x+dx,y);    i++;
                map[i] = PointF(x+dx,y+dy); i++;
                map[i] = PointF(x,y+dy);    i++;
            }
            if (x!=0&&y==0) {
                map[i] = PointF(x+dx,y);    i++;
                map[i] = PointF(x+dx,y+dy); i++;
            }
            if (y!=0&&x==0) {
                map[i] = PointF(x,y+dy);    i++;
                map[i] = PointF(x+dx,y+dy); i++;
            }
            if (x!=0&&y!=0) {
                map[i] = PointF(x+dx,y+dy); i++;
            }
        }
    }
Далее я буду создавать спичку и рисовать.
И тут вопрос как лучше рисовать спичку и как обрабатывать Drag And Drop? при рисовании на Canvos
Плюс ко всему мне нужно обрабатывать положение спички, так, что бы она могла располагаться только от точки до точки:
Название: 2.png
Просмотров: 141

Размер: 2.7 КбНазвание: 3.png
Просмотров: 140

Размер: 4.5 Кб
Как я думою:
Мне нужно создать класс Квадрат и при подсчете точек создавать объекты этого класса и сохранять его координаты.
т.е. наглядно будет так:Название: 4.png
Просмотров: 142

Размер: 3.1 Кб
Далее просто MouseMove будем бегать по всем квадратам и сравнивать координаты и положение мышки:
Относительно всего поля найдем нужный квадрат, а относительно этого квадрата будем смотреть где в нем расположить спичку.

Нужны комментарии, предложения, замечания и т.д. ...
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
15.02.2015, 13:01
Ответы с готовыми решениями:

Структура приложения
Обращаюсь к опытным разработчикам как новичок. Хочу написать маленькое несложное приложение, но возникла проблема с проектированием...

Структура приложения
У меня есть класс user и post. Есть контроллер. Насчет классов понятно - на каждый объект свой класс. А вот насчет контроллеров -...

Структура Qt-приложения
Хотел бы понять, как устроено приложение Qt и как правильно его разрабатывать. Как правильно разделять интерфейс от логики приложения....

56
 Аватар для kzru_hunter
1124 / 795 / 101
Регистрация: 01.02.2011
Сообщений: 1,887
Записей в блоге: 1
18.02.2015, 13:09
Студворк — интернет-сервис помощи студентам
ivan.-94 почему мой коммент проигнорировал? то что я предложил - самое правильное решение.
0
 Аватар для BRcr
4043 / 2333 / 292
Регистрация: 03.02.2011
Сообщений: 5,066
Записей в блоге: 10
18.02.2015, 13:53
ivan.-94, лучше не заставлять юзеров проявлять чудеса микроконтроля мышкой. Сделай проще - тянешь спичку ведь не сферическую, а спозиционированную каким-то образом по отношению к сетке. Так и магнитить ее только в места, которым соответствует ее текущее положение в пространстве. А вращение спички производить заранее или в процессе перетаскивания(кликом ПКМ, например).
0
 Аватар для kzru_hunter
1124 / 795 / 101
Регистрация: 01.02.2011
Сообщений: 1,887
Записей в блоге: 1
18.02.2015, 14:26

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
//---------------------------------------------------------------------------
 
#include <vcl.h>
#include <math.h>
#pragma hdrstop
 
#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
 
float DistanceFromPointToLine(int Mx, int My, float A, float B, float C);
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
        : TForm(Owner)
{
 
}
//---------------------------------------------------------------------------
 
float DistanceFromPointToLine(int Mx, int My, float A, float B, float C)
{
        return fabs(A*Mx+B*My+C)/sqrt(A*A+B*B);
}
 
void DrawBlack(TImage *image)
{
        int W = image->Width;
        int H = image->Height;
 
        image->Canvas->Pen->Color = clBlack;
        image->Canvas->Pen->Width = 3;
        image->Canvas->Rectangle(0,0,W,H);
        image->Canvas->MoveTo(0,0);
        image->Canvas->LineTo(W,H);
        image->Canvas->MoveTo(0,H);
        image->Canvas->LineTo(W,0);
}
 
void __fastcall TForm1::FormCreate(TObject *Sender)
{
        DrawBlack(Image1);
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Image1MouseMove(TObject *Sender, TShiftState Shift,
      int X, int Y)
{
        float W = Image1->Width;
        float H = Image1->Height;
 
        float fDist[6];
 
        fDist[0] = DistanceFromPointToLine(X,Y, -H/W, -1, H); // y = -H/W + H  (íàêëîí ñïè÷êè âïðàâî)
        fDist[1] = DistanceFromPointToLine(X,Y, H/W, -1, 0); // y = H/W (íàêëîí ñïè÷êè âëåâî)
        fDist[2] = DistanceFromPointToLine(X,Y, 1, 0, 0); // x = 0 (ñïè÷êà ñëåâà)
        fDist[3] = DistanceFromPointToLine(X,Y, 1, 0, -W); // x = 0 (ñïè÷êà ñïðàâà)
        fDist[4] = DistanceFromPointToLine(X,Y, 0, 1, 0); // y = 0 (ñïè÷êà ñâåðõó)
        fDist[5] = DistanceFromPointToLine(X,Y, 0, 1, -H); // y = H (ñïè÷êà ñíèçó)
 
        float fDistMin = fDist[0];
        int idxMin = 0;
 
        for ( int i = 1; i < 6; i++ )
        {
                if (fDist[i] < fDistMin)
                {
                        fDistMin = fDist[i];
                        idxMin = i;
                }
        }
 
        DrawBlack(Image1);
 
        Image1->Canvas->Pen->Width = 5;
        Image1->Canvas->Pen->Color = clRed;
 
        if ( idxMin == 0 ) // íàêëîí ñïè÷êè âïðàâî
        {
                Image1->Canvas->MoveTo(0,H);
                Image1->Canvas->LineTo(W,0);
        }
        else if ( idxMin == 1 ) // íàêëîí ñïè÷êè âëåâî
        {
                Image1->Canvas->MoveTo(0,0);
                Image1->Canvas->LineTo(W,H);
        }
        else if ( idxMin == 2 ) // ñïè÷êà ñëåâà
        {
                Image1->Canvas->MoveTo(0,0);
                Image1->Canvas->LineTo(0,H);
        }
        else if ( idxMin == 3 ) // ñïè÷êà ñïðàâà
        {
                Image1->Canvas->MoveTo(W,0);
                Image1->Canvas->LineTo(W,H);
        }
        else if ( idxMin == 4 ) // ñïè÷êà ñâåðõó
        {
                Image1->Canvas->MoveTo(0,0);
                Image1->Canvas->LineTo(W,0);
        }
        else if ( idxMin == 5 ) // ñïè÷êà ñíèçó
        {
                Image1->Canvas->MoveTo(0,H);
                Image1->Canvas->LineTo(W,H);
        }
 
}
//---------------------------------------------------------------------------
1
Я Фоюмчанин ? дааааа)
 Аватар для ivan.-94
213 / 204 / 23
Регистрация: 02.06.2012
Сообщений: 1,424
Записей в блоге: 12
18.02.2015, 14:28  [ТС]
Цитата Сообщение от kzru_hunter Посмотреть сообщение
почему мой коммент проигнорировал? то что я предложил - самое правильное решение.
Я не проигнорировал а как раз таки и рассматриваю его.
Так как идея, что предложил Avazart либо мне не до конца понятна либо не подходит чуток.
С вашей идеей я пока так взяв листочек и ручку набросал только:

Легко заметить, что расстояние для стороны
Left: Расстояние от точки (Left;y) до точки (x;y) = https://www.cyberforum.ru/cgi-bin/latex.cgi?\sqrt{(x-Left)^2}
Right: Расстояние от точки (Right;y) до точки (x;y) = https://www.cyberforum.ru/cgi-bin/latex.cgi?\sqrt{(x-Right)^2}
Top: Расстояние от точки (x;Top) до точки (x;y) = https://www.cyberforum.ru/cgi-bin/latex.cgi?\sqrt{(y-Top)^2}
Top: Расстояние от точки (x;Bottom) до точки (x;y) = https://www.cyberforum.ru/cgi-bin/latex.cgi?\sqrt{(y-Bottom)^2}
И остается вопрос по диагоналям... Там прямые заданны не уравнением, а двумя точками.
0
Я Фоюмчанин ? дааааа)
 Аватар для ivan.-94
213 / 204 / 23
Регистрация: 02.06.2012
Сообщений: 1,424
Записей в блоге: 12
18.02.2015, 14:32  [ТС]
Цитата Сообщение от BRcr Посмотреть сообщение
Сделай проще - тянешь спичку ведь не сферическую, а спозиционированную каким-то образом по отношению к сетке. Так и магнитить ее только в места, которым соответствует ее текущее положение в пространстве.
Спичка позиционирована не по отношению к сетке а непосредственно какого то квадрата, который в свою очерель является частью сетки.
Цитата Сообщение от BRcr Посмотреть сообщение
А вращение спички производить заранее или в процессе перетаскивания(кликом ПКМ, например).
Ну вращать спичку вообще думою не стоит, нужно то сделать головоломку и на вряд ли кто то будет думать в какую сторону головку спички повернуть.
0
 Аватар для BRcr
4043 / 2333 / 292
Регистрация: 03.02.2011
Сообщений: 5,066
Записей в блоге: 10
18.02.2015, 14:46

Не по теме:

Цитата Сообщение от ivan.-94 Посмотреть сообщение
Легко заметить, что
Я чуть печенькой не подавился, что ж ты делаешь-то?!:D Корни из квадратов...



Вычисление расстояния между точкой и прямой/лучом/отрезком

Добавлено через 5 минут
Цитата Сообщение от ivan.-94 Посмотреть сообщение
Ну вращать спичку вообще думою не стоит, нужно то сделать головоломку и на вряд ли кто то будет думать в какую сторону головку спички повернуть.
Да причем тут головка? Вращать - оно в смысле по горизонтали спичка, по вертикали или по одной из диагоналей. Изначально. И в то время, пока тащим и думаем, куда ее сбросить.
0
Я Фоюмчанин ? дааааа)
 Аватар для ivan.-94
213 / 204 / 23
Регистрация: 02.06.2012
Сообщений: 1,424
Записей в блоге: 12
18.02.2015, 14:49  [ТС]
Цитата Сообщение от BRcr Посмотреть сообщение
Я чуть печенькой не подавился, что ж ты делаешь-то?! Корни из квадратов...
2ое слагаемое - разность по другой координате равно нулю, так зачем же писать?
Вы бы хотели что бы я записал так:https://www.cyberforum.ru/cgi-bin/latex.cgi?\sqrt{(x-Left)^2+(y-y)^2}?
А вам не кажется что это равносильно https://www.cyberforum.ru/cgi-bin/latex.cgi?\sqrt{(x-Left)^2}?

Добавлено через 1 минуту
Цитата Сообщение от BRcr Посмотреть сообщение
Вычисление расстояния между точкой и прямой/лучом/отрезком
А я же четко писал
Цитата Сообщение от ivan.-94 Посмотреть сообщение
Расстояние от точки (Left;y) до точки (x;y)
0
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
 Аватар для volvo
33452 / 21552 / 8248
Регистрация: 22.10.2011
Сообщений: 37,005
Записей в блоге: 12
18.02.2015, 14:50
Цитата Сообщение от ivan.-94 Посмотреть сообщение
А вам не кажется что это равносильно
Модуль? Не, не слышал про модули, лучше корень из квадрата использовать, угу...
0
 Аватар для BRcr
4043 / 2333 / 292
Регистрация: 03.02.2011
Сообщений: 5,066
Записей в блоге: 10
18.02.2015, 14:52
Вообще-то, нам кажется, что sqrt( pow( x - y, 2 ) ) и fabs( x - y ) - равносильно. По результату.
Сдается мне, кто-то жестко заработался.
0
Я Фоюмчанин ? дааааа)
 Аватар для ivan.-94
213 / 204 / 23
Регистрация: 02.06.2012
Сообщений: 1,424
Записей в блоге: 12
18.02.2015, 14:53  [ТС]
kzru_hunter, спасибо, можете чуток пояснить
fabs(A*Mx+B*My+C)/sqrt(A*A+B*B);
Что тут А,В,С. относительно того что Width = Height = (просто )a
0
18.02.2015, 14:54

Не по теме:

Цитата Сообщение от ivan.-94 Посмотреть сообщение
А я же четко писал
А, ну ладно. Простите дяденька засранца.:cry: Пойду потихоньку...

0
Я Фоюмчанин ? дааааа)
 Аватар для ivan.-94
213 / 204 / 23
Регистрация: 02.06.2012
Сообщений: 1,424
Записей в блоге: 12
18.02.2015, 14:58  [ТС]
Вот вы навалились на меня:
Формула вычисления расстояния между двумя точками https://www.cyberforum.ru/cgi-bin/latex.cgi?A({x}_{a},{y}_{a}) и https://www.cyberforum.ru/cgi-bin/latex.cgi?B({x}_{b},{y}_{b}) на плоскости:
https://www.cyberforum.ru/cgi-bin/latex.cgi?AB = \sqrt{({x}_{b}-{x}_{a})^2+({y}_{b}-{y}_{a})^2}
Давай те закроем этот вопрос, да можно лучше, но сделал как сделал - смысл то не в этом.
Спасибо, за замечание. В следующий раз учту
0
 Аватар для kzru_hunter
1124 / 795 / 101
Регистрация: 01.02.2011
Сообщений: 1,887
Записей в блоге: 1
18.02.2015, 15:04
ivan.-94 забудь ты про своё расстояние между двумя точками и меньше авазарта слушай.

Упростил код немного. Использовал следующие материалы: http://www.math.by/geometry/eqline.html и http://ru.onlinemschool.com/ma... y/p_line1/
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
#include <vcl.h>
#include <math.h>
#pragma hdrstop
 
#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
 
float DistanceFromPointToLine(int Mx, int My, int X1, int Y1, int X2, int Y2);
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
        : TForm(Owner)
{
 
}
//---------------------------------------------------------------------------
 
float DistanceFromPointToLine(int Mx, int My, int X1, int Y1, int X2, int Y2) // Mx и My - координаты точки, а X1,Y1,X2,Y2 - координаты двух точек, образующих линию
{
        float A = Y1-Y2;
        float B = X2-X1;
        float C = X1*Y2-X2*Y1;
        return fabs(A*Mx+B*My+C)/sqrt(A*A+B*B);
}
 
void DrawBlack(TImage *image)
{
        int W = image->Width;
        int H = image->Height;
 
        image->Canvas->Pen->Color = clBlack;
        image->Canvas->Pen->Width = 3;
        image->Canvas->Rectangle(0,0,W,H);
        image->Canvas->MoveTo(0,0);
        image->Canvas->LineTo(W,H);
        image->Canvas->MoveTo(0,H);
        image->Canvas->LineTo(W,0);
}
 
//---------------------------------------------------------------------------
void __fastcall TForm1::FormCreate(TObject *Sender)
{
        DrawBlack(Image1);
}
//---------------------------------------------------------------------------
 
void __fastcall TForm1::Image1MouseMove(TObject *Sender, TShiftState Shift,
      int X, int Y)
{
        float W = Image1->Width;
        float H = Image1->Height;
 
        float fDist[6];
 
        // уравнение прямой A*x+B*y+C=0
        // уравнение прямой по двум точкам: (y1-y2)*x+(x2-x1)*y+(x1*y2-x2*y1)=0
 
        fDist[0] = DistanceFromPointToLine(X,Y, 0,H, W,0); // (наклон спички вправо)
        fDist[1] = DistanceFromPointToLine(X,Y, 0,0, W,H); // (наклон спички влево)
        fDist[2] = DistanceFromPointToLine(X,Y, 0,0, 0,H); // (спичка слева)
        fDist[3] = DistanceFromPointToLine(X,Y, W,0, W,H ); // (спичка справа)
        fDist[4] = DistanceFromPointToLine(X,Y, 0,0, W,0); // (спичка сверху)
        fDist[5] = DistanceFromPointToLine(X,Y, 0,H, W,H); // (спичка снизу)
 
        float fDistMin = fDist[0];
        int idxMin = 0;
 
        for ( int i = 1; i < 6; i++ )
        {
                if (fDist[i] < fDistMin)
                {
                        fDistMin = fDist[i];
                        idxMin = i;
                }
        }
 
        DrawBlack(Image1);
 
        Image1->Canvas->Pen->Width = 5;
        Image1->Canvas->Pen->Color = clRed;
 
        if ( idxMin == 0 ) // наклон спички вправо
        {
                Image1->Canvas->MoveTo(0,H);
                Image1->Canvas->LineTo(W,0);
        }
        else if ( idxMin == 1 ) // наклон спички влево
        {
                Image1->Canvas->MoveTo(0,0);
                Image1->Canvas->LineTo(W,H);
        }
        else if ( idxMin == 2 ) // спичка слева
        {
                Image1->Canvas->MoveTo(0,0);
                Image1->Canvas->LineTo(0,H);
        }
        else if ( idxMin == 3 ) // спичка справа
        {
                Image1->Canvas->MoveTo(W,0);
                Image1->Canvas->LineTo(W,H);
        }
        else if ( idxMin == 4 ) // спичка сверху
        {
                Image1->Canvas->MoveTo(0,0);
                Image1->Canvas->LineTo(W,0);
        }
        else if ( idxMin == 5 ) // спичка снизу
        {
                Image1->Canvas->MoveTo(0,H);
                Image1->Canvas->LineTo(W,H);
        }
}
//---------------------------------------------------------------------------
1
Я Фоюмчанин ? дааааа)
 Аватар для ivan.-94
213 / 204 / 23
Регистрация: 02.06.2012
Сообщений: 1,424
Записей в блоге: 12
18.02.2015, 18:38  [ТС]
kzru_hunter, Спасибо и отдельное спасибо за то, что предоставили материал

Добавлено через 3 часа 19 минут
У меня сейчас проблема в том, что при перемещении спички - процессор подскакивает 20%-50%
0
 Аватар для kzru_hunter
1124 / 795 / 101
Регистрация: 01.02.2011
Сообщений: 1,887
Записей в блоге: 1
18.02.2015, 18:54
Цитата Сообщение от ivan.-94 Посмотреть сообщение
У меня сейчас проблема в том, что при перемещении спички - процессор подскакивает 20%-50%
Тут уже другой вопрос и нужно оптимизировать с графикой. Как вариант, делать прорисовку через каждые несколько мс.
0
Почетный модератор
Эксперт С++
 Аватар для SatanaXIII
5851 / 2862 / 392
Регистрация: 01.11.2011
Сообщений: 6,906
19.02.2015, 08:22
ivan.-94,
1) Включите двойную буферизацию формы.
2) Отрисовывайте все в битмап, а потом прорисовывайте его в имейдж.
0
Эксперт С++
 Аватар для Avazart
8489 / 6156 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
19.02.2015, 14:32
Цитата Сообщение от SatanaXIII Посмотреть сообщение
2) Отрисовывайте все в битмап, а потом прорисовывайте его в имейдж.
Для этого есть PaintBox, но думаю не поможет ибо скорее всего тупит из-за не оптимального поиска.
0
Я Фоюмчанин ? дааааа)
 Аватар для ivan.-94
213 / 204 / 23
Регистрация: 02.06.2012
Сообщений: 1,424
Записей в блоге: 12
19.02.2015, 15:13  [ТС]
Цитата Сообщение от kzru_hunter Посмотреть сообщение
Как вариант, делать прорисовку через каждые несколько мс.
У меня перерисовка идет только при каки то изменениях.
Цитата Сообщение от Avazart Посмотреть сообщение
ибо скорее всего тупит из-за не оптимального поиска.
Не, тормозит при перерисовке:
у меня в функции дров для каждой спички выполняется
C++
1
2
3
MatchesList[i]->BitmapMatches = new TPNGGraphic();
                MatchesList[i]->BitmapMatches->Assign(BitmapMatches[BOTTOM]);
                Canvas->StretchDraw(Rect(left+2, bottom-d, right-2, bottom+d), MatchesList[i]->BitmapMatches);
Плюс не мало важна сама прорисовка поля:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
Canvas->Brush->Color    = clWhite;
    Canvas->Pen->Color      = clSkyBlue;
    Canvas->Pen->Width      = 1;
    float dx, dy;
    dy = (float)Height / N;
    dx = (float)Width / N;
    int i = 0, ID = 0;
    SquareList.clear();
    for (float y = 0; y < Height; y+=dy) {
        for (float x = 0; x < Width; x+=dx) {
            Canvas->Rectangle(x, y , x+dx, y+dy);
            this->SquareList.push_back(new Square(x, y, x+dx, y+dy, ID));
            ID+=1;
        }
    }
    float d = 0.05*dx;
0
Я Фоюмчанин ? дааааа)
 Аватар для ivan.-94
213 / 204 / 23
Регистрация: 02.06.2012
Сообщений: 1,424
Записей в блоге: 12
19.02.2015, 15:19  [ТС]
В общем у меня массив с 6 изображениями, я при прорисовке в зависимости от статуса спички(положения) задаю ей какое то изображение, отрисовываю и освобождаю объект, поэтому с памятью проблем нет - она не растет.
Но когда я беру спичку и начинаю двигать проц подлетает.
Вот пока, что то упростил сократил, сделал меньше перерисовок - пошустрее, но мне не нравится..
Вложения
Тип файла: rar Release.rar (2.12 Мб, 4 просмотров)
0
Эксперт С++
 Аватар для Avazart
8489 / 6156 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
19.02.2015, 15:36
На кой тебе StretchDraw() ?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
19.02.2015, 15:36

Структура приложения
Меня уже давно интересует как правильно организовать структуру приложения(набор каталогов, файлов etc). Куда класть сторонние библиотеки и...

Структура приложения
Коллеги, помогите, плз, советом. Создаю приложение: Есть консольный класс Client: В общих чертах программа делает следующее (Для...

Структура приложения
Подскажите, поделитесь опытом. Как правильно начать писать приложение, как предварительно определить структуру будущего приложения, чтобы в...

Структура приложения
Здравтсвуйте! Приложение постраничное с использованием React на некоторых страницах. Подскажите, как удобнее в плане расширяемости...

Структура приложения ООП
Добрый день! Погружаюсь в изучение ООП в PHP! Не могу нигде нарыть информацию о структуре приложений. Допустим есть задача - создать...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
40
Ответ Создать тему
Новые блоги и статьи
сукцессия 14. Обновленная схема модели
anaschu 28.06.2026
ГЛОБАЛЬНАЯ ОПИСАТЕЛЬНАЯ СПЕЦИФИКАЦИЯ ЭКОСИСТЕМНОЙ МОДЕЛИ «SOIL CHEMISTRY & MYCORRHIZA 2. 0» https:/ / ibb. co/ NnkGpfMd Представленная интегрированная схема описывает непрерывную нелинейную. . .
сукцессия 13. Питон модель трехзонного мицелия, пока что в основном арбускулярного
anaschu 28.06.2026
## Разработка агентной модели микоризной сукцессии: от выявления артефактов к созданию комплексной системы ### Аннотация Представлено исследование по разработке агентной модели микоризной. . .
сукцессия 12. краткий список проверок модели перед запуском.
anaschu 27.06.2026
Скрытые отказы в моделях систем динамики (SD-models) экологических систем: два случая из практики Контекст Разбирался прототип модели систем динамики (SD-модели) микоризной сукцессии: пять. . .
Сукцессия 11. Проверка орудий перед войной: разработка через тестирование
anaschu 27.06.2026
Как не дать модели соврать самой себе: проверки для симуляции микоризной сукцессии Введение Когда вы строите математическую модель живой системы — грибов, растений, почвы — главная опасность. . .
10 сукцессия. Питон код войны грибов и растений
anaschu 27.06.2026
import numpy as np class PlantAgent: def __init__(self, name, strategy, initial_biomass): self. name = name self. strategy = strategy # "greedy" (широколиственные) или. . .
сукцессия 9. Математика подлости: как растения предали грибных друзей
anaschu 27.06.2026
Статья 2. Глобальная фосфорная война: эволюционно-экономические механизмы распределения биомов Земли Введение: Экологический рынок как игра с нулевой суммой Традиционная экология долгое время. . .
сукцессия 8. Как я спорил с ИИ, которые - агенты растений и ненавистники грибов!
anaschu 27.06.2026
Статья 1. Хроники грибного восстания: как Сократов диалог разрушил академические догмы ИИ Введение: Синдром «цифрового учебника» Современные большие языковые модели (LLM) обладают колоссальным. . .
Главный вопрос моделирования сукцессии
anaschu 27.06.2026
главный вопрос. Если эктомикориза лучше добывает недоступный фосфор. И ее масса максимальна из всех. А широколиственный лес тоже имеет самую крутую биомассу. То почему не возникло их симбиоза? Это. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru