Komunikacja miedzy aplikacjami

0

Witam,
mam za zadanie napisać grę statki i nie byłoby to raczej nic trudnego gdyby nie jeden mankament. Gra ma się odbywać w dwóch aplikacjach(dla każdego gracza po jednej), które mają się ze sobą komunikować za pomocą pliku tekstowego(jednego wspólnego dla obu aplikacji) do którego zapisywany jest stan gry. I teraz moje pytanie w jaki sposób mogę to zrealizować. Bardzo proszę o jakieś rady.

0

gracz1 - serwer - gracz2

Na serwerze trzymasz ten plik, a Twoj kodzik tam sprawdza, ktory teraz gracz i takie tam.
Gracze wysylaja zapytania do serwera, typu A5.
Nawet do tego nie potrzebujesz pliku, poniewaz mozesz to zrobic na tablicy 10x10, ktora serwer by obslugiwal, jesli juz masz robic na plikach to tez serwer jest potrzebny, poniewaz musisz kontrolowac zapis do pliku, zeby na przyklad gracz pierwszy dwoch ruchow nie zrobil, czy cos ;p

jakijs jezyk + sockety = rozwiazanie

0

Więc na początek dopowiem że gra ma się odbywać na jednym komputerze. Czyli bez serwera. I może również nie do końca doprecyzowałem, najbardziej mnie interesuje w jaki sposób kontrolować zapis i odczyt. Dwie aplikacje nie mogą jednocześnie korzystać z tego samego pliku więc będę musiał te pliki zamykać i właśnie nie wiem jak sprawdzać czy już należy zamknąć/otworzyć plik czy jeszcze nie. Ma to być oczywiście wykonane w c++.

0

Polecam lekture
http://www.google.pl/search?hl=pl&client=firefox-a&hs=UcP&rls=org.mozilla%3Apl%3Aofficial&q=read+and+write+to+file+C%2B%2B&aq=f&aqi=&aql=&oq=&gs_rfai=
na pewno znajdziesz coś pasującego.
W pierwszych dwóch linkach te rzeczy są chyba najlepiej opisane.

0

Aplikacje przesylaja miedzy soba te pola, wiec oprocz tego trzymaj w obu zmienna okreslajaca czyj teraz jest ruch i bedziesz dzieki temu wiedzial, czy juz otwierac czy nie, tzn. otwierasz plik jak dostaniesz zapytanie od drugiej aplikacji i na odwrot, a ta zmienna tylko po to, aby nie mozna bylo wykonac wiecej ruchow na raz i zeby syf sie w tym pliku nie zrobil.

Samo C++ nie daje Ci mozliwosci przesylania komunikatow miedzy oknami, ale winapi juz tak.
Masz uruchomione dwie aplikacje, jedna sie nazywa "gracz1", a druga "gracz2", wiec szukasz najpierw okna przeciwnika i wysylasz komunikaty o wybranych polach.

Do pobrania uchwytu drugiego okna mozesz nawet z FindWindow() skorzystac, a do wysylania komunikatow z SendMessage().

http://msdn.microsoft.com/en-us/library/ms633499(VS.85).aspx
http://msdn.microsoft.com/en-us/library/ms644950(VS.85).aspx

Chyba, ze chcesz zrobic tak, ze w pliku bedziesz ruchy zapisywal, a nie tablice, to wtedy proponuje po prostu zapisywac do pliku ostatnie pole, a w aplikacjach trzymac tablice gry i tyle, ktora na biezaca bedziesz sprawdzal.

Oczywiscie mozesz zapisywac sobie wsyzstkie ruchy do pliku i sprawdzac plik, ale to tylko utrudni, poniewaz bedziesz musial czesciej z niego korzystac ;)

0

A ja proponuje poczytac o pamieci wspoldzielonej. Idealnie pasuje do tego zadania.

1 użytkowników online, w tym zalogowanych: 0, gości: 1