• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Sami zobaczcie

+1 głos
488 wizyt
pytanie zadane 23 lutego 2016 w C i C++ przez E_ZER Początkujący (320 p.)

Napisałem taki kod i gdy go uruchomię pojawiają mi się na ekranie nazwijmy to "chierglify"

Sami zobaczcie 

Oto kod:

#include <iostream>
#include <cstdio>
#include <conio.h>
#include <windows.h>


using namespace std;

////////////////////////////////////
//        zmienne globalne       ///
//                                 ///
char map[12][12]; //mapa         ///
int sx=6, sy=6; //pozycja weza ///
//                                 ///
//        zmienne globalne       ///
////////////////////////////////////


void rysuj() //mapa
{
    for(int i=0;i<12;i++)      //wysokość
    {
        for(int j=0;j<12;j++)   //szerokość
        {
            map[i][j]= 36;
            if(sx==j && sy==i) map[i][j]='O'; //wpypisanie
            cout << map[i][j];
        }
        cout << endl;
    }
};

int ruch() //sterowanie
{
    int odp=getch();

    if(odp=='a')
    {
        map[sy][sx]=255;
        sx--;

    }

    else if(odp=='d')
    {
        map[sy][sx]=255;
        sx++;

    }

}


//////////////////////////////////
////////////PROGRAM///////////////
//////////////////////////////////
int main()
{
    rysuj();
    for(;;)
    {
        if(ruch())
        {
            system("cls");
            rysuj();
        }
    }


    getchar();
    return 0;
}

 

3 odpowiedzi

+4 głosów
odpowiedź 23 lutego 2016 przez Radfler VIP (101,030 p.)
I co w związku z tym?
komentarz 23 lutego 2016 przez E_ZER Początkujący (320 p.)
przekopuj kod
komentarz 23 lutego 2016 przez Radfler VIP (101,030 p.)
Ale po co? Na pierwszy rzut oka widać, co jest nie tak w tym kodzie...
+1 głos
odpowiedź 23 lutego 2016 przez redvine Użytkownik (960 p.)
edycja 23 lutego 2016 przez redvine

Jeśli chodzi o to że na każdym miejscu na mapie masz znak $ to przez ten fragment kodu:

map[i][j]= 36;
Dlaczego? Ponieważ przypisujesz w tym miejscu znak z tablicy ASCII o wartości 36 który jest właśnie dolarem.
Spacja jest pod numerem 32 ale możesz też równie dobrze zastąpić to tak:
map[i][j]= ' ';

http://www.asciitable.com/index/asciifull.gif

komentarz 23 lutego 2016 przez E_ZER Początkujący (320 p.)
Dzięki teraz działa

Wybaczcie za tak  banalny błąd ale nie jestem doświadczonym "programistą"

Pozdrawiam !!!
0 głosów
odpowiedź 23 lutego 2016 przez Paweł Głomski Obywatel (1,650 p.)
Nie wiem o co Ci chodzi, ale w funkcji int ruch() nigdzie nie zwracasz żadnej wartości.
komentarz 23 lutego 2016 przez E_ZER Początkujący (320 p.)
Bardziej wydaje mi się że to z funkcją rysuj jest problem bo funkcja ruch nie sprawia żadnego problemu
1
komentarz 23 lutego 2016 przez jpacanowski VIP (101,920 p.)
        if(ruch())
        {
            system("cls");
            rysuj();
        }

Twoja funkcja ruch() nic nie zwraca, więc warunek if() nie zostanie spełniony, i tym samym nie wykona się funkcja rysuj().

Podobne pytania

0 głosów
1 odpowiedź 393 wizyt
0 głosów
3 odpowiedzi 289 wizyt
0 głosów
1 odpowiedź 266 wizyt
pytanie zadane 3 października 2016 w Sprzęt komputerowy przez Tomenis2000 Nowicjusz (140 p.)

93,778 zapytań

142,737 odpowiedzi

323,389 komentarzy

63,382 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj

Twierdza Linux. Bezpieczeństwo dla dociekliwych

Aby uzyskać rabat -10%, użyjcie kodu pasja-linux, wpisując go w specjalne pole w koszyku.

...