Mini Tetris

Transkrypt

Mini Tetris
InternationalOlympiadinInformatics2016
12-19thAugust2016
Kazan,Russia
tetris
day0_2
Country:api-POL
MiniTetris
Popularnagrakomputerowa"Tetris"zostaławymyślonaprzezrosyjskiegoprogramistę
Alexey'aPajitnova.Wtymproblemie,musisznapisaćprogram,którybędziegrałw
uproszczonąwersjętejgry.
Planszagogryjestprostokątem,zwanym"studnią".Losowefiguryzłożonez
kwadratowychklocków(orozmiarzejednostkowym)pojawiająsięnagórzestudni,a
graczdecydujeopozycjitejfigurywpoziomie,atakżeojejobrocie.Potymfigura
spadanadółstudni.Celemgryjesttworzeniepoziomychliniiwypełnionychklockami
bezdziur.Kiedytakaliniazostajestworzona,znikaonazestudni,awszystkieklocki
powyżejtejliniispadająwdół.
Wtejmodyfikacjigry,studniamarozmiar 3 × 4 jednostki,imamyjedynietrzyrodzaje
figur:
Typ Figura
1
2
3
Grajestprzegrana,jeżeliwpewnymmomenciewstudniznajdujesiępięćniepustych
linii.Grajestwygrana,jeżeliniejestprzegrana,pospadku n figur.
Twoimzadaniemjestnapisanieprogramu,którygrawopisanąpowyżejgręiwygrywa
niezależnieodfigur,którepojawiąsięwtrakciegry.
Szczegółyimplementacyjne
Powinieneśzaimplementowaćnastępująceczteryfunkcje(metody):
vo idinit(intn).Tafunkcjajestwywoływanaprzedwywołaniemkażdejinnej
funkcji.
vo idne w_figure (intfigure _type ).Tafunkcjawywoływanajest,kiedypojawia
sięnowafigura.figure _type jestliczbąod 1 do 3 ,wskazującątypfigury,
1/3
zgodnieztabeląpowyżej.
intge tPo sitio n().Tafunkcjapowinnazwrócićliczbęod 0 do 2 ,pozycję
pierwszegoodlewejstronyklockaostatniejfigury.
intge tRo ta tio n().Tafunkcjapowinnazwrócićliczbęod 0 do 3 ,liczbęobrotów
figuryprzeciwniedoruchuwskazówekzegara.
Funkcjege tPo sitio nige tRo ta tio nbędąwywoływanejedyniepowywołaniu
ne w_figure .
Wzałączonymprzykładowychplikachmożeszsprawdzićszczegółyimplementacyjnew
Twoimjęzykuprogramowania.
Przykład
Programsprawdzającywywołujekolejnofunkcjeznastępującymiparametrami:
init(3).Pojawiąsiętrzyfigury.
ne w_figure (1).Figuratypu 1 spadazgórystudni.
ge tPo sitio n()zwraca 0 .Toznaczy,żegraczchceustawićklocekwpierwszej
kolumnieodlewejstrony.
ge tRo ta tio n()zwraca 1 (lub 3 ).Toznaczy,żegraczchceustawićfigurę
pionowo.
Potym,jaktafiguraupadła,planszawyglądanastępująco:
ne w_figure (2).
ge tPo sitio n()zwraca 1 .
ge tRo ta tio n()zwraca 1 .
Potymjaktakfiguraupadnie,pierwszaoddołuliniajestwypełniona,zatemznika,
acałastudniawyglądanastępująco:
ne w_figure (1).
ge tPo sitio n()zwraca 1 .
ge tRo ta tio n()zwraca 0 (lub 2) .
Potym,jakupadaostatniafigura,drugaliniajestwypełniona,zatemznika,a
2/3
studniawyglądanastępująco:
Podzadania
Wewszystkichpodzadaniach n
≤ 1000 .
1. (7punktów)Wszystkiefigurymajątyp 1 ,
2. (13punktów)Wszystkiefigurymajątyp 2 ,
3. (21punktów)Wszystkiefigurymajątyp 3 ,
4. (53punkty)Figurymogąmiećróżnetypy.
Przykładowyprogramsprawdzający
Przykładowyprogramsprawdzającywczytujedanewnastępującymformacie:
wiersz1:liczbacałkowita n .
wiersz2: n liczbcałkowitych:typyfigur.
Językiprogramowania
SzczegółyimplementacjiwTwoimjęzykuprogramowaniaznajdująsięwdostarczonych
plikachzszablonami.
3/3