Temat: oprogramowanie deski szachowej
Kacper Oczkoś:
To tak na szybko.
Ja bym użył zwykłej tablicy 8x8 zawierającej obiekty (figury) + info o pozycji króli aby ich nie szukać za każdym razem
Uzasadnienie:
Przy sprawdzaniu poprawności ruchów potrzeba sprawdzić czy dana figura porusza się w odpowiedni sposób (proste na podstawie samego ruchu), trzeba sprawdzić czy pole na które się porusza (i w przypadku figur poruszających się na wprost, sprawdzić czy nie ma figur po drodze), należy sprawdzić jak zmiana pozycji figury ma się do szachowania, któregoś króla (w tym celu należy sprawdzić co króle "widzą" po ruchu), jeśli nie poruszamy się skoczkiem to wystarczy sprawdzić 8 kierunków króla, w przypadku ruchu skoczkiem trzeba sprawdzić jak dany ruch ma się do szachowania króla (sprawdzić co po ruchu skoczek będzie "widział").
Ciekawe czy coś w tej części pominąłem.
Obiekty figur:
Pion powinien mieć możliwość "zapamiętania", że można go bić w przelocie (zmienna zapisywana po odpowiednim ruchu i zerowana po kolejnym) oraz info o promocji (na jaką figurę został promowany)
Wieża - info o możliwości roszady (czy się poruszała).
Król - info o tym czy jest pod szachem i info możliwości roszady (czy się poruszał)
Podczas sprawdzania możliwości roszady (ruch królem o 2 pola) należy sprawdzić co z wieżą (czy jest na swoim miejscu i umożliwia roszadę) oraz czy pole przez które przechodzi król nie jest pod szachem.
Pewnie coś pokręciłem (nie jestem ekspertem w szachach... hehe...) no i oczywiście coś na pewno pominąłem...
Pozdrawiam
Kacper
No raczej wszystko co potrzebne opisałeś. Ja mam pomysł taki, żeby:
- matrix 2x2 z figurami.
- osobne metody w klasie do sprawdzenia, czy pionek może się poruszyc na dane docelowe pole (funkcje z 3 parametrami: pole bazowe, pole docelowe, kolor piona, typ piona)
- osobna metoda dla danego typu figury, krol, hetman, goniec, skoczek, wieza, pion.
- przy kazdym ruchu sprawdzamy dla danej bierki po kolei wszystkie metody:
- czy nie odstawiam krola na szach?
- czy bicie? (czy moge?)
- czy szach dla krola przeciwnika?
- czy mat?
- czy mata dostalem?
- czy remis? (czy pat? czy 3-krotny ten sam ruch? czy brak odpowiednich figur do zamatowania? [np. skoczek+krol = za malo]).
- czy roszada krotka? (czy moge?)
- czy roszada dluga? (czy moge?) (czy droga szachowana?) (czy krol sie ruszyl?) (czy wieza ruszyla? która? lewa? prawa?)
- czy bicie w przelocie? (jeśli pion?) (jeśli moge?)
- czy promocja piona? (czy moge?)
puff, narazie tyle przychodzi mi do glowy jak cos jeszcze macie to piszcie.
Generalnie juz raz gryzłem ten projekt, ale jest to bardzo trudna sprawa, czy mi ktos wierzy czy nie. I nadaje sie moim zdaniem nawet na wypasiona prace dyplomowa.
Jakub Świegot edytował(a) ten post dnia 28.01.08 o godzinie 21:54