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 सेकंड (या एक फ्रेम) की देरी जोड़ी जाती है। इससे एनिमेशन को सुचारू रूप से चलाने की अनुमति मिलती है। हालाँकि, यदि आप यह देरी नहीं चाहते हैं, तो टर्बो मोड चालू करें, या इसे स्क्रीन रिफ्रेश के बिना चलाने के लिए सेट किए गए कस्टम ब्लॉक के अंदर रखें। हालाँकि, आपको यह सुनिश्चित करना चाहिए कि यह किसी बिंदु पर बंद हो जाएगा, क्योंकि अन्यथा, प्रदर्शन के साथ महत्वपूर्ण समस्याएँ हो सकती हैं।

Warning Warning: स्क्रीन रिफ्रेश के बिना चलाने के लिए सेट किए गए कस्टम ब्लॉक के अंदर कभी न खत्म होने वाला लूप डालने से प्रोजेक्ट काफी पिछड़ जाएगा।

समाधान

इस ब्लॉक को निम्नलिखित कोड से हल किया जा सकता है:

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

हालाँकि, एक स्प्राइट को एक स्क्रिप्ट प्रोजेक्ट्स बनाते समय इससे बचना चाहिए।

Cookies help us deliver our services. By using our services, you agree to our use of cookies.