From Test-Scratch-Wiki
() तक दोहराएँ | |
repeat until <>
| |
Category | नियंत्रण |
Type | Stack |
Introduced in | १.१ |
() तक दोहराएँ ब्लॉक एक नियंत्रण ब्लॉक और एक सी ब्लॉक है। इस ब्लॉक के अंदर रखे गए ब्लॉक तब तक लूप करेंगे जब तक कि निर्दिष्ट बूलियन कथन सत्य न हो, जिस स्थिति में ब्लॉक के नीचे का कोड (यदि कोई हो) निष्पादित होगा। यह लूप कुछ अन्य प्रोग्रामिंग भाषाओं में while
लूप के समान प्रकृति का है।
उदाहरण उपयोग
चूंकि यह ब्लॉक किसी शर्त के सत्य होने तक कोड के टुकड़ों को लूप करता है, इसलिए ब्लॉक वांछित शर्त तक पहुंचने तक कोड चलाने का सबसे अच्छा तरीका है। कुछ सामान्य उपयोगों में शामिल हैं:
- स्प्राइट को तब तक हिलाना जब तक कि उसकी X या Y स्थिति एक निश्चित मात्रा पर न आ जाए
repeat until <(x position) = [100]> move (10) steps
- स्प्राइट को माउस से तब तक चिपकाए रखना जब तक कि माउस नीचे न हो जाए
repeat until <not <mouse down?>> go to (mouse pointer v)
- कोई कार्य करते समय किसी घटना की प्रतीक्षा करना
repeat until <. . .::grey> . . .
- किसी स्क्रिप्ट को एक निश्चित समय तक दोहराना
reset timer repeat until <(timer) > (limit)> . . . end
- उपयोगकर्ता द्वारा सही उत्तर दिए जाने तक प्रश्न को दोहराना
repeat until <(answer) = (correct answer)> ask [question] and wait end
देरी
लूप के प्रत्येक पुनरावृत्ति के बाद, अगले पुनरावृत्ति के जारी रहने से पहले 1/30 सेकंड (या एक फ्रेम) की देरी जोड़ी जाती है। इससे एनिमेशन को सुचारू रूप से चलाने की अनुमति मिलती है। हालाँकि, यदि आप यह देरी नहीं चाहते हैं, तो टर्बो मोड चालू करें, या इसे स्क्रीन रिफ्रेश के बिना चलाने के लिए सेट किए गए कस्टम ब्लॉक के अंदर रखें। हालाँकि, आपको यह सुनिश्चित करना चाहिए कि यह किसी बिंदु पर बंद हो जाएगा, क्योंकि अन्यथा, प्रदर्शन के साथ महत्वपूर्ण समस्याएँ हो सकती हैं।
![]() | स्क्रीन रिफ्रेश के बिना चलाने के लिए सेट किए गए कस्टम ब्लॉक के अंदर कभी न खत्म होने वाला लूप डालने से प्रोजेक्ट काफी पिछड़ जाएगा। |
समाधान
इस ब्लॉक को निम्नलिखित कोड से हल किया जा सकता है:
define repeat until forever if <. . .::grey> then stop [this script v] end . . .
आप यह भी सुनिश्चित कर सकते हैं कि अंदर की स्क्रिप्ट कम से कम एक बार चले, जैसा कि कुछ प्रोग्रामिंग भाषाओं में do while लूप के समान होता है:
define at least once: repeat until forever . . . if <. . .::grey> then stop [this script v] end
हालाँकि, एक स्प्राइट को एक स्क्रिप्ट प्रोजेक्ट्स बनाते समय इससे बचना चाहिए।