Deskripsi Tantangan
Anda harus menunjukkan simulasi hujan di terminal.
Dalam contoh yang diberikan di bawah ini menambahkan 100 tetesan hujan secara acak (gunakan fungsi acak default yang ditawarkan bahasa Anda) koordinat, menunggu 0,2 detik dan kemudian menggambar kembali sampai waktu yang diberikan berakhir. Karakter apa pun dapat digunakan untuk mewakili tetesan hujan.
Parameter
- Tunggu waktu antara menggambar ulang dalam hitungan detik.
- Waktu dimana hujan akan terlihat. Ini hanya bilangan bulat yang mewakili jumlah iterasi. [Jadi, waktu bersih dimana hujan akan terlihat adalah bilangan bulat ini dikalikan dengan waktu tunggu]
- Pesan yang akan ditampilkan saat hujan berakhir. (Ini harus dipusatkan)
- Jumlah tetesan hujan yang akan ditampilkan di layar.
Aturan
- Satu byte harus digunakan untuk mewakili tetesan hujan, dan itu bisa apa saja, bahkan kucing dan anjing.
- Itu tidak harus responsif terhadap ukuran terminal yang berarti Anda tidak harus menangani bug untuk ukuran terminal yang bervariasi. Anda dapat menentukan sendiri lebar dan tinggi terminal.
- Aturan standar bermain golf berlaku.
Contoh dan Output Kode
Ini adalah versi yang tidak ditandai yang ditulis dalam python 2.7 menggunakan 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()
Keluaran -