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