Skocz do zawartości

[MikroKonkurs] Stream


Toster

Polecane posty

Konkurs o strumyczkach :) Jako ze strumyczki fajne sa kazdy wie i warto umiec totto uzywac :)

 

O co kaman ?

W konkursie tym trzeba bedzie napisac strumyczki, rzeczke, jeziorko, tamke :)

teraz bedzie ta bardziej sneaky rzecz: zarowno strumyczki, rzeczka, jak i jeziorko powinna dziedziczyc po klasie TStream, i byc w pelni z nia kompatybilna (trudne slowo).

Teraz jak to dziala ?

Klasa TStrumyczek ma konstruktor taki

Create(const wydajnosc: integer;const kolor: char);

wydajnosc mowi ile bajtow mozna odczytac ze strumyczka w czasie 10 sekund. Czyli jesli na tej klasie bedziemy wykonywac metode Read to w czasie 10 sekund mozemy odczytac conajwyzej 'wydajnosc' bajtow. Jesli wydajnosc jest przekroczona to metoda nic nie odczytuje (count = 0). Jak uplynie odpowiedni czas to zowu bedzie mozna odczytac. Kolor mowi jaki znak bedzie zwracany ze strumyczka. Czyli mowiac wprost read powinno zwracac odpowiednia ilosc takich samych znakow jak 'kolor'.

Przyklad

Strumyczek := TStrumyczek.Create(5, 'A');

Strumyczek.read(buf, 10);

 

buf = 'AAAAA';//5 x A, bo wydajnosc jest 5, po kolejnych 10 s znowu mozna odczytac 5, wczesniejsze odczyty daja 0

 

Rzeczka.

Jak to wszyscy wiemy, strumyczek do strumyczka i mamy rzeczke :)

rzeczka powinna miec metode ktora mozna do niej podpiac strumyczki.

czytajac z rzeczki dostajemy bajty takie jak ze tworzacych ja strumyczkow. Przy czym im grubszy strumyczek tym wiecej bajtow z niego powinno plynac w okreslonym czasie. Wydajnosc rzeczki jest rowna wydajnoscia strumyczkow.

 

Jeziorko.

To zbiorniczek ktory z jednej strony ma tamke, a z drugiej rzeczke. Jeziorko ma okreslona pojemnosc po przekroczeniu ktorej jest powodz (wiecej danych nie moze wplynac do jeziorka, zaznacza sie flaga powodz)

 

Tamka.

Jest podlaczona do jeziorka, i reguje na jego poziom. Po przekroczeniu 80% pojemnosci jeziorka tama sie otwiera. Tama ma stala wydajnosc co do spuszczania wody z jeziorka.

 

przyklad kodzika:

KOD

var

t: integer;

Rzeczka: TRzeczka;

Jeziorko: TJeziorko;

Tamka: TTamka;

begin

Rzeczka := TRzeczka.create;

For t := 0 to 10 do

Rzeczka.AddStrumyczek( TStrumyczek.Create(20+Random(100), Chr(65+t));

Tamka := TTamka.Create(500); //wydajnosc tamki

Jeziorko := TJeziorko.Create(rzeczka, tamka, 3500); //3500 pojemnosc jeziorka

repeat

Jeziorko.Update;

until false;

end;

 

 

Kod jest przykladowy aby latwiej przelknac moj belkot ;)

 

proponowany koniec konkursa: 12-05-2008

 

Punktejszyn:

+1 za czysto napisany kod

+1 za wizualizacje jak to wszystko dziala

+1 jesli wszystko dziala

 

Wiecej punktow nie przychodzi mi do glowy, jakies wasze propozycje ?

Always Dark<br />u1_tt_logo.png banner-1.pngexFabula-banner.pngson_banner_ubersmall.jpg

Link do komentarza
Udostępnij na innych stronach

proponuje jeszcze zrobić coś takiego:

+1 pkt jeśli każda rzecz jest na osobnym wątku (lub +2 jeśli jest spełniony pkt2 na mojej liście)

+2 pkt jeśli rzeczka może wpadać do rzeczki oraz wychodzić z jeziora/tamy. Czyli innymi słowy można zmontować system rzeczny.

Jako rzecz obowiązkowa: istnieje coś a'la morze, co ma nieograniczoną pojemność i do niego wpływają rzeki (czyli każda rzeka gdzieś trafi) To nie wyklucza powodzi.

Druga rzecz obowiązkowa- strumyczki mają swoję żródła co wpychają wodę w źródła ( tu też może zdarzyć się wiec powódź)

+1 pkt jeśli spełniono te punkty co wymieniłem za wyjątkiem tego z wątkami (nie jest konieczny)+ zmienne warunki pogodowe co powoduje, że część wody znika w czasie płynięcia(jak wali słońce), zwiększa się (jak leje), przepustowość maleje gdy jest lód (który się moze topić przez słońce)

Sam nie wiem czy takie rzeczy napisze co sam wymieniłem i czy takie zaawansowanie nie powoduje, że nie da się użyć strumieni, więc czekam na komentarze :)

Baza tysięcy lotnisk: http://airportsbase.com

Link do komentarza
Udostępnij na innych stronach

Dlatego nie większość mych rzeczy jest jako dodatkowa, a te co jako obowiązkowe to mówisz, że już są. Bo wg mnie 2 tygodnie to dużo czasu, ale jak ktoś chce to nie musi pisać, ja nie wiem czy dodatkowo zrobię, ale warto aby jak ktoś ma czas wiedział co zrobić dla dodatkowych punktów, bo w 2 tygodnie to co Toster napisał spokojnie da się zrobić, to aby nie było 3 zwycięzców :D

Jakby Toster je napisał od razu to byś się nie kłócił :P

Baza tysięcy lotnisk: http://airportsbase.com

Link do komentarza
Udostępnij na innych stronach

  • 2 weeks later...

nie wiedziałem , o nie... teraz ściągniesz z mojego nieudolnego kodu wszystko xDD [joke] xD

 

Oj, ktoś tu walkoverem pojechał ;) ... dlaczego... dlaczego?! xD

 

@Toster - mam nadzieję, że w nagrode mi ładnie napiszesz co jest źle, poza tym, że wszystko:) i dasz jakieś wskazówki jak to ładniej zrobić.

Moje projekty: http://wojciechkulik.pl

Link do komentarza
Udostępnij na innych stronach

Zarchiwizowany

Ten temat jest archiwizowany i nie można dodawać nowych odpowiedzi.

×
×
  • Utwórz nowe...