Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

[C++] Ułożenie "klocków" ;)

Ostatnio zmodyfikowano 2011-03-28 22:18
Autor Wiadomość
SeaMonster131
Temat założony przez niniejszego użytkownika
[C++] Ułożenie "klocków" ;)
» 2011-03-28 20:32:45
Elo :) Kiedyś musi być ten 1. raz więc zabrałem się za napisanie Arkanoida ;)
I teraz mam problem z ułożeniem "klocków".. Mam dokładnie 32 klocki i chciałbym je umieścić w 4 rzędach po 8 klocków. Niestety.. coś nie bardzo mi to wychodzi... :D

C/C++
class Block
{
public:
    float x, y;
    //...
} bl[ il_block ];


for( int i = 0; i < il_block; i++ )
{
    //...
   
    if( i <= 7 )
    {
        bl[ i ].y = 50;
        if( i == 0 )
             bl[ i ].x = 0;
        else
             bl[ i ].x =( i * 100 );
       
        cout << "[" << i << "] :  " << bl[ i ].x << endl;
    }
   
    if( i > 7 && i <= 15 )
    {
        bl[ i ].y = 80;
        if( i == 8 )
             bl[ i ].x = 0;
        else
             bl[ i ].x =(( i / 10 ) * 100 );
        //tutaj nie wiem przez ile podzielic "i"?
       
        cout << "[" << i << "] :  " << bl[ i ].x << endl;
    }
   
    if( i > 15 && i <= 23 )
    {
        bl[ i ].y = 120;
        if( i == 16 )
             bl[ i ].x = 0;
        else
        //...
       
             cout << "[" << i << "] :  " << bl[ i ].x << endl;
       
    }
   
    if( i > 23 && i <= 31 )
    {
        bl[ i ].y = 150;
        if( i == 24 )
             bl[ i ].x = 0;
        else
        //...
    }
}

Mógłby mi ktoś pomóc? Bo jakoś nie moge sobie tego wyobrazić... :D
P-29897
malan
» 2011-03-28 20:56:48
C/C++
#include <iostream>

const int MAX_IN_ROW = 8;

int main()
{
    char brick = 'x';
    int countOfBricks = 32;
    int row = 1;
   
    for( int i = 0; i < countOfBricks; ++i )
    {
        if( i % MAX_IN_ROW == 0 )
        {
            if( row > 1 )
                 std::cout << std::endl;
           
            std::cout << '#' << row << " >> ";
           
            ++row;
        }
       
        std::cout << brick << ' ';
    }
}
Em, o to chodzi? ;)
P-29899
SeaMonster131
Temat założony przez niniejszego użytkownika
» 2011-03-28 21:03:01
Po skompilowaniu, tak o to chodzi :) Tylko że teraz to musze przerobić, zaraz napisze czy sie udało :)


#edit, jednak sie nie udało... Pokazują sie 2 klocki, jeden pod drugim:

C/C++
for( int i = 0; i < il_block; i++ )
{
    //...
   
    bl[ i ].y = 100;
    bl[ i ].x = 0;
   
    if( i % 8 == 0 )
    {
        if( row > 1 )
             bl[ i ].y += 30;
       
        row++;
    }
   
    bl[ i ].x += 100;
   
    cout << "X: " << bl[ i ].x << endl << "Y: " << bl[ i ].y << endl << endl;
}
P-29900
malan
» 2011-03-28 21:22:55
if( row > 1 )
 - to tylko kosmetyczna poprawka ;p. Usuń ten warunek (z mojego przykładu) i zobacz różnicę ;).
P-29902
SeaMonster131
Temat założony przez niniejszego użytkownika
» 2011-03-28 21:27:22
Heh, no faktycznie :) No nic, pokombinuje jeszcze, bo jak na razie to nic nie udało mi sie wymyślic :)
P-29904
malan
» 2011-03-28 21:34:07
Pamiętaj, że każdy kolejny klocek powinien mieć współrzędną x bądź y większą od swojego lewego sąsiada ;)
P-29906
SeaMonster131
Temat założony przez niniejszego użytkownika
» 2011-03-28 21:36:39
Tak, lecz co zrobić, gdy lewy sąsiad będzie ostatni w rzędzie? Współrzędna Y następnego klocka zwiększa się, lecz jaki dać warunek ze współrzędną X? :)
P-29907
malan
» 2011-03-28 21:40:29
Ten dziewiąty klocek jest wyświetlany na początku drugiego rzędu, prawda? ;)
P-29908
« 1 » 2
  Strona 1 z 2 Następna strona