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

Allegro C++ Problem z funkcją wyświetlającą pionki dzieki tablicy dwuwymiarowej char.

Ostatnio zmodyfikowano 2012-02-04 21:55
Autor Wiadomość
squadron
Temat założony przez niniejszego użytkownika
Allegro C++ Problem z funkcją wyświetlającą pionki dzieki tablicy dwuwymiarowej char.
» 2012-02-04 20:06:50
Problem jest następujący Aplikacja wyświetla mi wszystkie pionki w jednym miejscu choć mam zadeklarowane wszystkie mozliwe pozycje na planszy mam gdzieś babola w kodzie proszę o pomoc w znalezieniu :)

Zadeklarowana Taka tablica na której opieram swoje szachy.
C/C++
char bierki[ 8 ][ 8 ] = {
    'w', 'h', 'l', 'k', 'b', 'l', 'h', 'w',
    'c', 'c', 'c', 'c', 'c', 'c', 'c', 'c',
    '0', '0', '0', '0', '0', '0', '0', '0',
    '0', '0', '0', '0', '0', '0', '0', '0',
    '0', '0', '0', '0', '0', '0', '0', '0',
    '0', '0', '0', '0', '0', '0', '0', '0',
    'B', 'B', 'B', 'B', 'B', 'B', 'B', 'B',
    'W', 'H', 'L', 'K', 'B', 'L', 'H', 'W', };
Następnie jest taka funkcja(jej kawałek dla zobrazowania) określająca po ID współrzędne x i y.
C/C++
int zID( int ID )
{
    //1 Linia
    if( ID = 0 ) x = 32, y = 32;
    else if( ID = 1 ) x = 125, y = 32;
    else if( ID = 2 ) x = 217, y = 32;
    else if( ID = 3 ) x = 310, y = 32;
    else if( ID = 4 ) x = 403, y = 32;
    else if( ID = 5 ) x = 496, y = 32;
    else if( ID = 6 ) x = 589, y = 32;
    else if( ID = 7 ) x = 682, y = 32;
    //...
}
i Funkcja wynikowa dzięki której wyświetlam sobie figury na planszy.
C/C++
void draw()

{
   
    clear_to_color( bufor, makecol( 255, 0, 255 ) );
   
    masked_blit( plansza, bufor, 0, 0, 0, 0, WIDTH, HEIGHT );
   
    for( int i = 0; i <= 7; ++i )
    {
        for( int j = 0; j <= 7; ++j )
        {
            ID = i * 10 + j;
            zID( ID );
            if( bierki i[ j ] == 'w' ) masked_blit( wiezab, bufor, 0, 0, x, y, 92, 92 ); // tu jest normalnie tablica 2 wymiarowa jakiś problem z dodaniem
            else if( bierki i[ j ] == 'h' ) masked_blit( hetman, bufor, 0, 0, x, y, 92, 92 );
            else if( bierki i[ j ] == 'l' ) masked_blit( goniec, bufor, 0, 0, x, y, 92, 92 );
           
        }
    }
   
   
    blit( bufor, screen, 0, 0, 0, 0, WIDTH, HEIGHT );
   
}
Zasada jest taka ze na podstawie tego co jest w tablicy char bierki program ma wyświetlić w odpowiednim miejscu odpowiednią figurę. [/i]
P-50139
kamillo121
» 2012-02-04 21:55:28
Pod koniec obiegu pętli okalającej wartość ID może przyjąć wartość ponad 70, chyba nie powiesz, że tyle razy użyłeś "else if "  w funkcji zID ?
Popatrz na warunek w tej funkcji(zID), zamiast sprawdzać przypisujesz ID wartość 0 więc się nie dziw, że cały czas wybiera pierwszą opcje.
Zajrzyj do kursu STC i zobacz jak się wstawia kod w postach !
P-50142
« 1 »
  Strona 1 z 1