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

Wyszukiwanie drogi na mapie 2D

Ostatnio zmodyfikowano 2014-06-19 10:19
Autor Wiadomość
stevy
Temat założony przez niniejszego użytkownika
Wyszukiwanie drogi na mapie 2D
» 2014-04-12 20:36:44
Witam, chciałbym Was prosić o pomoc w odnalezieniu, lub poradach w napisaniu kodu na inteligentnego przeciwnika w okienku;) mówiąc inteligentnego mam na myśli twór potrafiący omijać przeszkody, podczas szukania najkrótszej drogi do celu. Jakieś pomysły? Od razu mówię, że szukałem, żeby nie było burzy.
P-108074
colorgreen19
» 2014-04-12 20:39:03
powiedz najpierw w jakiej grze. 3d, 2d od gory, czy 2d od boku(zwykla platformowka) ? co innego jest w 3d gdzie musisz omijac obiekty, co innego w 2d gdzie mozesz wykorzystawac np. mape kafelkowa (jesli chodzi o samo szukanie drogi)
P-108075
stevy
Temat założony przez niniejszego użytkownika
» 2014-04-12 20:43:46
Chodzi o 2d od góry. Podkreślam jednak że nie chcę kodu, ale wskazówki konieczne do napisania go.
P-108076
f651144
» 2014-04-12 21:44:06
Jeżeli to takie 2d z kafelkami (coś jak szachownica), to jet to proste szukanie drogi w grafie.
P-108079
stevy
Temat założony przez niniejszego użytkownika
» 2014-04-12 22:14:20
mógłbyś bardziej rozwinąć swoją myśl?
P-108082
ison
» 2014-04-12 22:24:25
BFS - http://pl.wikipedia.org/wiki​/Przeszukiwanie_wszerz
DFS - http://pl.wikipedia.org/wiki​/Przeszukiwanie_w_g%C5%82%C4%85b
Każdy kafel to wierzchołek połączony z sąsiadującymi kaflami-wierzchołkami.
Jeśli masz dużo otwartej przestrzeni to możesz zrobić DFS i wrzucać wierzchołki bliżej celu w pierwszej kolejności.
P-108084
stevy
Temat założony przez niniejszego użytkownika
» 2014-04-13 00:21:49
dzięki wielkie, będę miał nad czym siedzieć
P-108092
stevy
Temat założony przez niniejszego użytkownika
» 2014-06-15 16:06:20
Pomyślałem, że wyślę kod jeśli ktoś jeszcze będzie go potrzebować.

edit: nie ma to co prawda znaczenia, ale zamieniłem jakoś wszystkie 0 na "puste" więc proszę nie chejtować
 
C/C++
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
#include<Windows.h>
#include<conio.h>
#define rozmy 20
#define rozmx 60

enum POLA { puste, sciana, gracz, wyjscie };

struct POZYCJE {
    int wspx;
    int wspy;
};

int gra[ rozmy ][ rozmx ];
int mysl[ rozmy ][ rozmx ];
int bylem[ rozmy ][ rozmx ];

POZYCJE pion;
POZYCJE cel;

bool koniec_szukania;
bool wygrana;
int ilosc_ruchow;

static HANDLE uch = GetStdHandle( STD_OUTPUT_HANDLE );

void wypelnienie( void );
void rysowanie( void );
bool myslenie( int x, int y );
void ruch( void );
int naj_wart( int x, int y );
bool droga( void );
void koloruj_obszar_zasiegu_mysli( void );

///////////***********************/////////////


