Blad w programie (C++)

0

Witam. Zaczalem uczyc sie programowac w C++ i zaczalem od gry typu snake. Kod pisze w code::blocks. Problem w tym, ze gry klikam F9, gra sie uruchamia itd, lecz w momencie losowania pola dla weza on sie pojawia, a jedzenie sie nie pojawia. Co napisalem zle lub czego nie napisalem? Prosze o pomoc. Kod wyglada nastepujaco:

#include <iostream>
#include "conio.h"
#include <cstdlib>
#include <time.h>

using namespace std;

int szerokosc, wysokosc, szybkosc;
int gora, dol, lewo, prawo;
int wspolzednaXweza, wspolzednaYweza;
int wspolzednaXjedzenia, wspolzednaYjedzenia;
char pole[35] [35];

int zwymyslaj(int &x)
{
cout << "Mialo byc od 5 do 35" << endl;
cout << "Wybierz jeszcze raz" << endl;
cin >> x;
if (x < 5 || x > 35) x = 15;
}

int main()
{
cout << "Podaj szerokosc planszy od 5 do 35:" << endl;
cin >> szerokosc;
if (szerokosc < 5 || szerokosc > 35) zwymyslaj(szerokosc);

cout << "Podaj wysokosc planszy od 5 do 35::" << endl;
cin >> wysokosc;
if (wysokosc < 5 || wysokosc > 35) zwymyslaj(wysokosc);

cout << "Podaj szybkosc od 1 do 10" << endl;
cin >> szybkosc;
if (szybkosc < 1) szybkosc = 1;
if (szybkosc > 10) szybkosc = 10;

cout << "Nacisniij przyciski ktorymi chcesz grac" << endl;
cout << "GORA" << endl;
gora = getch();
if (gora == 224) gora+=getch();
if (gora == 0) gora-=getch();

cout << "DOL" << endl;
dol = getch();
if (dol == 224) dol += getch();
if (dol == 0) dol -= getch();

cout << "LEWO" << endl;
lewo = getch();
if (lewo == 224) lewo += getch();
if (lewo == 0) lewo -= getch();

cout << "PRAWO" << endl;
prawo = getch();
if (prawo == 224) prawo += getch();
if (prawo == 0) prawo -= getch();

for(int i=0 ; i<wysokosc ; i++)
{
for(int j=0 ; j<szerokosc ; j++)
{
pole[j][i]='p';
}
}
srand(time(NULL));
wspolzednaXweza=rand()%szerokosc;
wspolzednaYweza=rand()%wysokosc;

pole[wspolzednaXweza][wspolzednaYweza]='w';
pole[wspolzednaXjedzenia][wspolzednaYjedzenia] !='j';

do{
wspolzednaXjedzenia=rand()%szerokosc;
wspolzednaYjedzenia=rand()%wysokosc;
}while(pole[wspolzednaXjedzenia][wspolzednaYjedzenia] !='p');

//rysowanie planszy
system("CLS");

//gorna ramka

for(int i=0; i<szerokosc ; i++)
{
cout << "--";
}

for(int i=0; i<wysokosc ; i++)
{
cout << endl << "|"; // lewa ramka
for(int j=0; j<szerokosc ;j++)
{
if(pole[j][i]=='p') cout << " ";
if(pole[j][i]=='w') cout << " o";
if(pole[j][i]=='j') cout << " x";
}
cout << "|";// prawa ramka
}

cout << endl;
//dolna ramka

for(int i=0; i<szerokosc ; i++)
{
cout << "--";
}

return 0;
}

0
pole[wspolzednaXweza][wspolzednaYweza]='w'; // ustawiasz 'w' w tablicy
pole[wspolzednaXjedzenia][wspolzednaYjedzenia] !='j'; // sprawdzenie warunku? Ta linia właściwie nic nie robi.
do{
  wspolzednaXjedzenia=rand()%szerokosc;
  wspolzednaYjedzenia=rand()%wysokosc;
}while(pole[wspolzednaXjedzenia][wspolzednaYjedzenia] !='p');

A to powyższe losuje współrzędne aż znajdzie pole różne od 'p' (czyli jedyne 'w' jakie wcześniej wstawiłeś). Później i tak nic z tymi współrzędnymi nie robi.

0

To jak moge to naprawic, tak zeby dzialalo tak jak powinno?

0

Ok. Dzieki za pomoc

0

Ale bez formatowania to tego sie czytac nie da

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