• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Koncepcja podziału kodu na 2 projekty - jak to zrobić?

Object Storage Arubacloud
0 głosów
129 wizyt
pytanie zadane 10 stycznia w C# przez kubekszklany Gaduła (3,190 p.)

Witam. Chciałem utworzyć aplikację, coś na zasadzie prostej gry sieciowej, którą można by było w przyszłości modyfikować za pomocą Api. Aktualnie mam 2 projekty:

Game:
- Main.cs
  - Start();
  - Stop();
- Config.cs
  - Load();
  - Save();
- Network.cs
  - SendUdpTcpPacket();
  - RecieveUdpTcpPacket();
GameApi:
- Player.cs
  - Move();
- World.cs
  - WhenPlayerClick();
- Game.cs
  - int HighScore;

Nazwy klas i funkcji są na razie przykładowe, dla zobrazowania tematu, na razie jeszcze nic nie zaimplementowałem. Zastanawiam się jednak nad tym, jak dobrać modyfikatory typu np. abstract, interface, virtual, etc. żeby móc działać pomiędzy tymi klasami. Bo o ile mogę dodać referencję np. z Game do GameApi, tak w drugą stronę już nie mogę, bo by się zapętliło. A chciałbym używać funkcji pomiędzy projektami, np:

// Project: Game

RecieveUdpTcpPacket()
{
    if(Message == "Move")
    {
        GameApi.Player.Move();
    }
}
// Project: GameApi

WhenPlayerClick()
{
    if(Object == "Button")
    {
        Game.SendUdpTcpPacket("Click");
    }
}

Wydaje mi się że najlepiej by było zrobić tak, aby w GameApi była tylko definicja np. Player.Move(), tak żeby można byłą ją wykorzystać programując jakąś modyfikację do gry, a w Game jej implementacja, żeby, która np. wysyła odpowiedni pakiet do servera czy clienta. Jak to można zrobić? Albo może jest jakiś inny sposób podziału takiej aplikacji?

komentarz 13 stycznia przez rafal.budzis Szeryf (85,260 p.)
Nie wiem jak w C# ale ja bym zrobił trzeci projekt. W którym będą tylko elementy wspólne ;) Unikniesz zapętlenia przy importach i będziesz miał jasny podział ;)
komentarz 14 stycznia przez tkz Nałogowiec (42,000 p.)

@kubekszklany, mam wrażenie, że kompletnie pomieszałeś koncept API. Generalnie wygląda jakbyś chciał zrobić coś na zasadzie klient-serwer. Jeżeli ma to działać na zasadzie, że klient może być jednocześnie serwerem, to podział na X projektów nie ma sensu, chyba, że chcesz dla nauki nauczyć się tworzyć libki. Jeżeli masz typowy przypadek jeden serwer, wiele klientów, to masz dwa projekty i zmieniasz sposób komunikacji. Twój przykład jest bardziej w ramch klient robi za serwer. 

Zaloguj lub zarejestruj się, aby odpowiedzieć na to pytanie.

Podobne pytania

0 głosów
0 odpowiedzi 786 wizyt
+1 głos
1 odpowiedź 400 wizyt
pytanie zadane 23 stycznia 2017 w C i C++ przez BeSSeSSt Obywatel (1,190 p.)
0 głosów
1 odpowiedź 403 wizyt
pytanie zadane 4 października 2017 w C# przez Deloryn Bywalec (2,060 p.)

92,682 zapytań

141,584 odpowiedzi

320,071 komentarzy

62,041 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...