int main()
{
    COORD pos;
   
    SMALL_RECT rozmiar_konsoli = { 0, 0, 70, 26 };
    COORD rozmiar_bufora;
    rozmiar_bufora.X = 71;
    rozmiar_bufora.Y = 27;
    SetConsoleWindowInfo( uch, TRUE, & rozmiar_konsoli );
    SetConsoleScreenBufferSize( uch, rozmiar_bufora );
   
   
    /*************/ /*************/ /*************/ /*************/
   
    bool do_wyjscia = false;
    int i, j;
    int pozX, pozY;
    bool czy_droga_istnieje;
   
   
    srand( time( NULL ) );
   
   
    /*************/ /*************/ /*************/ /*************/
   
    for(;; ) {
        wypelnienie();
        rysowanie();
       
       
        pozX = pion.wspx;
        pozY = pion.wspy;
       
       
        /*************/ /*************/ /*************/ /*************/
       
        czy_droga_istnieje = myslenie( pozX, pozY );
       
        pos.X = 0;
        pos.Y = 0;
        SetConsoleCursorPosition( uch, pos );
        for( i = puste; i < rozmy; i++ )
        for( j = puste; j < rozmx; j++ )
        if( bylem[ i ][ j ] > 0 && gra[ i ][ j ] == puste ) {
            pos.X = j;
            pos.Y = i;
            SetConsoleCursorPosition( uch, pos );
            printf( "*" ); }
       
       
        /**************/ /***************/ /*************/ /*************/
       
       
        if( czy_droga_istnieje == true )
        for(;; )
        {
           
           
            ruch();
           
            if( wygrana == true )
                 break;
           
           
           
        }
       
        else {
            koloruj_obszar_zasiegu_mysli();
            pos.Y = rozmy;
            pos.X = 0;
            SetConsoleCursorPosition( uch, pos );
            printf( "droga nie istnieje..." );
           
            _getch(); }
       
       
       
       
       
    }
   
   
   
    return 0;
}

/////////////////////////////////////////////////////////////////////////

void wypelnienie()
{
    int i, j, ilosc_przeszkod = puste, X, Y;
   
   
   
    wygrana = false;
    ilosc_ruchow = 0;
    for( i = puste; i < rozmy; i++ )
    for( j = puste; j < rozmx; j++ ) {
        gra[ i ][ j ] = puste;
        mysl[ i ][ j ] = puste;
        bylem[ i ][ j ] = puste; }
   
   
   
   
   
    for( i = puste; i < rozmy; i++ )
    for( j = puste; j < rozmx; j++ )
    if( i == puste || j == puste || j == rozmx - 1 || i == rozmy - 1 ) {
        gra[ i ][ j ] = sciana;
        mysl[ i ][ j ] =- 1; }
   
   
   
   
    while( ilosc_przeszkod < rozmy * rozmx / 4 ) {
       
        X = 1 + rand() %( rozmx - 2 );
        Y = 1 + rand() %( rozmy - 2 );
       
        if( gra[ Y ][ X ] == puste ) {
            gra[ Y ][ X ] = sciana;
            mysl[ Y ][ X ] =- 1;
            ilosc_przeszkod++; }
    }
   
   
   
   
   
   
   
    pion.wspx = 1 + rand() %( rozmx - 2 );
    pion.wspy = 1 + rand() %( rozmy - 2 );
   
   
    gra[ pion.wspy ][ pion.wspx ] = gracz;
   
   
   
   
    for(;; ) {
       
        cel.wspx = 1 + rand() %( rozmx - 2 );
        cel.wspy = 1 + rand() %( rozmy - 2 );
       
        if( cel.wspx != pion.wspx && cel.wspy != pion.wspy ) {
            gra[ cel.wspy ][ cel.wspx ] = wyjscie;
            break; }
    }
   
   
   
   
   
   
    mysl[ cel.wspy ][ cel.wspx ] =( rozmx - 1 ) *( rozmy - 1 );
    mysl[ pion.wspy ][ pion.wspx ] =-( rozmx - 1 ) *( rozmy - 1 ) / 10;
}

/////////////////////////////////////////////////////////////////////////

void rysowanie()
{
   
   
    COORD pos;
    pos.X = 0;
    pos.Y = 0;
    SetConsoleCursorPosition( uch, pos );
   
    int i, j;
    for( i = puste; i < rozmy; i++ )
    for( j = puste; j < rozmx; j++ ) {
       
        if( gra[ i ][ j ] == puste )
             printf( " " );
       
        if( gra[ i ][ j ] == sciana )
             printf( "%c", 176 );
       
        if( gra[ i ][ j ] == gracz )
             printf( "%c", 4 );
       
        if( gra[ i ][ j ] == wyjscie )
             printf( "%c", 219 );
       
        if( j + 1 == rozmx )
             printf( "\n" );
       
    }
   
   
   
    printf( "RUCHY: %d             \n", ilosc_ruchow );
    printf( "*-oznaczona jest optymalna droga, znaleziona przez program. Jesli nie\n" );
    printf( "bedzie drogi, program zatrzyma sie i pokaze kolorami, ze droga\n" );
    printf( "nie istnieje (czerwony-pola w zasiegu ruchu pionka, niebieski-poza\n" );
    printf( "zasiegiem). Nastepnie program czeka na klikniecie klawisza. Jezeli \n" );
    printf( "znajdzie droge, to sam ja przejdzie idac trasa zgodna z gwiazdkami." );
}

