Cześć!
Mam problem z przekazaniem argumentow. Funkcje DrawBoard() i DefineFields() wymagaja pobrania wysokosci i szerokosci okna. Czy jest jakis sposob, by wywolac je w funkcji main(), a nie w ConsoleSettings(), gdzie zdeklarowane sa zmienne Width i Height? I co w wypadku, gdyby jakas inna teoretyczna funkcja potrzebowala argumentow np z funkcji DrawBoard() i ConsoleSettings()? Da sie je przekazac?
pozdr
#include <iostream>
#include <conio.h>
void Intro();
void ConsoleSettings(); //rozmiary boardu
void GameSettings(); //tempo i definicja klawiszy
void DrawBoard(int &HowWide, int &HowHigh); //czysci ekran i rysuje board o podanych rozmiarach
void DefineFields(int &Horizontal, int &Vertical);
void InputError(int &Size); //jesli podano wartosci spoza skali, pomysl o walidacji inputow
void KeyboardError(int &Key); //klawisze kursorow skladaja sie z dwoch liczb(?)
int main()
{
Intro();
GameSettings();
ConsoleSettings();
DefineFields(Width, Height);
DrawBoard(Width, Height);
return 0;
}
void Intro()
{
...
}
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);
}
//DefineFields(Width, Height);
//DrawBoard(Width, Height);
return;
}
void GameSettings()
{
...
}
void InputError(int &Size)
{
...
}
void KeyboardError(int &Key)
{
...
}
void DrawBoard(int &HowWide, int &HowHigh)
{
//system("cls");
// GORNA RAMA-----------------------------------------------------------------------
for (int i = 0; i <= HowWide; i++)
{
std::cout << "--";
}
std::cout << std::endl;
// BOCZNE RAMY----------------------------------------------------------------------
for (int j = 0; j < HowHigh; j++)
{
std::cout << "|";
for (int k = 0; k < HowWide; k++)
{
std::cout << " ";
if (k == HowWide - 1)
{
std::cout << "|" << std::endl;
}
}
}
// DOLNA RAMA-------------------------------------------------------------------------
for (int l = 0; l <= HowWide; l++)
{
std::cout << "--";
}
std::cout << std::endl;
return;
}
void DefineFields(int &Horizontal, int &Vertical)
{
char **Board;
Board = new char *[Horizontal];
for (int i = 0; i < Horizontal; i++)
{
Board[i] = new char[Vertical];
}
for (int i = 0; i < Horizontal; i++)
{
for (int j = 0; j < Vertical; j++)
Board[i][j] = 'e'; //e - Empty field
}
/*for (int i = 0; i < Horizontal; i++)
{
for (int j = 0; j < Vertical; j++) //test tablicy
{
std::cout << Board[i][j];
}
}*/
int SnakePosX, SnakePosY;
int FoodPosX, FoodPosY;
SnakePosX = rand() % Horizontal;
SnakePosY = rand() % Vertical;
Board[SnakePosX][SnakePosY] = 's'; //s - Snake on field
do
{
FoodPosX = rand() % Horizontal;
FoodPosY = rand() % Vertical;
} while (Board[FoodPosX][FoodPosY] != 'e');
Board[FoodPosX][FoodPosY] = 'f'; //f- Food on field
return;
}