Witam bardzo serdecznie,
Przychodzę do was z prośbą pomocy w znalezieniu błędu. Moja dziewczynka bawi się w programowanie i bardzo się przy tym irytuje iż nie wie gdzie jest błąd. Próbuje napisać słynną grę "Snake" w codeblocks.
Tu macie kod:
#include <iostream>
#include <conio.h> // getch()
#include <cstdlib> //system ("cls") - czyszczenie ekranu
#include <time.h> // srand(time(NULL))
#include <windows.h> // Sleep()
using namespace std;
int szerokosc, wysokosc, szybkosc;
int gora, dol, lewo, prawo;
int xweza, yweza;
int xjedzenia, yjedzenia;
int klawisz;
int dlugosc=4, historiax[10000],historiay[10000];
int ile=0;
char kierunek='p';//w prawo
char pole[35][35];
// p -pole jest puste
//w - na polu jest wąż
// j - jedzenie
int zwymyslaj(int &x)
{
cout << "Ty matole glupi! Mialo byc od 5 do 35." << endl;
cout << "Masz ostatnia szanse" << 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 << "Nacisnij klawisze ktorymi chcesz zagrac" << 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();
// tutaj nadajemy wartosc p tablicy pole
for (int i=0; i<wysokosc; i++)
{
for(int j=0; j<szerokosc; j ++)
{
pole[j][i]= 'p';
}
}
srand(time(NULL));// generator losowania
// losowanie pola dla weza
xweza=rand()%szerokosc;
yweza=rand()%wysokosc;
pole[xweza][yweza]= 'w';
// losowanie pola dla jedzenia
do { // wykonuj...
xjedzenia=rand()%szerokosc;
yjedzenia=rand()%wysokosc;
//...dopoki pole wylosowane ne jest puste
} while(pole[xjedzenia][yjedzenia]!= 'p');
pole[xjedzenia][yjedzenia]= 'j';
//rozpoczecie gry
for (;;)
{
ile++;
historiax[ile]=xweza;
historiay[ile]=yweza;
//kasowanie ogona weza
pole[historiax[ile-dlugosc]][historiay[ile-dlugosc]]='p';
//rysowanie planszy--------------------------------
system("CLS"); // czyszcenie ekranu
//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 << "--";
}
if (kbhit()) // jesli zostanie nacisniety jakis klawisz
{
klawisz=getch();
if(klawisz==224)klawisz+=getch();
if(klawisz==0)klawisz+=getch();
if(klawisz==gora) kierunek='g';
if(klawisz==dol) kierunek='d';
if(klawisz==lewo) kierunek='l';
if(klawisz==prawo) kierunek='p';
}
Sleep(500); // czekaj
if(kierunek='d') yweza++;
if(kierunek='g') yweza--;
if(kierunek='l') xweza--;
if(kierunek='p') xweza++;
if(xweza==szerokosc) xweza=0;
if(xweza==-1) xweza=szerokosc-1;
if(yweza==wysokosc) yweza=0;
if(yweza==-1) yweza=wysokosc-1;
pole[xweza][yweza]='w';
}
return 0;
}
Program ogólnie działa ale nie można ruszać się przysłowiowym wężem i mruga konsola.