/////////////////////////////////////////////////////////////////////////

bool myslenie( int x, int y )
{
   
    int i, j, k = 0;
   
   
    int sX, sY;
   
    bool czy_droga_istnieje;
   
   
    if( gra[ y - 1 ][ x ] == puste )
         mysl[ y - 1 ][ x ] = 1;
   
    if( gra[ y + 1 ][ x ] == puste )
         mysl[ y + 1 ][ x ] = 1;
   
    if( gra[ y ][ x - 1 ] == puste )
         mysl[ y ][ x - 1 ] = 1;
   
    if( gra[ y ][ x + 1 ] == puste )
         mysl[ y ][ x + 1 ] = 1;
   
   
   
   
    for( k = 0; k <( rozmx - 1 ) *( rozmy - 1 ) / 4; k++ )
    {
       
       
       
       
       
        for( i = 1; i < rozmy - 1; i++ ) {
            for( j = 1; j < rozmx - 1; j++ )
            {
               
                if( mysl[ i ][ j ] == puste )
                {
                    sX = j;
                    sY = i;
                   
                    mysl[ i ][ j ] = naj_wart( sX, sY );
                }
               
                if( koniec_szukania == true )
                     break;
               
            }
           
           
            if( koniec_szukania == true )
                 break;
           
        }
       
        if( koniec_szukania == true )
             break;
       
    }
   
   
   
    /**************************************************************/
   
    czy_droga_istnieje = droga();
   
   
   
    if( czy_droga_istnieje == true )
         return true;
   
    else
         return false;
   
}

/////////////////////////////////////////////////////////////////////////

int naj_wart( int x, int y )
{
    int i, j;
    int najmniejsza = 0;
   
    if( mysl[ y ][ x - 1 ] > 0 && mysl[ y ][ x - 1 ] <( rozmx - 1 ) *( rozmy - 1 ) / 2 ) {
       
       
        najmniejsza = mysl[ y ][ x - 1 ];
       
       
        if( mysl[ y ][ x + 1 ] < najmniejsza && mysl[ y ][ x + 1 ] > 0 )
             najmniejsza = mysl[ y ][ x + 1 ];
       
       
       
        if( mysl[ y - 1 ][ x ] < najmniejsza && mysl[ y - 1 ][ x ] > 0 )
             najmniejsza = mysl[ y - 1 ][ x ];
       
        if( mysl[ y + 1 ][ x ] < najmniejsza && mysl[ y + 1 ][ x ] > 0 )
             najmniejsza = mysl[ y + 1 ][ x ];
       
    }
   
    /***********************************************/
   
   
   
    else if( mysl[ y ][ x + 1 ] > 0 && mysl[ y ][ x + 1 ] <( rozmx - 1 ) *( rozmy - 1 ) / 2 ) {
       
        najmniejsza = mysl[ y ][ x + 1 ];
       
        if( mysl[ y ][ x - 1 ] < najmniejsza && mysl[ y ][ x - 1 ] > 0 )
             najmniejsza = mysl[ y ][ x - 1 ];
       
        if( mysl[ y - 1 ][ x ] < najmniejsza && mysl[ y - 1 ][ x ] > 0 )
             najmniejsza = mysl[ y - 1 ][ x ];
       
        if( mysl[ y + 1 ][ x ] < najmniejsza && mysl[ y + 1 ][ x ] > 0 )
             najmniejsza = mysl[ y + 1 ][ x ];
       
    }
   
    /************************************************/
   
   
    else if( mysl[ y - 1 ][ x ] > 0 && mysl[ y - 1 ][ x ] <( rozmx - 1 ) *( rozmy - 1 ) / 2 ) {
       
        najmniejsza = mysl[ y - 1 ][ x ];
       
        if( mysl[ y ][ x - 1 ] < najmniejsza && mysl[ y ][ x - 1 ] > 0 )
             najmniejsza = mysl[ y ][ x - 1 ];
       
        if( mysl[ y ][ x + 1 ] < najmniejsza && mysl[ y ][ x + 1 ] > 0 )
             najmniejsza = mysl[ y ][ x + 1 ];
       
        if( mysl[ y + 1 ][ x ] < najmniejsza && mysl[ y + 1 ][ x ] > 0 )
             najmniejsza = mysl[ y + 1 ][ x ];
       
    }
   
    /*************************************************/
   
    else if( mysl[ y + 1 ][ x ] > 0 && mysl[ y + 1 ][ x ] <( rozmx - 1 ) *( rozmy - 1 ) / 2 ) {
       
        najmniejsza = mysl[ y + 1 ][ x ];
       
        if( mysl[ y ][ x - 1 ] < najmniejsza && mysl[ y ][ x - 1 ] > 0 )
             najmniejsza = mysl[ y ][ x - 1 ];
       
        if( mysl[ y ][ x + 1 ] < najmniejsza && mysl[ y ][ x + 1 ] > 0 )
             najmniejsza = mysl[ y ][ x + 1 ];
       
        if( mysl[ y - 1 ][ x ] < najmniejsza && mysl[ y - 1 ][ x ] > 0 )
             najmniejsza = mysl[ y - 1 ][ x ];
       
    }
   
    /*************************************************/
   
   
   
    if(( y == cel.wspy - 1 && x == cel.wspx && mysl[ y ][ x ] != 0 ) ||( y == cel.wspy + 1 && x == cel.wspx && mysl[ y ][ x ] != 0 ) ||
    ( y == cel.wspy && x == cel.wspx - 1 && mysl[ y ][ x ] != 0 ) ||( y == cel.wspy && x == cel.wspx + 1 && mysl[ y ][ x ] != 0 ) )
         koniec_szukania = true;
   
   
   
   
    if( najmniejsza > 0 )
         return najmniejsza + 1;
   
   
    else
         return 0;
   
}

