Опис виклику
Ви повинні показати моделювання дощу в терміналі.
У наведеному нижче прикладі додається 100 дощових крапель навмання (використовуйте випадкову функцію за умовчанням, яку пропонує ваша мова), координуючись, чекаючи 0,2 секунди, а потім перемальовуючи знову, поки не закінчиться заданий час. Будь-який символ може бути використаний для представлення краплі дощу.
Параметри
- Зачекайте час між перемальовуванням в секундах.
- Час, за який буде видно дощ. Це просто ціле число, що представляє кількість ітерацій. [Отже, чистий час, протягом якого буде видно дощ, це ціле число, помножене на час очікування]
- Повідомлення, яке відображатиметься після закінчення дощу. (Це має бути по центру)
- Кількість крапель дощу, які потрібно відобразити на екрані.
Правила
- Один байт повинен використовуватися для представлення краплі дощу, і це може бути будь-що, навіть кішки та собаки.
- Він не повинен відповідати розміру терміналу, а це означає, що вам не доведеться обробляти помилку для різних розмірів терміналу. Ви можете самостійно вказати ширину та висоту клеми.
- Діють стандартні правила проведення гольфу.
Зразок та вихідний код
Це незворушена версія, написана в python 2.7 за допомогою 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()
Вихід -