Описание задачи
Вы должны показать симуляцию дождя в терминале.
В приведенном ниже примере добавляются 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()
Выход -