/////////////////////////////////////////////////////////////////////////

bool droga()
{
    int i, j, k = 0;
    int x = cel.wspx;
    int y = cel.wspy;
    int X = x, Y = y;
    int najmniejsza = 0;
    bylem[ y ][ x ] =( rozmx - 1 ) *( rozmy - 1 );
   
   
   
    while( k <( rozmx - 1 ) *( rozmx - 1 ) / 5 )
    {
       
        k++;
       
       
        if( mysl[ y - 1 ][ x ] > 0 && bylem[ y - 1 ][ x ] == 0 ) {
           
           
            najmniejsza = mysl[ y - 1 ][ x ];
            X = x;
            Y = y;
            Y = y - 1;
           
           
           
            if( mysl[ y ][ x - 1 ] <=( najmniejsza - 1 ) && mysl[ y ][ x - 1 ] > 0 && bylem[ y ][ x - 1 ] == 0 ) {
                najmniejsza = mysl[ y ][ x - 1 ];
               
               
                X = x;
                Y = y;
                X = x - 1; }
           
            if( mysl[ y ][ x + 1 ] <=( najmniejsza - 1 ) && mysl[ y ][ x + 1 ] > 0 && bylem[ y ][ x + 1 ] == 0 ) {
                najmniejsza = mysl[ y ][ x + 1 ];
                X = x;
                Y = y;
                X = x + 1; }
           
            if( mysl[ y + 1 ][ x ] <=( najmniejsza - 1 ) && mysl[ y + 1 ][ x ] > 0 && bylem[ y + 1 ][ x ] == 0 ) {
                najmniejsza = mysl[ y + 1 ][ x ];
                Y = y;
                X = x;
                Y = y + 1; }
           
            x = X;
            y = Y;
            bylem[ y ][ x ] = najmniejsza;
        }
       
        /*************************************************/
       
       
        else if( mysl[ y + 1 ][ x ] > 0 && bylem[ y + 1 ][ x ] == 0 ) {
           
            najmniejsza = mysl[ y + 1 ][ x ];
            X = x;
            Y = y;
            Y = y + 1;
           
            if( mysl[ y ][ x - 1 ] <=( najmniejsza - 1 ) && mysl[ y ][ x - 1 ] > 0 && bylem[ y ][ x - 1 ] == 0 ) {
                najmniejsza = mysl[ y ][ x - 1 ];
                X = x;
                Y = y;
                X = x - 1; }
           
           
            if( mysl[ y ][ x + 1 ] <=( najmniejsza - 1 ) && mysl[ y ][ x + 1 ] > 0 && bylem[ y ][ x + 1 ] == 0 ) {
                najmniejsza = mysl[ y ][ x + 1 ];
                Y = y;
                X = x;
                X = x + 1; }
           
           
            if( mysl[ y - 1 ][ x ] <=( najmniejsza - 1 ) && mysl[ y - 1 ][ x ] > 0 && bylem[ y - 1 ][ x ] == 0 ) {
                najmniejsza = mysl[ y - 1 ][ x ];
                Y = y;
                X = x;
                Y = y - 1; }
           
           
            x = X;
            y = Y;
            bylem[ y ][ x ] = najmniejsza;
           
        }
       
       
        /***********************************************/
       
        else if( mysl[ y ][ x + 1 ] > 0 && bylem[ y ][ x + 1 ] == 0 ) {
           
            najmniejsza = mysl[ y ][ x + 1 ];
            X = x;
            Y = y;
            X = x + 1;
           
            if( mysl[ y ][ x - 1 ] <=( najmniejsza - 1 ) && mysl[ y ][ x - 1 ] > 0 && bylem[ y ][ x - 1 ] == 0 ) {
                najmniejsza = mysl[ y ][ x - 1 ];
                X = x;
                Y = y;
                X = x - 1; }
           
            if( mysl[ y - 1 ][ x ] <=( najmniejsza - 1 ) && mysl[ y - 1 ][ x ] > 0 && bylem[ y - 1 ][ x ] == 0 ) {
                najmniejsza = mysl[ y - 1 ][ x ];
                Y = y;
                X = x;
                Y = y - 1; }
           
            if( mysl[ y + 1 ][ x ] <=( najmniejsza - 1 ) && mysl[ y + 1 ][ x ] > 0 && bylem[ y + 1 ][ x ] == 0 ) {
                najmniejsza = mysl[ y + 1 ][ x ];
                Y = y;
                X = x;
                Y = y + 1; }
           
            x = X;
            y = Y;
            bylem[ y ][ x ] = najmniejsza;
        }
       
       
        /************************************************/
       
       
       
       
        else if( mysl[ y ][ x - 1 ] > 0 && bylem[ y ][ x - 1 ] == 0 ) {
           
            najmniejsza = mysl[ y ][ x - 1 ];
            X = x;
            Y = y;
            X = x - 1;
           
           
            if( mysl[ y ][ x + 1 ] <=( najmniejsza - 1 ) && mysl[ y ][ x + 1 ] > 0 && bylem[ y ][ x + 1 ] == 0 ) {
                najmniejsza = mysl[ y ][ x + 1 ];
                X = x;
                Y = y;
                X = x + 1; }
           
            if( mysl[ y - 1 ][ x ] <=( najmniejsza - 1 ) && mysl[ y - 1 ][ x ] > 0 && bylem[ y - 1 ][ x ] == 0 ) {
                najmniejsza = mysl[ y - 1 ][ x ];
                Y = y;
                X = x;
                Y = y - 1; }
           
            if( mysl[ y + 1 ][ x ] <=( najmniejsza - 1 ) && mysl[ y + 1 ][ x ] > 0 && bylem[ y + 1 ][ x ] == 0 ) {
                najmniejsza = mysl[ y + 1 ][ x ];
                Y = y;
                X = x;
                Y = y - 1; }
           
            x = X;
            y = Y;
            bylem[ y ][ x ] = najmniejsza;
           
        }
       
       
       
       
        else
             return false;
       
        if( najmniejsza == 1 )
             break;
       
    }
   
   
    if( najmniejsza == 1 )
         return true;
   
    else
         return false;
   
}

