Официальный сайт студ.городка НГТУ
Программирование и БД » [C++] Сапёр 

#1  30.04.11 21:59

[C++] Сапёр

Вопрос в следующем: пишу сапёра, не могу разобраться в простейшем)
Далее идет код заполнения TForm1 кнопками SpeedButton.

Код::

TLabel          *m_labels[9][9];
TSpeedButton    *m_button[9][9];
void __fastcall TForm1::NewGame(int q, int w)
{
    for(int i=0; i<z; i++)
                for(int j=0; j<x; j++)
                {
                    delete m_labels[i][j];
                    delete m_button[i][j];
                }
    Form1->ClientWidth=w*cW;
    Form1->ClientHeight=q*cH;
    for(int i=0; i<q; i++)
                for(int j=0; j<w; j++)
                {
                        m_labels[i][j]=new TLabel(Form1);
                        m_labels[i][j]->Parent=Form1;
                        m_labels[i][j]->Width=cW;
                        m_labels[i][j]->Height=cH;
                        m_labels[i][j]->AutoSize=false;
                        m_labels[i][j]->Left=j*cW;
                        m_labels[i][j]->Top=i*cH;
                        m_labels[i][j]->Caption=random(9);
                        m_labels[i][j]->Alignment=taCenter;

                        m_button[i][j]=new TSpeedButton(Form1);
                        m_button[i][j]->Parent=Form1;
                        m_button[i][j]->Width=cW;
                        m_button[i][j]->Height=cH;
                        m_button[i][j]->Left=j*cW;
                        m_button[i][j]->Top=i*cH;
                        m_button[i][j]->OnClick=SpeedButton1Click;
                        m_button[i][j]->OnMouseDown=BtnMouseDown;
                        m_button[i][j]->Tag=i*100+j;
                        

                }

}

Во-первых, интересует объявление этих кнопок:

Код::

TLabel          *m_labels[9][9];
TSpeedButton    *m_button[9][9];

Я не знаю как их объявить, чтобы можно было изменять сложность (изменять размер поля), то есть динамически объявить.
Ну или, если будут предложения по улучшения цикла, с радостью выслушаю)

Offline

#2  01.05.11 00:48

$up
Профиль

Re: [C++] Сапёр

Код: cpp:

TLabel** m_labels=new TLabel*[sizecol];
for(int i=0; i<sizecol; i++) m_labels[i]=new TLabel*[sizerow];

Исправлено $up (01.05.11 00:56)

Offline

#3  01.05.11 15:27

Re: [C++] Сапёр

исходники оригинального сапера от windows 2000 валяются года с 2004 в интернетах.

Offline

#4  14.05.11 13:28

Re: [C++] Сапёр

не, самому над написать. Тут совета спрашивал. В итоге сделал так:

Код::

vector< vector<TLabel*> > m_labels;
vector< vector<TSpeedButton*> > m_btns;

//удаляем ранее выделенную память
for( int i = 0; i < m_labels.size(); i++ )
    for( int j = 0; j < m_labels.size(); j++ )
        if( m_labels[i][j] ) delete m_labels[i][j];
m_labels.clear();
//тоже с кнопками


//выделяем память нового размера
m_labels.resize( q );
for( DWORD i = 0; i < m_labels.size(); i++ )
    m_labels[i].resize( w, NULL );

Offline

#5  14.05.11 13:29

Re: [C++] Сапёр

лэйблы у меня просто для проверки стоят. Потом уберу

Offline

#6  05.06.11 18:50

Re: [C++] Сапёр

Протестируйте пожалуйста:
magnet:?xt=urn:tree:tiger:IYRXKZTYW4376 … n=Sap2.rar

Единственное, что хочу потом доделать, так это как в сапёре на винде обработка одновременного нажатия правой и левой кнопкой мыши

Исправлено Lunat1k (05.06.11 18:51)

Offline

Программирование и БД » [C++] Сапёр 

ФутЕр:)

© Hostel Web Group, 2002-2025.   Сообщить об ошибке

Сгенерировано за 0.149 сек.
Выполнено 11 запросов.