[Delphi] Terminarz spotkan. Jak rozwiązać?

0

To jest terminarz rozgrywek :)

Terminarz : array[1..8, 0..20, 0..20] of String;

pod [1..8] sa juz nazwy zespolow
pod I [0..20] podstawiam druzyne przeciwna a wywolanie-odczyt tego zalatwia mi juz numer kolejki w ktorej ma sie odbyc spotkanie np 12 Teminarz[1,12,12]
czyli : Druzyna 1 w 12 kolejce spotka sie z Druzyna 5 na wyjzezdzie
pod II [0..20] podstawiam gdzie odbywa sie mecz (dom,wyjazd,teren neutralny)

Problem w tym ze ja to wpisuje wszystko recznie i idzie latwo sie pomyslic :[ :)

Znajac uklad spotkan kolejek jak to mozna sensowniej zrobic ? probowalem sam ale jeszcze do tego nie doszedlem. Myslalem zeby te druzyny dac do jakis mniejszych tablic,albo kazda kolejka w osobnej tablicy..ech. Macie jakies pomysly?
Kolejka 1
Druzyna 1 : Druzyna 2
Druzyna 3 : Druzyna 4
Druzyna 5 : Druzyna 6
Druzyna 7 : Druzyna 8
Kolejka 2
Druzyna 6 : Druzyna 7
Druzyna 8 : Druzyna 3
Druzyna 4 : Druzyna 1
Druzyna 2 : Druzyna 5
itd...
Jezeli cos nie jest jasne to piszcie tutaj albo na gg:2718965

0

Jesli mogę coś zaproponować to może zamiast tablicy uzyj list. Pomijając już fakt że będzie to nowocześniejsze, bardiej elastyczne i bezproblemowe gdy np. zreformują ligę i dołozą dwa zespoły, albo cos, że będą play-offy (np jak w koszykówce, lub żużlu) a to inaczej tzreba zapisać.
Pomysł jest prosty:
Robisz obiekt Liga, w nim masz rok opis itd itp, a zarazem liste etapów - np runda jesienna runda wiosenna.
Potem tworzysz etap_rozgrywek (obiekty) - jak są tego samego typu (nie ma playoffow ) to jeszcze latwiej bo tylko jeden typ. Kazdy etap (obiekt) jest przypisany do listy w lidze (takie podejscie pozwala na dowolne zmiany w ilosci etapow, ich typie itd, po prostu dodaje się do listy). Tutaj wypadałoby mieć listę kolejek.
Teraz tworzysz obiekt kolejka, podpięty pod obiekt etap_rozgrywek, który będize zawierał listę spotkań. Obiekt kolejka może mieć - jesli nie wyliczasz tego dynamicznei podpięty obiekt - typu kolejność po kolejce - w jakeij formie dynamicznej czy tabeli czy inaczej dowolnie.
Na koniec tworzysz obiekty spotkania w których zawierasz kto z kim gdzie, jak , kto sędziował, grął, dostał kartki itd itp ile wyobraźnia pozwoli. Spotkanai są podpinane do kolejek.

Taki z grubsza, bo możesz zrezygnowac z etapów, czy je uprościć. W spotkanaich możesz mieć minimum informacji, ale jak będizesz chciał dodać np. kto ędziował wystarczy zmienić klasę TSpotkanie i wprowadzac dane. Możesz też wprowadzić listę drużyn do obeiktu Liga i wybierać z listy podczas tworzenia meczu, możesz dołożyć stadiony i zawierać o nich informację, itd itp. Każdy pomysł na zwiększenei informacji jest prosty w realizacji - dokładasz do istniejącej struktury kolejne klasy - a dzięki nim tworzysz i podpinasz nowe obiekty. Tablica wymusza liniowe podejście i utrudnai zycie, bo teraz do meczu dołóż 4 sędziów.... W klasie TSpotkanie dokładasz listę Sedziowie i na niej umieszczasz obiekty klasy TSedzia (np. Imie Nazwisko, Wiek). A pomyśl jak to w tablicy zrobić...
A teraz dodaj ukaranych kartkami, żółtymi, czerwonymi, itd itp, stzrelców goli - zaczyna się problem z tablicą bo ile miejsca przeznaczyć i jak to zrobić. A tak w TSpotkanie lista Zdarzenie, a na niej podpięte obiekty TZdarzenie (zawodnik,czas,typ zdarzenia(zolta kartka, kontuzja, strzelenie gola), opis (oplucie sedziego, złamanie nogi, samobójczy itp) ).
A co do wklepywania danych - będzie monotonne, ale jeśli masz termianrz w formie elektroniczne to mozesz zrzucic do sformatowanego pliku tekstowego i sobei wczytac, program do wczytania i interpretacji napiszesz maks. w godzine i wczytujesz z automatu.
Andzrej Dąbrowski

0

Swietnie jak ja opanowalem tablice to teraz trzeba zrobic przesiadke na listy :)
Przeczytalem artykul Sheitara o listach ale wszystkiego jeszcze nie zrozumialem...bede eksperymentowal zreszta jak zawsze :)
daban a moglbym Cie prosic o kawalek programu ? chodzi mi o same zaczecie...co w czym ma sie znajdowac bo na dzien dzisiejszy teoretycznie jest mi to sobie trodno wyobrazic a na przykladzie powinienem dac sobie rade

Obiekt Liga. Etap rozgrywek - Runda zasadnicza runda playoff.
Obiekt kolejka z podpietym obiektem-czyli kto z kim i kiedy
Obiekt spotkan-wyniki,kontuzje

0

Sugeruję: http://4programmers.net/Delphi/Artykuły/Klasy
A listę do klasy dodajesz wpisując w public klasy etap:
Lista_Kolejek:TList;

Przy tworzeniu obiektu:
self.Lista_Kolejek:=TList.Create;

Przy niszczeniu obiektu, musisz opróznić listę z obiektów, a na końcu ją skasować np.
for i:=0 to self.Lista_Kolejek.Count-1 do
begin
Kolejka:=self.Lista_Kolejek[0];
self.Lista_Kolejek.Remove(Kolejka);
Kolejka.Free;
end;
self.Lista_Kolejek.Free;

Obiekty dodajesz do listy Lista_Kolejek.Add(Kolejka);

Wszystko pisane z palca (mogą być literówki) ale powinno chodzić. Co bedziesz rozumiał jako kolejka itd to już od ciebie zależy jak skonstruujesz klase.

0

Wielkie dzieki daban! O to mi wlasnie chodzilo :)
W artykule o klasach (link wyzej u dabana) na koncu jest napisane "Możesz tutaj ściągnąć przykładowy program korzystający z klas i modułów. Jest to przykładowa prosta gra - manager. Znajdziesz go w dziale Kody źródłowe." Szukalem i nic nie znalazlem.
Nie wie ktos jak ten plik moze sie nazywac...a jak juz go czasem nie ma na serwerze to moze ktos ma na hdd ?

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0