/////////////////////////////////////////////////////////////////////////

void ruch()
{
    COORD pos;
   
   
    if( gra[ cel.wspy ][ cel.wspx ] == gracz )
         wygrana = true;
   
   
    if( bylem[ pion.wspy ][ pion.wspx + 1 ] > bylem[ pion.wspy ][ pion.wspx ] )
    {
       
        pos.X = pion.wspx;
        pos.Y = pion.wspy;
        SetConsoleCursorPosition( uch, pos );
        printf( " " );
       
       
        gra[ pion.wspy ][ pion.wspx ] = puste;
       
        pion.wspx++;
       
        gra[ pion.wspy ][ pion.wspx ] = gracz;
       
        pos.X = pion.wspx;
        pos.Y = pion.wspy;
        SetConsoleCursorPosition( uch, pos );
        printf( "%c", 4 );
       
        ilosc_ruchow++;
       
    }
   
   
   
    /******************************************************************/
   
   
    else if( bylem[ pion.wspy ][ pion.wspx - 1 ] > bylem[ pion.wspy ][ pion.wspx ] )
    {
       
        pos.X = pion.wspx;
        pos.Y = pion.wspy;
        SetConsoleCursorPosition( uch, pos );
        printf( " " );
       
        gra[ pion.wspy ][ pion.wspx ] = puste;
       
        pion.wspx--;
       
        gra[ pion.wspy ][ pion.wspx ] = gracz;
       
        pos.X = pion.wspx;
        pos.Y = pion.wspy;
        SetConsoleCursorPosition( uch, pos );
        printf( "%c", 4 );
       
        ilosc_ruchow++;
       
       
    }
   
   
    /***********************************************************************/
   
    else if( bylem[ pion.wspy - 1 ][ pion.wspx ] > bylem[ pion.wspy ][ pion.wspx ] )
    {
       
        pos.X = pion.wspx;
        pos.Y = pion.wspy;
        SetConsoleCursorPosition( uch, pos );
        printf( " " );
       
        gra[ pion.wspy ][ pion.wspx ] = puste;
       
        pion.wspy--;
       
        gra[ pion.wspy ][ pion.wspx ] = gracz;
       
        pos.X = pion.wspx;
        pos.Y = pion.wspy;
        SetConsoleCursorPosition( uch, pos );
        printf( "%c", 4 );
       
        ilosc_ruchow++;
       
    }
   
    /************************************************************************/
   
    else if( bylem[ pion.wspy + 1 ][ pion.wspx ] > bylem[ pion.wspy ][ pion.wspx ] )
    {
       
        pos.X = pion.wspx;
        pos.Y = pion.wspy;
        SetConsoleCursorPosition( uch, pos );
        printf( " " );
       
        gra[ pion.wspy ][ pion.wspx ] = puste;
       
        pion.wspy++;
       
        gra[ pion.wspy ][ pion.wspx ] = gracz;
       
        pos.X = pion.wspx;
        pos.Y = pion.wspy;
        SetConsoleCursorPosition( uch, pos );
        printf( "%c", 4 );
       
        ilosc_ruchow++;
       
       
       
    }
   
   
    /****************************************************************************/
   
    Sleep( 50 );
   
    pos.Y = rozmy;
    pos.X = 0;
    SetConsoleCursorPosition( uch, pos );
    printf( "RUCHY: %d", ilosc_ruchow );
   
}

