Zdravim vsetkych.
Mam taky mensi problem. Mozno to len zbytocne komplikujem a mozno sa to da jednodussie, ale ide o to, ze neviem ako pracovat s objektom v inej triede nez v akej som ho vytvoril.
Napriklad v Main (Main.cs) si vytvorim objekt oStep so vstupnymi parametrami X a Y
Step oStep = new Step(0, 0);
Jeho trieda Step implementuje nejaky interface IStep, to je asi jedno a nachadza sa v subore IStep.cs (radsej pisem vsetko, pre istotu).
V triede Game (IGame.cs) je metoda NexStep (return ma byt objekt rozhrania IStep), ktora od uzivatelia prevezme prikaz a zmeni X a Y a vytvori novy objekt oStep triedy Step s novymi suradnicami X a Y.
A moj problem je ten, ze s tymto novym objektom oStep neviem v Main pracovat. Vzdy ked sa o nieco pokusim, tak pracuje iba so starym, ktory je vytvoreny v Main a nie tym novsim z metody NexStep triedy Game.
Hlavna myslienka je ta, ze chcem urobit pohyb medzi miestnostami. Kazda ma svoju suradnicu X a Y a v podstate tie suradnice sa ako keby snazim prenasat cez objekt oStep.
Radsej ukazem kody.
Main.cs
public static void Main()
{
int curPosX, curPosY;
Game oGame = new Game();
Player oPlayer = new Player("Smokie", 100, 0, 0);
Step oStep = new Step(0, 0); // tu je prvy oStep
Map oMap = new Map();
curPosX = oStep.getPositionX();
curPosY = oStep.getPositionY();
oMap.createRoom(curPosX, curPosY); // tu sa len vytvaraju miestnosti,
//ktore maju suradnice X a Y. Ide vlastne o pohyb medzi nimi.
oGame.NextStep("a"); // tymto vznikne novy oStep
curPosX = oStep.getPositionX(); //ale stale pracujeme s povodnym...
curPosY = oStep.getPositionY();
oMap.createRoom(curPosX, curPosY);
}
IGame.cs
class Game: IGame
{
public int newPosX;
public int newPosY;
public Game()
{
}
public IStep NextStep(string command)
{
newPosX = 0;
newPosY = 1;
Step oStep = new Step(newPosX, newPosY);
return oStep;
}
}
IStep.cs
class Step: IStep
{
int curPosX, curPosY;
public Step(int curPosX, int curPosY)
{
this.curPosX = curPosX;
this.curPosY = curPosY;
}
}