Wpis z mikrobloga

#szachy #diagonalchess #przekatneszachy #programowanie #csharp
Jak zapowiadałem w tym wpisie, wpadłem na pomysł stworzenia szachów ze spersonalizowanymi ruchami. Na początek ruchy gońca i królowej będą się odbijać od ścian. Od razu zabrałem się do roboty i mam już pierwsze efekty pracy.

Wszytko robię sam od zera, silnik szachów, programowanie ruchów. Udało mi się do tej pory zaprogramować ruchy pionków i gońca. Wrzucam screen jak w tej chwili to wygląda.

Cały kod źródłowy udostępniam. Jeśli macie czas i ochotę, jestem otwarty na sugestie dotyczące struktury i zastosowanych algorytmów programu. Robię to bez wcześniejszego zaprojektowania więc rozwiązanie nie jest idealne i nie spełnia wielu norm dobrego programowania. Jak macie uwagi, zapraszam do dyskusji a nawet mogę dać dostęp developera, żeby wspólnie nad tym pracować.

Link do źródła: https://github.com/marios160/diagonalchess
m.....0 - #szachy #diagonalchess #przekatneszachy #programowanie #csharp
Jak zapowia...

źródło: comment_1642617270GEVJMXHQx0BUGDmi5orUse.jpg

Pobierz
  • 15
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

via Wykop Mobilny (Android)
  • 3
@marios160: Ja bym zrobił już mała refaktoryzacje:

Figury wiedzą tylko o sobie i co potrafią robić

Plansza wie tylko co i gdzie na niej leży

"Arbiter" wie o planszy i o figurach i wie jakie ruchy są prawidłowe
  • Odpowiedz
@marios160:
Tak na pierwszy rzut oka to strasznie mnie bolą konstrukcje "if (warunek) return true; else return false;". Przecież można napisać "return warunek", np.:

public bool IsOccupied(int row, int col)
{
if (ChessBoard.Pieces.Where(p => p.Row == row && p.Column == col && p.Type != ChessPieceTypes.Dot).Count()
  • Odpowiedz
via Wykop Mobilny (Android)
  • 2
@marios160: i jeszcze bym zrobił klasę Game która wie że kliknąłeś w pionka i pyta się Arbitra o ruchy

"Na a1 da radę pójść?" Nie.

"Na a2 da radę pójść?"
  • Odpowiedz
  • 0
@EmcePomidor2 tu jest tak fajnie zrobione że jest bindowanie danych. Jest kolekcja figur i jak zmieniam im właściwości np. Row i column to one zmieniają miejsce na szachownicy.

Problem z zapisaniem ruchu jest taki że w tej wersji szachów goniec się odbija od ściany i to może być trochę problem.

Spróbuję trochę to pozmieniać jak mówisz i zobaczymy co z tego wyjdzie. Ale lista ruchów to w sumie bardzo dobry pomysł.
  • Odpowiedz
@marios160: chodzi o to że robisz osobny namespace Logic/ i tam są wszystkie reguły i nie ma nic współnego z klikaniem i wyświetlaniem ale jest tip tom

i osobny namespace View/ czy jak to tam nazwiesz i tam można nasrać i tam tez są figury dokładnie tak jak teraz masz ale pytają się Logic/ o wszystko
  • Odpowiedz
@marios160: figura->canMove(beforeX, beforeY, afterX, afterY)

i żadnych liczb typu "7" nie ma tam być. to "Arbiter" niech patrzy czy potencjalny ruch jest poza planszą

tu będzie jakaś matematyka ale sam się na to pisałeś ( ͡° ͜ʖ ͡°) w
  • Odpowiedz
  • 0
@EmcePomidor2 powiem Ci ze mi ćwieka zabiłeś tym pomysłem. Nie umiem ruszyć z miejsca bo nie wiem jak w klasie figury zdefiniować jaki ruch może wykonać. Tak żeby arbiter podawał punkt a i b i figura by zwracała czy może tam się ruszyć.

Ruch skoczka łatwo zapisać np. +2, - 1, ale ruch gońca który odbija się od ścian? Bo jak by się nie odbijał to 1,1;2,2 i tak do 7,
  • Odpowiedz