wyswietlenie 3x3

Awatar użytkownika
pool
Użytkownik
Użytkownik
Posty: 185
Rejestracja: 11 lis 2007, o 11:41
Płeć: Mężczyzna
Lokalizacja: z google :]
Podziękował: 78 razy

wyswietlenie 3x3

Post 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;
         }
   }

}
infty
Użytkownik
Użytkownik
Posty: 44
Rejestracja: 16 sty 2010, o 01:06
Płeć: Kobieta
Lokalizacja: Wrocław
Pomógł: 14 razy

wyswietlenie 3x3

Post autor: infty »

Może tak?
Pętlę:

Kod: Zaznacz cały

for(k=0; k<9; k++){
...
}
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
}
matshadow
Użytkownik
Użytkownik
Posty: 941
Rejestracja: 17 gru 2007, o 21:48
Płeć: Mężczyzna
Lokalizacja: Kingdom Hearts
Podziękował: 6 razy
Pomógł: 222 razy

wyswietlenie 3x3

Post autor: matshadow »

nie można nazwać zmiennej k'. Zmień sobie k' np. na j
Awatar użytkownika
pool
Użytkownik
Użytkownik
Posty: 185
Rejestracja: 11 lis 2007, o 11:41
Płeć: Mężczyzna
Lokalizacja: z google :]
Podziękował: 78 razy

wyswietlenie 3x3

Post autor: pool »

cos mi nie wychodzi:/ mogłbys mi to rozpisac? byłbym wdzieczny
Delwing
Użytkownik
Użytkownik
Posty: 2
Rejestracja: 17 sty 2010, o 15:55
Płeć: Mężczyzna
Lokalizacja: Warszawa
Pomógł: 2 razy

wyswietlenie 3x3

Post 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
	}
}
Awatar użytkownika
pool
Użytkownik
Użytkownik
Posty: 185
Rejestracja: 11 lis 2007, o 11:41
Płeć: Mężczyzna
Lokalizacja: z google :]
Podziękował: 78 razy

wyswietlenie 3x3

Post autor: pool »

działa Ci to bo mi nie :/ ?
kamillys
Użytkownik
Użytkownik
Posty: 10
Rejestracja: 5 lis 2009, o 20:52
Płeć: Mężczyzna
Lokalizacja: Warszawa
Podziękował: 2 razy

wyswietlenie 3x3

Post 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?
infty
Użytkownik
Użytkownik
Posty: 44
Rejestracja: 16 sty 2010, o 01:06
Płeć: Kobieta
Lokalizacja: Wrocław
Pomógł: 14 razy

wyswietlenie 3x3

Post 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.
Awatar użytkownika
pool
Użytkownik
Użytkownik
Posty: 185
Rejestracja: 11 lis 2007, o 11:41
Płeć: Mężczyzna
Lokalizacja: z google :]
Podziękował: 78 razy

wyswietlenie 3x3

Post 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.
ODPOWIEDZ