Wątek przeniesiony 2018-03-07 18:38 z C/C++ przez Ktos.

Program napisany na podstawie poradnika – dlaczego nie chce się odpalić?

0

Witam niestety nie wiem jaki dać tytuł więc za to bardzo przepraszam. Chodzi o to że pisałem program wspomagając się poradnikiem. Na poradniku wszystko było dobrze i program się odpalał a mi właśnie nie chce. Daje poniżej cały kod i mam nadzieję na pomoc :D

#include <iostream>
using namespace std;
bool gameOver;
const int width = 20;
const int height = 20;
int x,y,OwoceX,OwoceY,Punkty;
enum eDirecton {Stop = 0,Lewo,Prawo,Gora,Dol};
eDirecton dir;
void Setup()
{
    gameOver = false;
    dir = Stop;
    x = width / 2;
    y = height / 2;
    OwoceX = rand() % width;
    OwoceY = rand() % height;
    Punkty = 0;
}
void Draw()
{
    system("cls");
    for (int i = 0; <width; i++)
        cout <<"#";
    cout << endl;
    for(int i = 0; i<height; i++)
    {
        for(int j = o; j <width; j++)
        {
            if (j==0)
                cout<<"#";
            else
                cout<<" ";
            if(j == width-1)
                cout<<"#";
        }
        cout << endl;
    }
    for (int i = 0; <width; i++)
        cout <<"#";
    cout << endl;
}
void Input()
{

}
void Logic()
{

}
int main()
{
    Setup();
    while (!gameOver)
    {
        Draw();
        Input();
        Logic();
    }
    return 0;
}
2
for (int i = 0; <width; i++)

Brakuje czegoś po lewej stronie <, zakładam że chodziło o i. Ten problem pojawia się w dwóch miejscach w Draw().

for (int j = o; j < width; j++)

Nigdzie w kodzie nie ma o, nie chodziło o 0?

0

Parę niedołączonych bibliotek + parę literówek, sprawdź co gada kompilator, np linia 27: "j = o"???

0
czaffik napisał(a):

Parę niedołączonych bibliotek + parę literówek, sprawdź co gada kompilator, np linia 27: "j = o"???

tak jest tak napisane

atmal napisał(a):
for (int i = 0; <width; i++)

Brakuje czegoś po lewej stronie <, zakładam że chodziło o i. Ten problem pojawia się w dwóch miejscach w Draw().

for (int j = o; j < width; j++)

Nigdzie w kodzie nie ma o, nie chodziło o 0?

masz racje chodzi o "0" Od razu mniej czerwonych linijek jest ale cały czas problem jest z linijką 21,22 i 38. 21 jest napisane że błąd to "system" a 22 i 38 "<" i nie wiem co z tym zrobić

1

Jeżeli używasz rand() i system() musisz dołączyć cstdlib:

#include <cstdlib>

Przy okazji polecam przeczytać Nie używaj rand(), C++ ma <random>

0

Jeśli poradnik proponuje w taki sposób pisac kod, jak ten powyżej, to daruj sobie ten poradnik....

0

21 jest napisane że błąd to "system"

Tak jak radził Ci kolega @atmal - dodaj odpowiedni nagłówek: #include <cstdlib>

a 22 i 38 "<" i nie wiem co z tym zrobić

Proszę bardzo:

void Draw()
{
    system( "cls" );
    for( int i = 0; i < width; i++ )    // Tutaj linijka 22 - brakowało i < width
        cout << "#";
    cout << endl;
    for( int i = 0; i<height; i++ )
    {
        for( int j = 0; j <width; j++ )
        {
            if( j == 0 )
                cout << "#";
            else
                cout << " ";
            if( j == width - 1 )
                cout << "#";
        }
        cout << endl;
    }
    for( int i = 0; i < width; i++ )    // linijka 38 - znów brakowało i w porownaniu z width
        cout << "#";
    cout << endl;
}

Dodatkowo: Nie używaj zmiennych globalnych! Twórz zmienne tam, gdzie je wykorzystujesz. Jeśli zmienną width wykorzystujesz w dwóch funkcjach: void Setup() oraz void Draw() to przekazuj te zmienne jako referencje:

void Draw( const int& width )
{
    // Tutaj Twoja funkcja, bez zmian.
}

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