• 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ć?

Aruba Cloud - Virtual Private Server VPS
0 głosów
284 wizyt
pytanie zadane 10 stycznia 2024 w C# przez kubekszklany Gaduła (3,250 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 2024 przez rafal.budzis Szeryf (85,460 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 2024 przez tkz Nałogowiec (42,020 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
1 odpowiedź 160 wizyt
pytanie zadane 10 sierpnia 2024 w Sieci komputerowe, internet przez kyojin_ Nowicjusz (150 p.)
0 głosów
0 odpowiedzi 862 wizyt
+1 głos
1 odpowiedź 623 wizyt
pytanie zadane 23 stycznia 2017 w C i C++ przez BeSSeSSt Obywatel (1,190 p.)

93,264 zapytań

142,260 odpowiedzi

322,234 komentarzy

62,582 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

Wprowadzenie do ITsec, tom 1 Wprowadzenie do ITsec, tom 2

Można już zamawiać dwa tomy książek o ITsec pt. "Wprowadzenie do bezpieczeństwa IT" - mamy dla Was kod: pasja (użyjcie go w koszyku), dzięki któremu uzyskamy aż 15% zniżki! Dziękujemy ekipie Sekuraka za fajny rabat dla naszej Społeczności!

...