Mô tả thử thách
Bạn phải hiển thị một mô phỏng của mưa trong thiết bị đầu cuối.
Trong ví dụ được đưa ra dưới đây, việc thêm 100 hạt mưa một cách ngẫu nhiên (sử dụng hàm ngẫu nhiên mặc định mà ngôn ngữ của bạn cung cấp) tọa độ, đợi trong 0,2 giây và sau đó vẽ lại cho đến khi hết thời gian. Bất kỳ ký tự có thể được sử dụng để đại diện cho hạt mưa.
Thông số
- Thời gian chờ giữa lúc vẽ lại trong vài giây.
- Thời gian mà mưa sẽ được nhìn thấy. Đây chỉ là một số nguyên biểu thị số lần lặp. [Vì vậy, thời gian thực mà mưa sẽ hiển thị là số nguyên này nhân với thời gian chờ]
- Thông báo sẽ được hiển thị khi mưa kết thúc. (Điều này phải được tập trung)
- Số lượng hạt mưa sẽ được hiển thị trên màn hình.
Quy tắc
- Một byte đơn nên được sử dụng để thể hiện một giọt mưa và nó có thể là bất cứ thứ gì, kể cả mèo và chó.
- Nó không phải đáp ứng với kích thước thiết bị đầu cuối, điều đó có nghĩa là bạn không phải xử lý lỗi đối với các kích cỡ thiết bị đầu cuối khác nhau. Bạn có thể tự xác định chiều rộng và chiều cao của thiết bị đầu cuối.
- Tiêu chuẩn quy tắc chơi golf áp dụng.
Mẫu mã và đầu ra
Đây là một phiên bản không được viết bằng python 2.7 bằng cách sử dụng 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()
Đầu ra -