Strona 1 z 1
wyswietlenie 3x3
: 17 sty 2010, o 11:14
autor: pool
Witam, poniższy kod generuje 9 pól które są wyświetlone w jednej linii, jak wyświetlić je w 3 kolumnach po 3 (3x3)??
Kod: Zaznacz cały
for (k=0; k<9; k++) {
obrazki[k] = new SpecObraz(this);
obrazki[k]->Parent = this;
obrazki[k]->Left = 300 + k*80;
obrazki[k]->Top = 200;
obrazki[k]->Width = 60;
obrazki[k]->Height = 60;
obrazki[k]->Visible = true;
obrazki[k]->Stretch = true;
obrazki[k]->Picture->LoadFromFile("puste.bmp");
obrazki[k]->OnClick = Gracz;
for (i=0; i<3; i++)
for (j=0; j<3; j++)
if (cyfry[i][j] == k+1) {
obrazki[k]->i = i;
obrazki[k]->j = j;
}
}
}
wyswietlenie 3x3
: 17 sty 2010, o 11:32
autor: infty
Może tak?
Pętlę:
rozbijemy na:
Kod: Zaznacz cały
for(k=0; k<3; k++){
for(k'=0; k'<3; k'++){
obrazki[k*3+k']=...
}
a tu wstawić łamanie wiersza
}
wyswietlenie 3x3
: 17 sty 2010, o 12:16
autor: matshadow
nie można nazwać zmiennej k'. Zmień sobie k' np. na j
wyswietlenie 3x3
: 17 sty 2010, o 14:34
autor: pool
cos mi nie wychodzi:/ mogłbys mi to rozpisac? byłbym wdzieczny
wyswietlenie 3x3
: 17 sty 2010, o 16:19
autor: Delwing
Najprościej:
Kod: Zaznacz cały
for (k=0; k<9; k++) {
obrazki[k] = new SpecObraz(this);
obrazki[k]->Parent = this;
obrazki[k]->Left = 300 + k*80;
obrazki[k]->Top = 200;
obrazki[k]->Width = 60;
obrazki[k]->Height = 60;
obrazki[k]->Visible = true;
obrazki[k]->Stretch = true;
obrazki[k]->Picture->LoadFromFile("puste.bmp");
obrazki[k]->OnClick = Gracz;
for (i=0; i<3; i++) {
for (j=0; j<3; j++) {
if (cyfry[i][j] == k+1) {
obrazki[k]->i = i;
obrazki[k]->j = j;
}
}
}
if(k % 3 == 0) {
znak łamania linii
}
}
wyswietlenie 3x3
: 17 sty 2010, o 21:20
autor: pool
działa Ci to bo mi nie :/ ?
wyswietlenie 3x3
: 17 sty 2010, o 23:07
autor: kamillys
jedno pytanie: czy w miejscu "znak łamania linii" dałeś (nie określiłeś czy to język C, czy C++, czy co innego, przyjmuje że jest to C++) cout << endl, albo jakiś inny kod, który robi coś podobnego czy nie zmieniłeś tego i się dziwisz czemu nie działa?
wyswietlenie 3x3
: 18 sty 2010, o 17:01
autor: infty
Kopiuj-wklej:
Kod: Zaznacz cały
for (k=0; k<9; k++) {
obrazki[k] = new SpecObraz(this);
obrazki[k]->Parent = this;
obrazki[k]->Left = 300 + k*80;
obrazki[k]->Top = 200;
obrazki[k]->Width = 60;
obrazki[k]->Height = 60;
obrazki[k]->Visible = true;
obrazki[k]->Stretch = true;
obrazki[k]->Picture->LoadFromFile("puste.bmp");
obrazki[k]->OnClick = Gracz;
for (i=0; i<3; i++) {
for (j=0; j<3; j++) {
if (cyfry[i][j] == k+1) {
obrazki[k]->i = i;
obrazki[k]->j = j;
}
}
}
if(k % 2 == 0) {
cout << endl;
}
}
Modulo 2, ponieważ k jest od 0 do 9, więc po k=2,5,8 należy wstawić łamanie wiersza.
wyswietlenie 3x3
: 24 sty 2010, o 14:32
autor: pool
działa, wyświetla się 3x3 tylko właściwie nie tak to muszę zrobić
oto mój kod:
Kod: Zaznacz cały
void __fastcall TForm1::FormCreate(TObject *Sender)
{
int i,j,k;
// inicjalizacja generatora liczb losowych
randomize();
graWToku = 1; // gra w toku
liczbaRuchow = 0;
Komunikat->Visible = false;
// w tablicy same zera
for (i=0; i<3; i++)
for (j=0; j<3; j++)
kod[i][j] = 0;
// wypełnienie tablicy cyfry
cyfry[0][0] = 4;
cyfry[0][1] = 9;
cyfry[0][2] = 2;
cyfry[1][0] = 3;
cyfry[1][1] = 5;
cyfry[1][2] = 7;
cyfry[2][0] = 8;
cyfry[2][1] = 1;
cyfry[2][2] = 6;
// utworzenie 9 obrazków
for (k=0; k<9; k++) {
obrazki[k] = new SpecObraz(this);
obrazki[k]->Parent = this;
obrazki[k]->Left = 50 + k*60;
obrazki[k]->Top = 200;
obrazki[k]->Width = 30;
obrazki[k]->Height = 30;
obrazki[k]->Visible = true;
obrazki[k]->Stretch = true;
// załadowanie obrazka
obrazki[k]->Picture->LoadFromFile("puste.bmp");
// podanie nazwy metody wykonywanej po zajsciu
// zdarzenia OnClick
obrazki[k]->OnClick = Gracz;
// nadanie wartosci własnosciom i,j
for (i=0; i<3; i++)
for (j=0; j<3; j++)
if (cyfry[i][j] == k+1) {
obrazki[k]->i = i;
obrazki[k]->j = j;
}
}
// wyswietlenie cyfr w odpowiednim miejscu na formularzu
Label1->Left = 60;
Label1->Top = 165;
Label2->Left = 120;
Label2->Top = 165;
Label3->Left = 180;
Label3->Top = 165;
Label4->Left = 240;
Label4->Top = 165;
Label5->Left = 295;
Label5->Top = 165;
Label6->Left = 355;
Label6->Top = 165;
Label7->Left = 415;
Label7->Top = 165;
Label8->Left = 475;
Label8->Top = 165;
Label9->Left = 535;
Label9->Top = 165;
}
poprzednio wyświetlanie było : 1 2 3 4 5 6 7 8 9
gdy suma 3 X lub O była równa 15 dany symbol wygrywał
jak wyświetlić to w formie:
4 9 2
3 5 7
8 1 6
??-- 24 stycznia 2010, 16:12 --już po problemie:), post do kosza.