Proste warcaby online

0

Witam, mam do wykonania projekt na najbliższe tygodnie. Mianowicie zbudować proste warcaby w c++, prosta grafika, gra dla dwóch graczy na jednym komputerze oraz sieciowo w najprostszej konfiguracji (klient-serwer) po IP.

Kolega @krwq w tym wątku: http://4programmers.net/Forum/Kosz/167583-C++_warcaby
wklejał szablon warcab, czy mogę prosić o podesłanie jeszcze raz szablonu? o ile jeszcze posiadasz. Oraz o drobne wskazówki jak go użyć i od czego zacząć? ;)

Moje doświadczenie w programowaniu to jak widać po moim nicku. Zawodowo zajmuje się sieciami a na programowaniu znam się bardzo słabo...

Ew. jeśli ktoś miałby trochę wolnego czasu i byłby zainteresowany pomocą w temacie, na pewno się odwdzięczę, gg: 4462926.

Pozdrawiam.

0

Nie wiem w ogóle o co chodziło @ŁF z usunięciem dwuletniego wątku. prawdopodobnie już skasowałem ten program albo utonął w tysiącu innych shitoprogramów :P zasada jest prosta: robisz sobię tablicę 2d pionków w pamięci. Coś w stylu:
int plansza[8][8]; (czy tam 10x10 jak wolisz)
koncepcyjnie oznaczasz każdy pionek jakąś liczbą np.:
0 - oznacza pole puste
1 - pionek czarny
2 - damka czarna
3 - pionek bialy
4 - damka biala
Warto dobrać liczby tak, żeby łatwiej sprawdzało się kolor gracza i to czy jest damką np. po rozpisaniu liczby binarnie:
XYZ
X - pole puste/zajęte
Y - damka/pionek
Z - czarny/biały

kładziesz na formę 3xTImage i ładujesz do nich rysunki każdego z 4 rodzajów pionków
rysujesz najpierw pola naprzemiennie białe czarne. wartość wyrażenia: (x+y)%2, może tutaj znacznie ułatwić :P póxniej rysujesz pionki na podstawie mapy i tyle.. jak znajdę w ciągu kilku minut to wrzucę, jak nie to nie :P (ale raczej będzie ciężko)

(jest to jedna z przykładowych dróg rozwiązania - moim zdaniem najprostsza)

EDIT: a jednak znalazłem :P
http://speedy.sh/wApSf/warcaby-szablon.rar

0

Dziękuje :) to jest dla mnie ogromna pomoc! Teraz pozostaje mi jeszcze ćwiczyć i okiełznać środowisko. Aczkolwiek pewnie będę wracał do tego wątku jeśli znajdą się chętni wspomóż nowicjusza ;)

Przeglądając kod jest to w miarę wszystko zrozumiałe, za to jeszcze zagadką jest stworzenie dalej czegoś nowego :/
Ciężko będzie w kilka dni stworzyć obsługę całego algorytmu gry dla dwóch osób? a później gry po sieci... czy są jakieś łatwiejsze drogi aby nie odkrywać koła na nowo?

0

wg. mnie dość prosto. Skorzystaj z gotowych kontrolek do obsługi sieci. Komunikuj się tekstowo to powinno być prosto i zrozumiale. Najpierw zaimplementuj serwer, który powinien kontrolować całą rozgrywkę. Wg. mnie to wyświetlanie planszy jest chyba najprostszą rzeczą z całej gry. W zasadzie serwer powinien analizować czyste ruchy, czyli powinien znać stan planszy i powinno się do niego wysyłać jedynie: ruch z x,y do x,y i on powinien ocenić czy ruch jest poprawny oraz co się stanie po wykonaniu tego ruchu.

0

Zastanawia mnie jedna rzecz. Czy dobrym pomysłem jest pozostawienie "logiki" (sprawdzanie czy ruch może być wykonany czy nie) gry po stronie serwera?
+- takiego rozwiązania

  • nie przesyłamy głupich zapytań do serwera zmniejszając jego obciążenie (ma to chyba znaczenie przy dużej ilości graczy)
  • brak odporności na ewentualne oszustwa/błędne działanie gry (chyba sam sobie odpowiedziałem już na pytanie)
0

Jeszcze inaczej. Na pewno serwer nie może pozwolić na nieprawidłowe ruchy. Również ruch sieciowy powinien być możliwie mały. Obliczenia to pikuś. Tak więc pomiędzy serwerem a klientami powinny być przesyłane wyłącznie współrzędne ruchów natomiast obliczenia powinny być wykonywane i na serwerze i na każdym kliencie (każdy liczy sobie samemu, możesz wykorzystać te same moduły obliczeniowe do budowy i klienta i serwera).

Serwer:

  • odbierz współrzędne ruchu od gracza 1
  • przelicz stan gry
  • jeśli klient wysłał zły ruch - kick
  • wyślij współrzędne ruchu gracza 1 do gracza 2
  • odbierz współrzędne ruchu od gracza 2
  • przelicz stan gry
  • jeśli klient wysłał zły ruch - kick
  • wyślij współrzędne ruchu gracza 2 do gracza 1
    i tak w kółko.

Klient:

  • pobierz ruch od użytkownika (GUI)
  • przelicz stan gry (akceptuj tylko dozwolone ruchy, innych nie pozwalaj robić)
  • wyślij współrzędne własnego ruchu do serwera
  • pobierz od serwera współrzędne ruchu przeciwnika
  • przelicz stan gry
    i tak w kółko.
0

Dodam tylko że gracz 1 jest równocześnie serwerem, więc muszę sprawdzać ruchy lokalnego gracza oraz to co przychodzi od gracza 2.

0

No i pierwsze banalne pytanie co do środowiska ;)

Założenie jest takie aby projekt był wykonany w visual studio 2010, akurat taki mamy z MSDNa. Czy da rady zaimportować warcaby_szablon do VS2010?
Zrobiłem tak:

  • Utworzyłem nowy projekt (Win32 Project - okienkowy), z zaznaczeniem jako "empty project", w innym wypadku już na starcie VS utworzył masę plików o rozmiarze jakiś 500KB czarnej magii ;)
  • Do kompletnie pustego projektu dodałem pliki: *.bmp, main.cpp, main.h, main.obj, warcaby.cpp, warcaby.obj, warcaby.res. Coś jeszcze jest potrzebne??

Problem postał po otwarciu warcaby.cpp, gdzie VS napodkreślał mi całkiem sporo, poczynając od "#include <vcl.h>" - nie znajduje takiej biblioteki jak vcl.h - w jaki sposób mogę ją dograć? ;)
Poprzez "USEFORM("main.cpp", Form1);" - Useform mu sie nie podoba "this declaration has no storage....."

Podejrzewam że już brak vcl.h powoduje sporo kolejnych podkreśleń.

Proszę bardzo o wskazówki dobrych ludzi.... ;) lub na gg które podałem wcześniej, lub nawet przez TeamViewera jakby ktoś miał ochotę zajrzeć co w kodzie piszczy ;)

EDIT: Ok wiem już że biblioteka vcl.h jest z borlanda, w takim razie da się ją dorzucić do Visual Studio czy instalować Borlanda??

Pozdrawiam.

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