Proste warcaby online

Proste warcaby online
SI
  • Rejestracja:prawie 13 lat
  • Ostatnio:prawie 13 lat
  • Postów:5
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.

KR
  • Rejestracja:prawie 16 lat
  • Ostatnio:5 miesięcy
  • Postów:2514
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


░█░█░█░█░█░█░█░█░█░█░█░
edytowany 2x, ostatnio: krwq
Zobacz pozostałe 4 komentarze
flowCRANE
@krwq, kolejna gra w którą nie da się grać... Skończ jakąś zanim ją udostępnisz :P
KR
to nie jest gra tylko pokazanie jak się wyświetla mape ;P
Sarrus
@krwq ehh znów się rozpędziłem. Masz rację ciężko by było ;)
unikalna_nazwa
a czemu tam w programie masz 0 - pole czarne / 1 - pole białe? gdzie w takim razie kolejno czarny pionek na czarnym tle, czarny pionek na białym tle, czarna damka na czarnym tle, czarna damka na białym tle itd... ;)
KR
ja ten program pisałem jakieś dwa lata temu i nie pamiętam, możliwe że był tam jakiś bug ;)
SI
  • Rejestracja:prawie 13 lat
  • Ostatnio:prawie 13 lat
  • Postów:5
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?

KR
  • Rejestracja:prawie 16 lat
  • Ostatnio:5 miesięcy
  • Postów:2514
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.


░█░█░█░█░█░█░█░█░█░█░█░
LF
  • Rejestracja:około 13 lat
  • Ostatnio:około 11 lat
  • Postów:29
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)
adf88
  • Rejestracja:ponad 21 lat
  • Ostatnio:prawie 12 lat
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.
edytowany 6x, ostatnio: adf88
SI
  • Rejestracja:prawie 13 lat
  • Ostatnio:prawie 13 lat
  • Postów:5
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.

SI
  • Rejestracja:prawie 13 lat
  • Ostatnio:prawie 13 lat
  • Postów:5
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.

edytowany 1x, ostatnio: sieciowiec
Kliknij, aby dodać treść...

Pomoc 1.18.8

Typografia

Edytor obsługuje składnie Markdown, w której pojedynczy akcent *kursywa* oraz _kursywa_ to pochylenie. Z kolei podwójny akcent **pogrubienie** oraz __pogrubienie__ to pogrubienie. Dodanie znaczników ~~strike~~ to przekreślenie.

Możesz dodać formatowanie komendami , , oraz .

Ponieważ dekoracja podkreślenia jest przeznaczona na linki, markdown nie zawiera specjalnej składni dla podkreślenia. Dlatego by dodać podkreślenie, użyj <u>underline</u>.

Komendy formatujące reagują na skróty klawiszowe: Ctrl+B, Ctrl+I, Ctrl+U oraz Ctrl+S.

Linki

By dodać link w edytorze użyj komendy lub użyj składni [title](link). URL umieszczony w linku lub nawet URL umieszczony bezpośrednio w tekście będzie aktywny i klikalny.

Jeżeli chcesz, możesz samodzielnie dodać link: <a href="link">title</a>.

Wewnętrzne odnośniki

Możesz umieścić odnośnik do wewnętrznej podstrony, używając następującej składni: [[Delphi/Kompendium]] lub [[Delphi/Kompendium|kliknij, aby przejść do kompendium]]. Odnośniki mogą prowadzić do Forum 4programmers.net lub np. do Kompendium.

Wspomnienia użytkowników

By wspomnieć użytkownika forum, wpisz w formularzu znak @. Zobaczysz okienko samouzupełniające nazwy użytkowników. Samouzupełnienie dobierze odpowiedni format wspomnienia, zależnie od tego czy w nazwie użytkownika znajduje się spacja.

Znaczniki HTML

Dozwolone jest używanie niektórych znaczników HTML: <a>, <b>, <i>, <kbd>, <del>, <strong>, <dfn>, <pre>, <blockquote>, <hr/>, <sub>, <sup> oraz <img/>.

Skróty klawiszowe

Dodaj kombinację klawiszy komendą notacji klawiszy lub skrótem klawiszowym Alt+K.

Reprezentuj kombinacje klawiszowe używając taga <kbd>. Oddziel od siebie klawisze znakiem plus, np <kbd>Alt+Tab</kbd>.

Indeks górny oraz dolny

Przykład: wpisując H<sub>2</sub>O i m<sup>2</sup> otrzymasz: H2O i m2.

Składnia Tex

