#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
#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
#6 05.06.11 18:50
Re: [C++] Сапёр
Протестируйте пожалуйста:
magnet:?xt=urn:tree:tiger:IYRXKZTYW4376 … n=Sap2.rar
Единственное, что хочу потом доделать, так это как в сапёре на винде обработка одновременного нажатия правой и левой кнопкой мыши
Исправлено Lunat1k (05.06.11 18:51)
Offline

