Descrizione della sfida
Devi mostrare una simulazione della pioggia nel terminal.
Nell'esempio riportato di seguito, l'aggiunta di 100 gocce di pioggia casuali (utilizza la funzione casuale predefinita offerta dalla tua lingua) coordinate, in attesa di 0,2 secondi e quindi ridisegnando nuovamente fino alla scadenza del tempo indicato. Qualsiasi personaggio può essere usato per rappresentare la goccia di pioggia.
parametri
- Tempo di attesa tra ridisegno in secondi.
- Tempo per cui la pioggia sarà visibile. Questo è solo un numero intero che rappresenta il numero di iterazioni. [Quindi, il tempo netto per cui sarà visibile la pioggia è questo numero intero moltiplicato per il tempo di attesa]
- Messaggio da visualizzare al termine della pioggia. (Questo deve essere centrato)
- Numero di gocce di pioggia da visualizzare sullo schermo.
Regole
- Un singolo byte dovrebbe essere usato per rappresentare una goccia di pioggia, e può essere qualsiasi cosa, anche cani e gatti.
- Non deve rispondere alle dimensioni del terminale, il che significa che non è necessario gestire il bug per varie dimensioni del terminale. È possibile specificare la larghezza e l'altezza del terminale da soli.
- Si applicano le regole standard del golf.
Esempio di codice e output
Questa è una versione non golfata scritta in Python 2.7 usando 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()
Produzione -