Cześć,
nowy dzień, nowe wyzwania. Nie przeprowadziłem wystarczających testow i wczoraj scommitowalem wersje z bledem. Po kilkudziesieciu minutach w koncu doszedlem, gdzie jest bug, nie wiem tylko dlaczego, a skoro nie wiem dlaczego, nie wiem jak go usunac.
void ConsoleSettings()
{
int Width;
int Height;
std::cout << "Podaj szerokosc pola w zakresie od 5 do 40: ";
std::cin >> Width;
if (Width < 5 || Width > 40)
{
InputError(Width);
}
std::cout << "Podaj wysokosc pola w zakresie od 5 do 40: ";
std::cin >> Height;
if (Height < 5 || Height > 40)
{
InputError(Height);
}
BoardProperties ConsoleSize;
ConsoleSize.Width = Width;
ConsoleSize.Height = Height;
//----------------------------------------------------------------------------------------------
std::cout << "ConsoleSize.Width = " << ConsoleSize.Width << std::endl; //Test struktury
std::cout << "ConsoleSize.Height = " << ConsoleSize.Height << std::endl;
//----------------------------------------------------------------------------------------------
DefineFields(ConsoleSize);
return;
}
void DefineFields(struct BoardProperties ConsoleSize)
{
char **Board;
Board = new char *[ConsoleSize.Width];
for (int i = 0; i < ConsoleSize.Width; i++)
{
Board[i] = new char[ConsoleSize.Height];
}
for (int j = 0; j < ConsoleSize.Width; j++)
{
for (int k = 0; k < ConsoleSize.Height; k++)
Board[j][k] = 'e'; //e - Empty field
}
//------------------------------------------------------------------------------------------------
/*for (int i = 0; i < Size.Width; i++)
{
for (int j = 0; j < Size.Height; j++) //test tablicy
{
std::cout << Board[i][j];
}
}*/
//------------------------------------------------------------------------------------------------
int SnakePosX, SnakePosY;
int FoodPosX, FoodPosY;
/*srand(time(NULL));
SnakePosX = rand() % Size.Width;
SnakePosY = rand() % Size.Height;
Board[SnakePosX][SnakePosY] = 's'; //s - Snake on field
do
{
FoodPosX = rand() % Size.Width;
FoodPosY = rand() % Size.Height;
} while (Board[FoodPosX][FoodPosY] != 'e');
Board[FoodPosX][FoodPosY] = 'f'; //f- Food on field
*/
//for (;;)
//{
system("cls");
// GORNA RAMA------------------------------------------------------------------------------------
for (int i = 0; i <= ConsoleSize.Width; i++)
{
std::cout << "--";
}
// BOCZNE RAMY-----------------------------------------------------------------------------------
for (int j = 0; j < ConsoleSize.Height; j++)
{
std::cout << std::endl << "|";
for (int k = 0; k < ConsoleSize.Width; k++)
{
if (Board[j][k] == 'e')
{
std::cout << " ";
}
/*if (Board[j][k] == 's')
{
std::cout << " o";
}
if (Board[j][k] == 'f')
{
std::cout << " x";
}*/
}
std::cout << "|";
}
std::cout << std::endl;
// DOLNA RAMA-------------------------------------------------------------------------------------
for (int l = 0; l <= ConsoleSize.Width; l++)
{
std::cout << "--";
}
std::cout << std::endl;
//}
Sleep(500);
return;
}
#pragma once
struct BoardProperties
{
int Width;
int Height;
};
**Problem dotyczy rysowania planszy w funkcji DefineFields(). W momencie, gdy chce wstawic warunek if (Board[j][k] == 'e') { std::cout << " ";}, nie moge utworzyc tablicy o dlugosci gornej i dolnej krawedzi roznych od dlugosci bocznych krawedzi. Gdy podaje takie same wartosci, rysuje mi prawidlowo. Gdy chce miec prostokat - wywala blad. Gdy warunki wstawie w komentarz, buduje prawidlowo nawet board o roznych bokach.
**
// BOCZNE RAMY-----------------------------------------------------------------------------------
for (int j = 0; j < ConsoleSize.Height; j++)
{
std::cout << std::endl << "|";
for (int k = 0; k < ConsoleSize.Width; k++)
{
**if (Board[j][k] == 'e')
{**
std::cout << " ";
**}
/*if (Board[j][k] == 's')
{
std::cout << " o";
}
if (Board[j][k] == 'f')
{
std::cout << " x";
}*/**
}
std::cout << "|";
}
std::cout << std::endl;