forum speccy.pl

ZX Spectrum => RÓŻNOŚCI => Wątek zaczęty przez: Ziutek w 2015.02.04, 00:08:07

Tytuł: BootChess
Wiadomość wysłana przez: Ziutek w 2015.02.04, 00:08:07
Rekord świata - 487 bajtów
http://www.pouet.net/prod.php?which=64962
Tytuł: Odp: BootChess
Wiadomość wysłana przez: Phonex w 2015.02.04, 12:40:04
Skoro dało się polecieć na Księżyc z 74kB... ;)
Ale szacun. Nie spodziewałem się że da się napisać taki krótki.
Tytuł: Odp: BootChess
Wiadomość wysłana przez: ZbyniuR w 2015.02.04, 14:15:59
Jak widać jakiś tępy jestem bo nie udało mi się tego uruchomić.  :D

Widziałem kiedyś na CPC szachy w 1KB w Basicu. A żeby nie przekroczyć 1K na dysku, to pamiętając o nagłówku pliku listing nie może przekraczać 895 bajtów. :)
Miał zdefiniowany wygląd pionków jako znaki. Wyświetlał ładną planszę co zajmowało ok 1/4 programu. Ruchy wprowadzało się podając współrzędne. Ale nie miał żadnej inteligencji. Po prostu pionek znikał ze starego pola i pojawiał się na nowym. Nie sprawdzał czyj jest ruch, ani czy taki ruch jest dozwolony ani czy to koniec gry. Można było np dowolnym pionkiem czarnym lub białym od razu skasować dowolny pionek np króla. I nawet nie wyświetlił komunikatu że coś jest nie tak. Ale jeśli mnie pamięć nie myli, to można było cofnąć ostatni ruch. I jestem ciekaw czy ten programik jest bystrzejszy.
Tytuł: Odp: BootChess
Wiadomość wysłana przez: RafalM w 2015.02.04, 16:06:19
Z tego co przeczytałem to program gra w "prawie poprawne" szachy:

Nie ma:
- roszady
- bicia w przelocie
- zamiany pionka na ostatniej linii w dowolną figurę (zawsze bierze hetmana)

Trochę sie interesowałem programowaniem szachów i mogę powiedzieć że rezygnacja z dwóch pierszych ruchów nie jest bez przyczyny. Ich uwzględnienie w generowaniu listy prawidłowych ruchów powoduje że algorytm się robi kilka razy bardziej skomplikowany.

Można oczywiście twierdzić że jeśli program nie realizuje wszystkich zasad gry w szachy to nie są to szachy i już. Ale na tej zasadzie np. nikt z nas na podwórku nie grał w piłkę bo olewaliśmy spalone :)

A program oczywiście jest głupi, ale nie ma się czemu dziwić przy takim rozmiarze.
Tytuł: Odp: BootChess
Wiadomość wysłana przez: ZbyniuR w 2015.02.04, 17:03:05
No to jestem pod wrażeniem, że aż tyle zmieścili. :)

Przyznam że proste Szachy w Basicu są na mojej liście kilkudziesięciu pomysłów jakie chciałbym kiedyś zrealizować.
Do planszy z pionkami jakie opisałem wcześniej, tyle że większej (pola 16x16), dodałbym zezwalanie tylko na prawidłowe ruchy, w tym roszada i sprawdzanie czy jest szach. Sterowanie strzałkami lub joyem, cofanie, zapis i odczyt stanu planszy, oraz wykonywanie przypadkowych ruchów w grze z komputerem. Dla takiego amatora jak ja i tak byłby to trudny przeciwnik. hahaha  Choć w miarę prosto dałoby się też zrobić by preferował ruchy w których bije figury, lub choćby pionki.

I do tego Warcaby, z wyborem czy można bić do tyłu czy nie. (Bo różnie ludzie grają). I myślę że całość powinna się zmieścić w 3 KB. :) Mógłby też sprawdzać czy masz bicie (bo za niebicie tracisz życie).

