Opis wyzwania
Musisz pokazać symulację deszczu w terminalu.
W podanym poniżej przykładzie jego losowe dodanie 100 kropel deszczu (użyj domyślnej funkcji losowej, którą oferuje Twój język) współrzędnych, odczekaj 0,2 sekundy, a następnie przerysuj ponownie, aż upłynie określony czas. Każda postać może być używana do reprezentowania kropli deszczu.
Parametry
- Czas oczekiwania między przerysowaniem w sekundach.
- Czas, przez który będzie widoczny deszcz. To tylko liczba całkowita reprezentująca liczbę iteracji. [Czas netto, przez który będzie widoczny deszcz, to liczba całkowita pomnożona przez czas oczekiwania]
- Komunikat wyświetlany po zakończeniu deszczu. (To musi być wyśrodkowane)
- Liczba kropel deszczu wyświetlanych na ekranie.
Zasady
- Jeden bajt powinien być używany do reprezentowania kropli deszczu i może to być wszystko, nawet koty i psy.
- Nie musi reagować na wielkość terminala, co oznacza, że nie musisz obsługiwać błędu dla różnych rozmiarów terminali. Możesz samodzielnie określić szerokość i wysokość terminala.
- Obowiązują standardowe zasady gry w golfa.
Próbka i wyjście kodu
To jest wersja bez golfisty napisana w Pythonie 2.7 przy użyciu ncurses.
import curses
import random
import time
myscreen = curses.initscr()
curses.curs_set(0) # no cursor please
HEIGHT, WIDTH = myscreen.getmaxyx()
RAIN = '/' # this is what my rain drop looks like
TIME = 10
def make_it_rain(window, tot_time, msg, wait_time, num_drops):
"""
window :: curses window
time :: Total time for which it rains
msg :: Message displayed when it stops raining
wait_time :: Time between redrawing scene
num_drops :: Number of rain drops in the scene
"""
for _ in range(tot_time):
for i in range(num_drops):
x,y=random.randint(1, HEIGHT-2),random.randint(1,WIDTH-2)
window.addstr(x,y,RAIN)
window.refresh()
time.sleep(wait_time)
window.erase()
window.refresh()
window.addstr(HEIGHT/2, int(WIDTH/2.7), msg)
if __name__ == '__main__':
make_it_rain(myscreen, TIME, 'IT HAS STOPPED RAINING!', 0.2, 100)
myscreen.getch()
curses.endwin()
Wyjście -