Cześć wszystkim,
Próbowałem dodać do mojego snake'a funkcję następnych prób, jednak za każdym razem po przegranej rozgrywce i odpowiedzi na pytanie "Chcesz zagrac jeszcze raz?" wyskakuje błąd.
#include <iostream>
#include <cstdlib>
#include <conio.h>
#include <Windows.h>
#include <time.h>
using namespace std;
int szerokosc, wysokosc, rozmiar, szybkosc;
int Xwaz, Ywaz, Xserce, Yserce;
int dlugosc = 4, Xpamiec[10000], Ypamiec[10000];
int ile = 0;
int punkty;
int klawisz;
int wybor = 'T';
string nick;
char waz = 178, sciana = 219, serce = 176;
char kierunek = 'g';
char pole[25][25]; //liczba pól
//kursor do odświeżania
void kursordo(int x, int y)
{
HANDLE hCon;
COORD dwPos;
dwPos.X = x;
dwPos.Y = y;
hCon = GetStdHandle(STD_OUTPUT_HANDLE);
SetConsoleCursorPosition(hCon, dwPos);
}
int main()
{
//Chowanie kursora-----------------------------------------------------------------------------------------------------
{
HANDLE hStdOut = NULL;
CONSOLE_CURSOR_INFO curInfo;
hStdOut = GetStdHandle(STD_OUTPUT_HANDLE);
GetConsoleCursorInfo(hStdOut, &curInfo);
curInfo.bVisible = FALSE;
SetConsoleCursorInfo(hStdOut, &curInfo);
}
//Tytuł----------------------------------------------------------------------------------------------------------------
{
system("cls");
printf("\n\n\n");
printf("\t\t SSSS kk\n");
printf("\t\t SS SS kk\n");
printf("\t\t SS SS kk\n");
printf("\t\t SS nnnnn aaaa kk kk eeee\n");
printf("\t\t SSS nn nn aa aa kk kk ee ee\n");
printf("\t\t SSS nn nn aaaa kkkk eeeeee\n");
printf("\t\t SS nn nn aa aa kkk ee\n");
printf("\t\t SS SS nn nn aa aa kkkk ee\n");
printf("\t\t SS SS nn nn aa aa kk kk ee ee\n");
printf("\t\t SSSSS nn nn aaaaa kk kk eeee\n\n\n");
}
//Wybór poziomu trudności i nicku--------------------------------------------------------------------------------------
{
cout << endl;
cout << "Wpisz swoj nick: ";
cin >> nick;
Sleep(800);
cout << endl << endl;
cout << "Wybierz rozmiar planszy:" << endl;
cout << "1. Duza" << endl;
cout << "2. Srednia" << endl;
cout << "3. Mala" << endl;
cout << endl;
cout << "Rozmiar: ";
cin >> rozmiar;
cout << endl;
switch (rozmiar)
{
case 1:
szerokosc = 27;
wysokosc = 27;
cout << "Wybrales DUZA plansze" << endl;
break;
case 2:
szerokosc = 19;
wysokosc = 19;
cout << "Wybrales SREDNIA plansze" << endl;
break;
case 3:
szerokosc = 11;
wysokosc = 11;
cout << "Wybrales MALA plansze" << endl;
break;
default:
szerokosc = 19;
wysokosc = 19;
cout << "Wybrales SREDNIA plansze" << endl;
break;
}
Sleep(800);
cout << endl << endl;
cout << "Teraz wybierz szybkosc twojego bydlaka:" << endl;
cout << "1. Wolny" << endl;
cout << "2. Szybki" << endl;
cout << "3. Bardzo szybki" << endl;
cout << endl;
cout << "Szybkosc: ";
cin >> szybkosc;
cout << endl;
switch (szybkosc)
{
case 1: cout << "Wybrales WOLNY" << endl; break;
case 2: cout << "Wybrales SZYBKI" << endl; break;
case 3: cout << "Wybrales BARDZO SZYBKI" << endl; break;
default:cout << "Wybrales SZYBKI" << endl; break;
}
Sleep(800);
}
do
{
//Deklarowanie pól-----------------------------------------------------------------------------------------------------
{
//wszystkie puste pola
for (int i = 0; i < wysokosc; i++)
{
for (int j = 0; j < szerokosc; j++)
{
pole[j][i] = 'p';
}
}
//losowanie
srand(time(NULL));
//start węża
Xwaz = szerokosc / 2;
Ywaz = wysokosc / 2;
pole[Xwaz][Ywaz] = 'w';
//losowanie pól z sercami (w przypadku wylosowania złego pola losuje jeszcze raz)
do {
switch (rozmiar) {
case 1:
{
Xserce = rand() % 23 + 1;
Yserce = rand() % 23 + 1;
break;
}
case 2:
{
Xserce = rand() % 17 + 1;
Yserce = rand() % 17 + 1;
break;
}
case 3:
{
Xserce = rand() % 9 + 1;
Yserce = rand() % 9 + 1;
break;
}
}
} while (pole[Xserce][Yserce] != 'p');
pole[Xserce][Yserce] = 'j';
}
//Rysowanie planszy----------------------------------------------------------------------------------------------------
{
//czyszczenie konsoli
system("CLS");
kursordo(0, 0);
//góra
for (int i = 0; i <= szerokosc;i++)
{
cout << sciana << sciana;
}
//boki i środek
for (int i = 0; i < wysokosc;i++)
{
cout << endl << sciana;
for (int j = 0; j < szerokosc; j++)
{
if (pole[j][i] == 'p') cout << " ";
if (pole[j][i] == 'w') cout << waz << waz;
if (pole[j][i] == 'j') cout << serce << serce;
}
cout << sciana;
}
// dół
cout << endl;
for (int i = 0; i <= szerokosc;i++)
{
cout << sciana << sciana;
}
}
//Pętla gry------------------------------------------------------------------------------------------------------------
for (;;)
{
//liczba cyklów i prędkość-----------------------------------------------------------------------------------------
{
ile++;
Xpamiec[ile] = Xwaz;
Ypamiec[ile] = Ywaz;
Sleep(szybkosc * -200 + 650);
}
//Poruszanie się węża i punkty-------------------------------------------------------------------------------------
{
//sterowanie
if (_kbhit())
{
klawisz = _getch();
if (klawisz == 'w' && kierunek != 'd') kierunek = 'g';
if (klawisz == 's' && kierunek != 'g') kierunek = 'd';
if (klawisz == 'a' && kierunek != 'p') kierunek = 'l';
if (klawisz == 'd' && kierunek != 'l') kierunek = 'p';
}
//pełzanie do przodu
if (kierunek == 'g') Ywaz--;
if (kierunek == 'd') Ywaz++;
if (kierunek == 'l') Xwaz--;
if (kierunek == 'p') Xwaz++;
//podknięcie
if (pole[Xwaz][Ywaz] == 'w')
{
system("CLS");
break;
}
//punkty
if (pole[Xwaz][Ywaz] == 'j')
{
dlugosc++;
punkty++;
do {
switch (rozmiar) {
case 1:
{
Xserce = rand() % 23 + 1;
Yserce = rand() % 23 + 1;
break;
}
case 2:
{
Xserce = rand() % 17 + 1;
Yserce = rand() % 17 + 1;
break;
}
case 3:
{
Xserce = rand() % 9 + 1;
Yserce = rand() % 9 + 1;
break;
}
}
} while (pole[Xserce][Yserce] != 'p');
pole[Xserce][Yserce] = 'j';
kursordo(Xserce * 2 + 1, Yserce + 1);
cout << serce << serce;
}
else
{
//usuwanie ogona
pole[Xpamiec[ile - dlugosc]][Ypamiec[ile - dlugosc]] = 'p';
kursordo(Xpamiec[ile - dlugosc] * 2 + 1, Ypamiec[ile - dlugosc] + 1);
cout << " ";
}
//przechodzenie przez ściany
if (Xwaz == szerokosc) Xwaz = 0;
if (Xwaz == -1) Xwaz = szerokosc - 1;
if (Ywaz == wysokosc) Ywaz = 0;
if (Ywaz == -1) Ywaz = wysokosc - 1;
pole[Xwaz][Ywaz] = 'w';
kursordo(Xwaz * 2 + 1, Ywaz + 1);
cout << waz << waz;
}
}
//Co po przegranej-----------------------------------------------------------------------------------------------------
{
printf("\n\n\n");
printf("\t\t GGGGGG \n");
printf("\t\t GG GG \n");
printf("\t\t GG \n");
printf("\t\t GG aaaa mmmm mmm eeee \n");
printf("\t\t GG aa aa mm mm mm ee ee\n");
printf("\t\t GG GGG aaaa mm mm mm eeeeee\n");
printf("\t\t GG GG aa aa mm mm mm ee \n");
printf("\t\t GG GG aa aa mm mm mm ee \n");
printf("\t\t GG GG aa aa mm mm mm ee ee\n");
printf("\t\t GGGGGG aaaaa mm mm mm eeee \n");
Sleep(2000);
printf("\n\n\n");
printf("\t\t OOOOOO !!\n");
printf("\t\t OO OO !!\n");
printf("\t\t OO OO !!\n");
printf("\t\t OO OO vv vv eeee rrrrr !!\n");
printf("\t\t OO OO vv vv ee ee rr rr !!\n");
printf("\t\t OO OO vv vv eeeeee rr rr !!\n");
printf("\t\t OO OO vv vv ee rr !!\n");
printf("\t\t OO OO vvv ee rr \n");
printf("\t\t OO OO vvv ee ee rr \n");
printf("\t\t OOOOOO v eeee rr !!\n");
Sleep(2000);
cout << endl << endl << "\t\tSCORE: " << punkty << endl;
Sleep(1000);
cout << endl << endl << "\t\tChcesz zagrac jeszcze raz?";
cout << endl << endl << "\t\t Tak: T Nie: N" << endl;
cout << "\t\t";
cin >> wybor;
}
} while (wybor == 'T');
return 0;
}
Bardzo proszę o pomoc bo z c++ i programowaniem nie mam dużego doświadczenia.