Description du défi
Vous devez montrer une simulation de pluie dans le terminal.
Dans l'exemple ci-dessous, l'ajout de 100 gouttes de pluie au hasard (utilisez la fonction aléatoire par défaut que votre langue propose) coordonne, attend 0,2 seconde puis redessine jusqu'à ce que le temps imparti expire. N'importe quel caractère peut être utilisé pour représenter la goutte de pluie.
Paramètres
- Temps d'attente entre redessiner en secondes.
- Temps pendant lequel la pluie sera visible. Il s'agit simplement d'un entier représentant le nombre d'itérations. [Donc, le temps net pendant lequel la pluie sera visible est cet entier multiplié par le temps d'attente]
- Message à afficher à la fin de la pluie. (Cela doit être centré)
- Nombre de gouttes de pluie à afficher à l'écran.
Règles
- Un seul octet doit être utilisé pour représenter une goutte de pluie, et cela peut être n'importe quoi, même des chats et des chiens.
- Il ne doit pas être sensible à la taille du terminal, ce qui signifie que vous n'avez pas à gérer le bogue pour des tailles de terminal variées. Vous pouvez définir vous-même la largeur et la hauteur du terminal.
- Les règles standards du golf s'appliquent.
Échantillon de code et sortie
Il s'agit d'une version non golfée écrite en python 2.7 utilisant 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()
Sortie -