By precyzyjnie wyrazić działanie matematyczne, użyj składni Tex.

<tex>arcctg(x) = argtan(\frac{1}{x}) = arcsin(\frac{1}{\sqrt{1+x^2}})</tex>

Kod źródłowy

Krótkie fragmenty kodu

Wszelkie jednolinijkowe instrukcje języka programowania powinny być zawarte pomiędzy obróconymi apostrofami: `kod instrukcji` lub ``console.log(`string`);``.

Kod wielolinijkowy

Dodaj fragment kodu komendą . Fragmenty kodu zajmujące całą lub więcej linijek powinny być umieszczone w wielolinijkowym fragmencie kodu. Znaczniki ``` lub ~~~ umożliwiają kolorowanie różnych języków programowania. Możemy nadać nazwę języka programowania używając auto-uzupełnienia, kod został pokolorowany używając konkretnych ustawień kolorowania składni:

```javascript
document.write('Hello World');
```

Możesz zaznaczyć również już wklejony kod w edytorze, i użyć komendy  by zamienić go w kod. Użyj kombinacji Ctrl+`, by dodać fragment kodu bez oznaczników języka.

Tabelki

Dodaj przykładową tabelkę używając komendy . Przykładowa tabelka składa się z dwóch kolumn, nagłówka i jednego wiersza.

Wygeneruj tabelkę na podstawie szablonu. Oddziel komórki separatorem ; lub |, a następnie zaznacz szablonu.

nazwisko;dziedzina;odkrycie
Pitagoras;mathematics;Pythagorean Theorem
Albert Einstein;physics;General Relativity
Marie Curie, Pierre Curie;chemistry;Radium, Polonium

Użyj komendy by zamienić zaznaczony szablon na tabelkę Markdown.

Lista uporządkowana i nieuporządkowana

Możliwe jest tworzenie listy numerowanych oraz wypunktowanych. Wystarczy, że pierwszym znakiem linii będzie * lub - dla listy nieuporządkowanej oraz 1. dla listy uporządkowanej.

Użyj komendy by dodać listę uporządkowaną.

1. Lista numerowana
2. Lista numerowana

Użyj komendy by dodać listę nieuporządkowaną.

* Lista wypunktowana
* Lista wypunktowana
** Lista wypunktowana (drugi poziom)

Składnia Markdown

Edytor obsługuje składnię Markdown, która składa się ze znaków specjalnych. Dostępne komendy, jak formatowanie , dodanie tabelki lub fragmentu kodu są w pewnym sensie świadome otaczającej jej składni, i postarają się unikać uszkodzenia jej.

Dla przykładu, używając tylko dostępnych komend, nie możemy dodać formatowania pogrubienia do kodu wielolinijkowego, albo dodać listy do tabelki - mogłoby to doprowadzić do uszkodzenia składni.

W pewnych odosobnionych przypadkach brak nowej linii przed elementami markdown również mógłby uszkodzić składnie, dlatego edytor dodaje brakujące nowe linie. Dla przykładu, dodanie formatowania pochylenia zaraz po tabelce, mogłoby zostać błędne zinterpretowane, więc edytor doda oddzielającą nową linię pomiędzy tabelką, a pochyleniem.

Skróty klawiszowe

Skróty formatujące, kiedy w edytorze znajduje się pojedynczy kursor, wstawiają sformatowany tekst przykładowy. Jeśli w edytorze znajduje się zaznaczenie (słowo, linijka, paragraf), wtedy zaznaczenie zostaje sformatowane.

  • Ctrl+B - dodaj pogrubienie lub pogrub zaznaczenie
  • Ctrl+I - dodaj pochylenie lub pochyl zaznaczenie
  • Ctrl+U - dodaj podkreślenie lub podkreśl zaznaczenie
  • Ctrl+S - dodaj przekreślenie lub przekreśl zaznaczenie

Notacja Klawiszy

  • Alt+K - dodaj notację klawiszy

Fragment kodu bez oznacznika

  • Alt+C - dodaj pusty fragment kodu

Skróty operujące na kodzie i linijkach:

  • Alt+L - zaznaczenie całej linii
  • Alt+, Alt+ - przeniesienie linijki w której znajduje się kursor w górę/dół.
  • Tab/⌘+] - dodaj wcięcie (wcięcie w prawo)
  • Shit+Tab/⌘+[ - usunięcie wcięcia (wycięcie w lewo)

Dodawanie postów:

  • Ctrl+Enter - dodaj post
  • ⌘+Enter - dodaj post (MacOS)