চ্যালেঞ্জের বর্ণনা
টার্মিনালে আপনাকে বৃষ্টির সিমুলেশনটি দেখাতে হবে।
এর নিচে দেওয়া উদাহরণে এলোমেলোভাবে 100 টি বৃষ্টিপাত যুক্ত করার (নীচের সময়টি শেষ হওয়ার আগ পর্যন্ত 0.2 সেকেন্ডের জন্য অপেক্ষা করে) আবার স্থির করে পুনরায় আঁকতে স্থানাঙ্কগুলি (আপনার ভাষা প্রস্তাবিত ডিফল্ট এলোমেলো ফাংশনটি ব্যবহার করুন) in যেকোন চরিত্রকে বৃষ্টিপাতের প্রতিনিধিত্ব করতে ব্যবহার করা যেতে পারে।
পরামিতি
- সেকেন্ডে পুনরায় আঁকানোর মধ্যে সময় অপেক্ষা করুন।
- এমন সময় যার জন্য বৃষ্টিপাত দৃশ্যমান হবে। এটি কেবল একটি পূর্ণসংখ্যা যা পুনরাবৃত্তির সংখ্যা উপস্থাপন করে। [সুতরাং, বৃষ্টির জন্য নেট সময়টি দৃশ্যমান হবে এটি প্রত্যাশার সময়ের দ্বারা বহুগুণ বৃদ্ধি করা হয়েছে]
- বৃষ্টি শেষ হলে প্রদর্শিত বার্তা। (এটি কেন্দ্রিক হতে হবে)
- পর্দায় প্রদর্শিত বৃষ্টিপাতের সংখ্যা।
বিধি
- একটি বৃষ্টি বৃষ্টির উপস্থাপনের জন্য একটি বাইট ব্যবহার করা উচিত, এবং এটি বিড়াল এবং কুকুর এমনকি কিছু হতে পারে।
- এটি টার্মিনাল আকারের জন্য প্রতিক্রিয়াশীল হতে হবে না যার অর্থ আপনাকে বিভিন্ন টার্মিনাল আকারের জন্য বাগটি পরিচালনা করতে হবে না। আপনি নিজেরাই টার্মিনালের প্রস্থ এবং উচ্চতা নির্দিষ্ট করতে পারেন।
- গল্ফিংয়ের স্ট্যান্ডার্ড বিধি প্রযোজ্য।
কোড নমুনা এবং আউটপুট
এটি এনক্রোস ব্যবহার করে পাইথন ২.7-এ লিখিত একটি অদ্বিতীয় সংস্করণ।
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()
আউটপুট -