Statki w konsoli, brak odpowiedzi tego programu.

0

Cześć Wszystkim,
piszę zadanie do szkoły. Miałem w konsoli napisać grę statki. Gracz kontra komputer. Siedzę nad tym już jakiś czas. Ale zaczął pojawiać mi się problem. Mianowicie, odpalam program podaje imię, komputer wypełnia pola (losowo), losuje kto zaczyna. Jeżeli wypadnie na komputer, program się zawiesza i wyłącza. Jeżeli na gracza, to po wpisaniu pierwszych współrzędnych X i Y dzieje się podobnie. Nie wiem co może być przyczyną, sprawdzałem w Dev-C++ jak i w Code::Blocks.

Kod źródłowy: http://wklej.to/Yc5hK

Może Wy coś tam złego znajdziecie.

0

A potem Bóg stworzył Debugger

system("cls");

Tak nie należy robić (jak zamierzasz to uruchomić pod Linuxem?).

        if ( sKolor == "czarny" ){ iKolorek = 0; }
        else if ( sKolor == "niebieski" ){iKolorek = 1; }
        else if ( sKolor == "zielony" ) { iKolorek = 2; }
        else if ( sKolor == "blekitny" ) { iKolorek = 3; }
        else if ( sKolor == "czerwony" ) { iKolorek = 4; }
        else if ( sKolor == "purpurowy" ) { iKolorek = 5; }
        else if ( sKolor == "zolty" ) { iKolorek = 6; }
        else if ( sKolor == "bialy" ) { iKolorek = 7; }
        else if ( sKolor == "szary" ) { iKolorek = 8; }
        else if ( sKolor == "jniebieski" ) { iKolorek = 9; }
        else if ( sKolor == "jzielony" ) { iKolorek = 10; }
        else if ( sKolor == "jblekitny" ) { iKolorek = 11; }
        else if ( sKolor == "jczerwony" ) { iKolorek = 12; }
        else if ( sKolor == "jpurpurowy" ) { iKolorek = 13; }
        else if ( sKolor == "jzolty" ) { iKolorek = 14; }
        else if ( sKolor == "jbialy" ) { iKolorek = 15; }
        else { iKolorek = 7; }
                case 0: wyjscie = '.'; f_kolor("jbialy"); break;
                case 1: wyjscie = 'x'; f_kolor("jzielony"); break;
                case 2: wyjscie = 'x'; f_kolor("jpurpurowy"); break;
                case 3: wyjscie = 'x'; f_kolor("jniebieski"); break;
                case 4: wyjscie = 'x'; f_kolor("jzolty"); break;
                case 8: wyjscie = 'o'; f_kolor("jblekitny"); break;
                case 9: wyjscie = '+'; f_kolor("jczerwony"); break;

Tablice, tablice...

int f_sprawdzCzyMozeBycTutajStatek(int r, int x, int y, int z)
{
    if ( z == 0 ) // |
    {
        if( r > 1 && ( x > 10 || x < 1 ) )
            {
                return 0;
            }

            if( r > 1 && ( y > 10-r || y < 1 ) )
            {
                return 0;
            }
        for ( int i = 0; i <= r+1; i++ )
        {
            int c = (y-1);
            if ( tMapaG[c+i][x-1] >= 1 && tMapaG[c+i][x-1] <= 4 ){ return 0; }
            if ( tMapaG[c+i][x] >= 1 && tMapaG[c+i][x] <= 4 ){ return 0; }
            if ( x < 10 ) if ( tMapaG[c+i][x+1] >= 1 && tMapaG[c+i][x+1] <= 4 ){ return 0; }
        }
    }
    else
    { // -
        if( r > 1 && ( x > 10-r || x < 1 ) )
            {
                return 0;
            }

            if( r > 1 && ( y > 10 || y < 1 ) )
            {
                return 0;
            }
        for ( int i = 0; i <= r+1; i++ )
        {
            int c = (x-1);
            if ( tMapaG[y-1][c+i] >= 1 && tMapaG[y-1][c+i] <= 4 ){ return 0; }
            if ( tMapaG[y][c+i] >= 1 && tMapaG[y][c+i] <= 4 ){ return 0; }
            if ( y < 10 ) if ( tMapaG[y+1][c+i] >= 1 && tMapaG[y+1][c+i] <= 4 ){ return 0; }
        }
    }
    return 1;
}
(...)
int f_sprawdzCzyMozeBycTutajStatekKomputer(int r, int x, int y, int z)
{
    if ( z == 0 ) // |
    {
            if( r > 1 && ( x > 10 || x < 1 ) )
            {
                return 0;
            }

            if( r > 1 && ( y > 10-r || y < 1 ) )
            {
                return 0;
            }
        for ( int i = 0; i <= r+1; i++ )
        {
            int c = (y-1);
            if ( tMapaKU[c+i][x-1] >= 1 && tMapaKU[c+i][x-1] <= 4 ){ return 0; }
            if ( tMapaKU[c+i][x] >= 1 && tMapaKU[c+i][x] <= 4 ){ return 0; }
            if ( y < 10 ) if ( tMapaKU[c+i][x+1] >= 1 && tMapaKU[c+i][x+1] <= 4 ){ return 0; }
        }
    }
    else
    { // -
           if( r > 1 && ( x > 10-r || x < 1 ) )
            {
                return 0;
            }

            if( r > 1 && ( y > 10 || y < 1 ) )
            {
                return 0;
            }
        for ( int i = 0; i <= r+1; i++ )
        {
            int c = (x-1);
            if ( tMapaKU[y-1][c+i] >= 1 && tMapaKU[y-1][c+i] <= 4 ){ return 0; }
            if ( tMapaKU[y][c+i] >= 1 && tMapaKU[y][c+i] <= 4 ){ return 0; }
            if ( x < 10 ) if ( tMapaKU[y+1][c+i] >= 1 && tMapaKU[y+1][c+i] <= 4 ){ return 0; }
        }
    }
    return 1;
}

http://en.wikipedia.org/wiki/Don't_repeat_yourself

A tak na marginesie:

 f_addText("\n(#69)[(#49)KOMPUTER(#69)](#66)PUDLO ! \n(#69)Wcisnij (#66)SPACJE (#69)aby kontynuowac.");

Czyli to ty zabiłeś Hankę? :(

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0