From Test-Scratch-Wiki
() की दूरी | |
distance to ( v)
| |
Category | महसूस |
Type | रिपोर्टर |
() की दूरी ब्लॉक एक सेंसिंग ब्लॉक और एक रिपोर्टर ब्लॉक है। ब्लॉक, उसके और माउस-पॉइंटर या एक निर्दिष्ट स्प्राइट के कॉस्ट्यूम सेंटर के बीच, यूक्लिडियन दूरी को पिक्सेल में रिपोर्ट करता है, भले ही निर्दिष्ट स्प्राइट छिपा हुआ हो।
यदि ब्लॉक के ड्रॉप-डाउन इंसर्ट में कुछ भी नहीं है, या यदि हटाया गया स्प्राइट अभी भी ड्रॉप-डाउन इंसर्ट में है, तो यह दूरी को १०,००० के रूप में रिपोर्ट करता है। v४३२ और इससे पहले के संस्करण के लिए स्क्रैच २.० में, यह इसके बजाय ० रिपोर्ट करता है।
यह ब्लॉक केस-संवेदी है.
उदाहरण उपयोग
चूँकि यह ब्लॉक वस्तुओं के बीच की दूरी बता सकता है, यह परियोजनाओं में बहुत उपयोगी है जिसके लिए बहुत अधिक सावधानीपूर्वक संवेदन और गति की आवश्यकता होती है।
() की दूरी ब्लॉक के लिए कुछ सामान्य उपयोग:
- टकराव कब होगा इसका अनुमान लगाना
if <(distance to (snowball v)) < (40)> then say [Watch out!] wait until <touching (snowball v)?> say [] // संदेश कहना बंद करो stop [all v]
- दूरी से देखने पर यह निर्धारित करने में मदद मिलती है कि किसी स्प्राइट को कहीं जाने में कितना समय लगेगा
set [movements v] to ([ceiling v] of ((distance to (meteor v)) / (10))) // "मूवमेंट" उल्का तक पहुंचने के लिए १० पिक्सेल गतियों की मात्रा है
- यह निर्धारित करना कि रॉकेट को कितनी दूर तक फायर करना चाहिए
set [real distance v] to (join ((distance to (asteroid v)) * (10000)) [ kilometers]) // पिक्सेल दूरी को वास्तविक जीवन से जोड़ने के लिए
- एक अदृश्य स्प्राइट से दूरियों का पता लगाना और स्कोर को एक खेल के रूप में प्रदर्शित करना
change [score v] by ((1800) - ((10) * (distance to (bullseye v))))
- जब आप स्प्राइट को किसी अन्य स्प्राइट से इधर-उधर घुमाते हैं तो परिवर्तनशील परिवर्तन करना
forever set [safety v] to ((100) - ((distance to (house v)) / (3))
समाधान
इस ब्लॉक को निम्नलिखित कोड के साथ दोहराया जा सकता है:
([sqrt v] of ((((x position) - ([x position v] of (Wanted Sprite v))) * ((x position) - ([x position v] of (Wanted Sprite v)))) + (((y position) - ([y position v] of (Wanted Sprite v))) *((y position) - ([y position v] of (Wanted Sprite v))))))
संबंधित सुझाव
कुछ स्क्रैचर एक ऐसा ब्लॉक चाहते हैं जो किसी भी स्थान की दूरी बताए, न कि केवल एक स्प्राइट।[1] यह इस तरह होगा:
(distance to x: () y: ():: sensing)
हालाँकि, इसे समान समाधान के साथ दोहराया जा सकता है:
([sqrt v] of ((((x position) - (wanted x)) * ((x position) - (wanted x))) + (((y position) - (wanted y)) * ((y position) - (wanted y)))))
वैकल्पिक रूप से, स्प्राइट को वांछित स्थान पर ले जाया जा सकता है:
//स्प्राइट१ के अंदर: define distance to x: (x) y: (y) set [send x v] to (x)//इनकी आवश्यकता है क्योंकि कस्टम ब्लॉक स्प्राइट स्थानीय हैं, इसलिए x और y ब्लॉक बिना तोड़े दूसरे स्प्राइट में नहीं जा सकते। set [send y v] to (y) broadcast (move v) and wait set [result v] to (distance to (Move sprite v)) //स्प्राइट ले जाएँ के अंदर: when I receive [move v] switch costume to (0x0 px v) change size by ((size)+(((x)+(2))*((x)+(2))) switch costume to (500x500 px v) go to x: (send x) y: (send y) switch costume to (0x0 px v)