/////////////////////////////////////////////////////////////////////////

void koloruj_obszar_zasiegu_mysli()
{
   
    COORD pos;
   
    int i, j;
   
   
    for( i = 1; i < rozmy - 1; i++ )
         for( j = 1; j < rozmx - 1; j++ ) {
       
        if( gra[ i ][ j ] == wyjscie ) {
            pos.X = j;
            pos.Y = i;
            SetConsoleCursorPosition( uch, pos );
            SetConsoleTextAttribute( uch, BACKGROUND_BLUE | FOREGROUND_RED | FOREGROUND_GREEN | FOREGROUND_BLUE );
            printf( "%c", 219 ); }
       
        else if( mysl[ i ][ j ] == 0 ) {
            pos.X = j;
            pos.Y = i;
            SetConsoleCursorPosition( uch, pos );
            SetConsoleTextAttribute( uch, BACKGROUND_BLUE );
            printf( " " ); }
       
        else if( mysl[ i ][ j ] > 0 ) {
            pos.X = j;
            pos.Y = i;
            SetConsoleCursorPosition( uch, pos );
            SetConsoleTextAttribute( uch, BACKGROUND_RED );
            printf( " " ); }
       
        else if( gra[ i ][ j ] == gracz ) {
            pos.X = j;
            pos.Y = i;
            SetConsoleCursorPosition( uch, pos );
            SetConsoleTextAttribute( uch, BACKGROUND_RED | FOREGROUND_RED | FOREGROUND_GREEN | FOREGROUND_BLUE );
            printf( "%c", 4 ); }
    }
   
    SetConsoleTextAttribute( uch, FOREGROUND_RED | FOREGROUND_GREEN | FOREGROUND_BLUE );
}

////////////////////////////////////////////////////////////////////////////////////////
P-112111
« 1 » 2
  Strona 1 z 2 Następna strona