Co to jest bicie w przelocie?
Tytuł: Odp: BootChess
Wiadomość wysłana przez: zx81 w 2015.02.04, 20:35:02
Zbijasz pionka chociaz go tam fizycznie nie ma bo skoczyl o jedno pole dalej.
Tytuł: Odp: BootChess
Wiadomość wysłana przez: RafalM w 2015.02.04, 20:47:58
Cytuj
http://pl.wikipedia.org/wiki/Pion_%28szachy%29#Bicie_w_przelocie
:)

Jakbyś się kiedyś na poważniej wziął za pisanie tych szachów, to służę poradą.

Cytuj
Choć w miarę prosto dałoby się też zrobić by preferował ruchy w których bije figury, lub choćby pionki.


Wcale nie jest łatwo zrobić by bił pionki lub figury tak by w następnym ruchu samemu nie zostać zbitym i nie wyjść na tym w plecy.

Jak to zrobisz to już masz ponad 50% silnika.

Zasadniczo obecnie w szachach jest standardowe podejście do stworzenia AI, doskonalone przez lata którego raczej sam od zera nie wymyślisz - algorytm MINIMAX.

Możesz spróbować poczytać, np. tutaj, chociaż z drugiej strony na starcie może to być zbyt trudne:

www.strony.toya.net.pl/~sierzant29/program_grajacy_w_szachy.doc
Tytuł: Odp: BootChess
Wiadomość wysłana przez: Amun-Ra w 2015.02.04, 20:57:33
Ja bym pograł sobie kiedyś w ośmiobitowe Shogi lub w Xiangqi. Ale na pisanie tego nie mam czasu. :>
Tytuł: Odp: BootChess
Wiadomość wysłana przez: ZbyniuR w 2015.02.04, 23:31:50
Rany skąd ty znasz takie nazwy?  - Ja z dalekowschodnich klocków to lubiłem pograć jedynie w Madżonga, ale w to się nie da na dwóch. Chyba...

Poważnie to się pisze za pieniądze, a ja pisuję tylko dla jaj. Dobrych programów szachowych na CPC nie brakuje. Gdzieś kiedyś czytałem że Cyrus 2 ogrywał programy na innych 8bitowcach. (choć jest raczej najładniejszy a nie najlepszy). ;) 
Ale takiego którego napisałem sam jeszcze nie ma.
Mój siostrzeniec mnie ogrywa odkąd skończył 6 lat, potem już jedynie we warcaby czasem z nim wygrywałem. Z komputerem nigdy nie wygrałem nawet jak ustawiałem najłatwiejszy poziom i cofałem sobie ruchy niezliczoną ilość razy, także o naście ruchów wstecz. To i tak zawsze mnie rozwalał. I chciałem sobie zrobić taki z którym bym umiał wygrać. :D Więc to nie ma być dobry program, bo musi słabiej przewidywać czy ruch mu się opłaca niż ja. ;)

Pierwszy raz słyszę o biciu w przelocie. :)
Tytuł: Odp: BootChess
Wiadomość wysłana przez: Amun-Ra w 2015.02.05, 16:23:02
W Shogi od jakiegoś czasu gram, dużo ciekawesza gra od szachów, w chińskie też bym pograł z chęcią, ale z braku czasu skończyło się na razie na ogólnym poznaniu zasad gry. :>
Tytuł: Odp: BootChess
Wiadomość wysłana przez: RafalM w 2015.02.05, 16:33:01
Cytuj
W Shogi od jakiegoś czasu gram, dużo ciekawesza gra od szachów

Podziwiam.  Sprawdziłem hasło na Wiki i nie jestem w stanie odróżnić bierek od siebie :)

(http://upload.wikimedia.org/wikipedia/commons/a/a6/Shogi_Ban_Koma.jpg)
Tytuł: Odp: BootChess
Wiadomość wysłana przez: Amun-Ra w 2015.02.05, 20:41:43
Wybrałeś akurat klasyczny, najtrudniejszy dla oka, zestaw pionków. :> Jest jeszcze japoński uproszczony, jest taki zapisywany alfabetem łacińskim oraz wzorowany na szachach klasycznych. Ale nie chcę robić offtopa.