janeks napisał(a)
A ja bym miał problem sobie z tym poradzić gdyby pionki były w osobnych komponentach.
Tylko myślisz, że miałbyś problem, bo tego póki co nie widzisz; Z komponentami sprawa jest prostsza, bo nie ma tylu obliczeń; W każdym z komponentów pionka można przechować dodatkowe informacje we właściwości Tag
; Przy kliknięciu na dany komponent pobrać ten tag (w którym możne być np. typ pionka) i na podstawie choćby nazwy czy pozycji sprawdzić w którym miejscu się znajduje i jakie można nim wykonać ruchy; Możliwości jest mnóstwo - trzeba tylko spróbować;
Rysowanie na jednym komponencie to same obliczenia (dla wiedzących o co chodzi to także nie problem), które także można fajnie wykonać i połączyć z macierzą przechowującą np. enumy typu pionka; Tyle że trzeba ręcznie rysować, ale po np. TPaintBox
czy nawet gołym formularzu to także nie problem; Z animacją było by gorzej w tym przypadku, bo problem sprawiałoby poprawne odrysowywanie kratek, ale to też można rozwiązać;
Możliwości jest wiele, więc jest o czym dyskutować; Natomiast poleciłem rozwiązanie z wieloma komponentami, bo według mnie jest łatwiejsze, a sam pytacz jakoś wiedzą nie zaskakuje, więc mógłby to zrobić z mniejszą ilością pytań; Dla mnie to obojętne, ale to nie ja mam zrobić ten program, więc staram się doradzić coś w miarę łatwego dla pytacza; Jeśli chce malować na jednym komponencie - proszę bardzo, nie jest to trudne; Tyle że pytacz najpierw bierze się za rysowanie, które na początku nie jest najważniejsze; Najpierw skupiłbym się na samym silniku gry, który będzie obsługiwał zasady, a dopiero później bawiłbym się z grafiką; Takie jest moje zdanie, choć każdy widzi to inaczej;
lisq93 napisał(a)
Tablica jest rysowana, a pionki powstawiane w Timage, po 12 z kazdego koloru. Zeby mozna bylo nimi poruszac to trzeba uzyc ktoregos ze zdarzen OnMouse, a nastepnie opisac gdzie moga sie poruszac, a gdzie nie? Tak bedzie na tyle trywialnie zebym mógł to zrobić ?
Komponenty komponentami, ale tablicę np. enumów z informacjami o pionkach i ich rozmieszczeniem i tak będzie trzeba mieć, dlatego że komponenty służyć miały by jedynie do wyświetlania, a cała gra zapisana była by w tablicy w pamięci; Po kliknięciu (OnMouseUp
lepiej) wysyłasz tag
komponentu do mechanizmy zarządzającego grą, a ten sprawdza jakie ma ruchy itd., ewentualnie go przemalowuje aby zaznaczyć, że został kliknięty;
W obu przypadkach będziesz musiał rozdzielić mechanikę gry od grafiki, więc samo malowanie musi być oddzielone od silnika obliczającego możliwości ruchu; Może najpierw zastanów się którą wersję chcesz zaimplementować, a już nie będę Ci przedstawiał różnych możliwości, tylko skupimy się na tym, co chcesz zrobić.