பைதான் எவ்வாறு செயல்படுகிறது என்பதை முந்தைய தொடரின்வாயிலாக தெரிந்து கொண்டோம், இதனுடைய வரைகலை மூலம் விளையாடுவதற்கும், Turtle எனப்படும் கருவியைப் பயன்படுத்தி Snowflakes எனும் விளையாட்டினை உருவாக்குவதற்கும் இது சரியான நேரமாகும்.
இந்தத் செயல்திட்டமானது rpf.io/turtle-snowflakes எனும் முகவரியில் கிடைக்கிறது
Turtleஆனவை பெயர் குறிப்பிடும் விலங்குகளை போன்ற வடிவிலான இயந்திரஅமைவாகும், இவைகளை நகர்த்திடும்போது இதனுடன் உள்ள பேனாக்களும் ஒரு நேர்கோட்டில் நகர்த்துதல், திருப்புதல், மேலே உயர்த்துதல், கீழே தாழ்த்துதல் ஆகிய செயல்களை செய்திடுமாறு வடிவமைக்கப்பட்டுள்ளன – எண்ணிம பதிப்பில், அது நகரும் போது கோடு வரைவதைத் தொடங்குவது அல்லது நிறுத்துவது என்று பொருளாகும். வேறு சில கணினிமொழிகளைப் போன்றில்லாமல், அதாவது லோகோ , அதன் பல மாறுபாடுகள், பைத்தானில் Turtleஎனும் கருவி கட்டமைக்கப்படவில்லை – ஆனால் இது Turtleஇன் சக்தியை வழங்க கூடுதலாக குறிமுறைவரிகளின் நூலகத்துடன் வருகிறது. நூலகங்கள் பைத்தானின் திறன்களை விரிவாக்கம் செய்வதற்கான புதிய வழிமுறைகளை சேர்க்கின்ற குறிமுறைவரிகளின் தொகுப்புகளாகும், மேலும் அவை பதிவிறக்க கட்டளையைப் பயன்படுத்தி நம்முடைய சொந்த நிரல்களில் கொண்டு வரப்படு கின்றன. New எனும் உருவப்பொத்தானைசொடுக்குதல்செய்வதன் மூலம் புதிய நிரலை உருவாக்கி அதில்பின்வருமாறான கட்டளைவரியை உள்ளிடுக:
import turtle
நூலகத்தில் உள்ள வழிமுறைகளைப் பயன்படுத்தும் போது, நூலகப் பெயரைப் பயன்படுத்த வேண்டும், அதைத் தொடர்ந்து முற்றுப்புள்ளியையும், பின்னர் கட்டளையின் பெயரையும் பயன்படுத்த வேண்டும். ஒவ்வொரு முறையும் இவைைகளை தட்டச்சு செய்வது நமக்குஎரிச்சலூட்டும், எனவே அதற்குப் பதிலாக அவைகளுக்கு சிறிய மாறிகளின் பெயரை ஒதுக்கலாம் – அது ஒரு எழுத்தாக இருக்கலாம், ஆனால் turtleஇன் பெயராக இரட்டிப்பாக்குவது நன்றாக இருக்கும். அதற்காக பின்வருமாறான கட்டளைவரியை உள்ளிடுக:
pat = turtle.Turtle()
செயல்திட்டத்தை பரிசோதிக்க, இந்தஆமைக்கு ஏதாவது செய்ய வேண்டும். அதற்காக பின்வருமாறான கட்டளைவரியை தட்டச்சுசெய்திடுக:
pat.forward(100)
தொடர்ந்து Runஎனும் உருவப்பொத்தானைசொடுக்குதல்செய்து, நிரலை Turtle Snowflakesஆகச் சேமித்திடுக. நிரல் சேமிக்கப்பட்டதும், ‘Turtle Graphics’ என்ற புதிய சாளரம் திரையில் தோன்றிடும், மேலும் நிரலின் செயல்முடிவைக் காணலாம்: நம்முடையஆமையானது, 100 அலகுகள் முன்னோக்கி நகர்ந்து, ஒரு நேர் கோட்டை வரைகிறது
படம்
முதன்மை தோனியின் சாளரத்திற்கு மீண்டும் மாறிடுக – அது Turtle Graphics எனும் சாளரத்தின் பின்னால் மறைந்திருந்தால், Turtle Graphics எனும் சாளரத்தில் உள்ள சிறிய பொத்தானை சொடுக்குக அல்லது திரையின் மேற்புறத்தில் உள்ள செயல்பட்டியில்(task bar) உள்ள தோனியின் உள்ளீட்டை சொடுக்குக -Stop எனும் பொத்தானை சொடுக்குதல் செய்து ஆமையின் வரைகலை சாளரத்தை மூடிடுக. ஒவ்வொரு இயக்க வழிமுறைகளையும் கையால் தட்டச்சு செய்வது கடினமானது, எனவே கட்டளைவரி 3 ஐ நீக்கிவிட்டு, வடிவங்களை உருவாக்கும் கடினமான பணியைச் செய்ய ஒரு மடக்கியை(Loop) உருவாக்கிடுகக.
for i in range(2):
pat.forward(100)
pat.right(60)
pat.forward(100)
pat.right(120)
இந்த நிரலை இயக்கிடுக, உடன்patஆனது ஒரு இணைகரத்தை வரைந்திடும்
படம்
அதை snowflake போன்ற வடிவமாக மாற்ற,தோனியின் முதன்மை சாளரத்தில் உள்ள -Stop எனும் பொத்தானை சொடுக்குதல் செய்து, பின்வரும் கட்டளை வரியை கட்டளைவரி 3 ஆகச் சேர்ப்பதன் மூலம் மடக்கியைச் சுற்றி ஒரு மடக்கியை உருவாக்கிடுக:
for i in range(10):
… செயல்திட்டத்தின் கீழ்பகுதியல் பின்வரும் கட்டளைவரியைசேர்த்திடுக:
pat.right(36)
ஏற்கனவே உள்ள மடக்கி சரியாக உள்தள்ளப்படாததால், நிரல்சரியாக இயங்காது. அதைச் சரிசெய்ய, ஏற்கனவே உள்ள மடக்கியில் உள்ள ஒவ்வொரு கட்டளைவரியின் தொடக்கத்தையும் – 4 முதல் 8 வரையிலான வரிகளைக் சொடுக்குதல் செய்து, உள்தள்ளலைச் சரிசெய்ய SPACE விசையை நான்கு முறை அழுத்திடுக. தற்போது நிரலானது பின்வருமாறு இருக்க வேண்டும்:
import turtle
pat = turtle.Turtle()
for i in range(10):
for i in range(2):
pat.forward(100)
pat.right(60)
pat.forward(100)
pat.right(120)
pat.right(36)
Runஎனும் உருவப்பொத்தானைசொடுக்குதல்செய்து, ஆமையைப் பார்வையிடுக: இது முன்பு போலவே ஒரு இணைகரத்தை வரையலாம், ஆனால் அது முடிந்ததும் அது 36 டிகிரி திரும்பி, மற்றொன்றை வரைந்து, பின்னர் மற்றொன்றை வரைவது என்றவாறு,திரையில்ஒன்றுக்குமேல் ஒன்றாக பத்து இணைகரங்கள் இருக்கும் வரை – கொஞ்சம் snowflake போன்று தெரிகிறது
படம்
ஒரு ஆமைஇயந்திரம் ஒரு பெரிய காகிதத்தில் வெள்ளை நிறத்தில் வரைந்தாலும், பைத்தானின் உருவகப்படுத்தப்பட்ட ஆமையின் பல வண்ணங்களைப் பயன்படுத்தலாம். புதியதாக வரி 3 , 4ஆக பின்வருமாறான கட்டளைவரிகளைச் சேர்த்திடுக, ஏற்கனவே உள்ள வரிகளை கீழே தள்ளிடுக:
turtle.Screen().bgcolor(“blue”)
pat.color(“cyan”)
நிரலை மீண்டும் இயக்கிடுக, புதிய குறிமுறைவரிகளின் விளைவாக: ஆமையின் வரைகலை சாளரத்தின் பின்னணி நிறம் நீலமாக மாறியுள்ளது, மேலும் snowflake இப்போது சியான் வண்ணத்தில் உள்ளது
படம்
சீரற்ற நூலகத்தைப் பயன்படுத்தி, பட்டியலிலிருந்து தோராயமாகத் தேர்ந்தெடுக்கப்பட்ட வண்ணங்களையும் வைத்திருக்கலாம். நிரலின் மேல்பகுதிக்கு சென்று பின்வருவனவற்றை வரி 2 ஆகச் செருகிடுக:
import random
இப்போது 4 ஆவது வரியில் உள்ள பின்னணி நிறத்தை ‘blue’ இலிருந்து ‘grey’ ஆக மாற்றிடுக, பின்னர் புதிய வரி 5 ஐச் செருகுவதன் மூலம் ‘colours’ எனப்படும் புதிய மாறியை உருவாக்கிடுக:
colours = [“cyan”, “purple”, “white”, “blue”]
அமெரிக்கஆங்கிலம் பல நிரலாக்க மொழிகள் அமெரிக்க ஆங்கிலத்தினைப் பயன்படுத்துகின்றன, மேலும் பைதான்மொழியும்அதற்கு விதிவிலக்கன்று: ஆமையின் பேனாவின் நிறத்தை மாற்றுவதற்கான கட்டளைவரி colours என அமெரிக்க ஆங்கிலத்தில்உச்சரிக்கப்படுகிறது, மேலும் அதை பிரிட்டன் ஆங்கில வழியில் உச்சரித்தால் அது செயல்படாது. இருப்பினும், மாறிகள் நாம் விரும்பும் எந்தஆங்கில எழுத்தினையும் கொண்டிருக்கலாம் – அதனால்தான் புதிய மாறியான coloursஐ நாம் எளிதாக அழைக்க முடியும் பைதான் மொழியும் அதனை எளிதாக புரிந்து கொள்ள முடியும்.
இந்த வகை மாறி ஒரு பட்டியல் என அழைக்கப்படுகிறது, மேலும்[ ] எனும் பகர அடைப்புக்குறிகளால் குறிக்கப்படுகிறது. இந்த வழக்கில், snowflake பிரிவுகளுக்கான சாத்தியமான வண்ணங்களால் பட்டியல் நிரப்பப்பட்டுள்ளது – ஆனால் ஒவ்வொரு முறையும் மடக்கி மீண்டும் நிகழும்போது ஒன்றைத் தேர்ந்தெடுக்க பைத்தானுக்குநாம் இன்னும் சொல்ல வேண்டும். அதற்காகநிரலின் முடிவில், பின்வருமாறான கட்டளைவரியை உள்ளிடுக – அது நான்கு இடைவெளிகளுடன் உள்தள்ளப்பட்டிருப்பதை உறுதிசெய்து கொண்டு, அதன் மேல் உள்ள கடடளை வரியைப் போன்றே இது வெளிப்புற மடக்கியின் ஒரு பகுதியாகும்:
pat.color(random.choice(colours))
Runஎனும் உருவப்பொத்தானைசொடுக்குதல் செய்தால், snowflake–stroke-ninja-star மீண்டும் வரையப்படும். இந்த நேரத்தில், பைதான் ஒவ்வொரு இதழையும் வரையும்போது பட்டியலிலிருந்து சீரற்ற நிறத்தைத் தேர்ந்தெடுக்கும் – snowflake இற்கு நாம் மகிழும்படியாக, பல வண்ணங்களை கொடுக்கிறது.
படம்
snowflake–ninja-starஐப் போன்றும், உண்மையான snowflakeஐப் போன்றும் தோற்றமளிக்க, வண்ணங்களின் பட்டியலுக்குக் கீழே புதிய கட்டளைவரி 6ஐச் சேர்த்து, பின்வருமாறான கட்டளைவரிகளை உள்ளிடுக:
pat.penup()
pat.forward(90)
pat.left(45)
pat.pendown()
ஆமை இயந்திரத்தினைப் பயன்படுத்தினால், பேனாவை நிறுத்துதல் பேனாவை இயங்குதல்(pen off and on)ஆகிய வழிமுறைகளில் பேனாவை அனைத்து காகிதத்திற்கு நகர்த்தும், ஆனால் மெய்நிகர் உலகில் ஆமையை நிறுத்தி கோடுகளை வரையத் தொடங்கிடுக. இந்த நேரத்தில், ஒரு மடக்கியைப் பயன்படுத்துவதற்குப் பதிலாக, ஒரு செயலியை(Function) உருவாக்கப் போகின்றோம் – நம்முடைய சொந்த பைதான் கட்டளையை உருவாக்குவது போன்றே இதனை நாம் எந்த நேரத்திலும் அழைக்கக்கூடிய குறிமுறை வரிகளின் ஒரு பகுதியாகும்.
நம்முடைய இணைகரத்தை அடிப்படையாகக் கொண்டsnowflakes வரைவதற்கான குறிமுறைவரிகளை நீக்குவதன் மூலம் இதனை தொடங்கிடுக: கட்டளைவரி 17 இல் உள்ள pat.color(“cyan”) கட்டளைவரி10 முதல் pat.right(36) வரையிலான கட்டளை வரிகளுக்கு இடையே உள்ள அனைத்தும். pat.color(random.choice(colours)) விட்டிடுக. ஆனால் வரியின் தொடக்கத்தில் (#) எனும் குறியீட்டை சேர்த்திடுக. இது ஒரு கட்டளையைக் குறிப்பிடுவது என அறியப்படுகிறது, மேலும் பைதான் அதை புறக்கணிக்கும் என்று பொருளாகும். குறிமுரைவரிகளில் விளக்கங்களைச் சேர்க்க கருத்துகளைப் பயன்படுத்தலாம், இது சில நாட்களுக்குப் பிறகு நாம் மீண்டும் இதனைகாணும்போது அல்லது வேறு ஒருவருக்கு நிரலை அனுப்பும்போது புரிந்துகொள்வதை மிகவும் எளிதாக்கும்!
இந்த செயலியை உருவாக்கிடுக, இது ‘branch’என்று அழைக்கப்படும், pat.pendown():கீழே உள்ள வரி 10 இல் பின்வரும் கட்டளைவரியைத் தட்டச்சு செய்திடுக
def branch():
இது நம்முடைய செயலியில், ‘branch’ஐ வரையறுக்கிறது. ENTER விசையை அழுத்தும்போது, செயலியின் கட்டளைகளுக்கு ஏற்ப தோனியானது தானாகவே உள்தள்ளலைச் சேர்க்கும். பின்வருமாறான கட்டளைவரிகளைத் தட்டச்சு செய்து, உள்தள்ளலில் கவனம் செலுத்துவதை உறுதிசெய்து கொள்க – ஏனெனில் ஒரு கட்டத்தில் மூன்று உள்தள்ளல் தின்னமான் நிலைகளில் குறிமுறைவரிகளை வலைபின்னல்போன்று செய்யப் போகின்றோம்!
for i in range(3):
for i in range(3):
pat.forward(30)
pat.backward(30)
pat.right(45)
pat.left(90)
pat.backward(30)
pat.left(45)
pat.right(90)
pat.forward(90)
இறுதியாக, நம்முடைய புதிய செயலியை இயக்க அல்லது அழைக்க, நம்முடைய நிரலின் கீழே – ஆனால் கருத்து தெரிவிக்கப்பட்ட வண்ணக் கோட்டிற்கு மேலே ஒரு புதிய மடக்கியை உருவாக்கிடுக:
for i in range(8):
branch()
pat.left(45)
அனைத்து குறிமுறைவரிகளையும் எழுதும் பணிமுழுவதும் முடிக்கப்பட்ட பின்னர் நிரலானது பின்வருமாறு இருக்க வேண்டும்:
import turtle
import random
pat = turtle.Turtle()
turtle.Screen().bgcolor(“grey”)
colours = [“cyan”, “purple”, “white”, “blue”]
pat.penup()
pat.forward(90)
pat.left(45)
pat.pendown()
def branch():
for i in range(3):
for i in range(3):
pat.forward(30)
pat.backward(30)
pat.right(45)
pat.left(90)
pat.backward(30)
pat.left(45)
pat.right(90)
pat.forward(90)
for i in range(8):
branch()
pat.left(45)
pat.color(random.choice(colours))
Runஎனும் உருவப்பொத்தானைசொடுக்குதல் செய்து, கட்டளைவரிகளைப் பின்பற்றி pat வரையும்போது வரைகலை சாளரத்தைப் பார்வையிடுக. வாழ்த்துக்கள்: snowflakeஆனது இப்போது snowflakeஐ போன்றே தோற்றமளிக்கிறது
படம்
சவால்: அடுத்து என்ன? snowflake இன் branchesஐ வெவ்வேறு வண்ணங்களில் வரைய கருத்துரையைப் பயன்படுத்த முடியுமா? ஒரு ‘snowflake’ செயலியை உருவாக்கி, திரையில் நிறைய snowflakes வரைய அதைப் பயன்படுத்த முடியுமா? snowflake இன் அளவையும் நிறத்தையும் சீரற்ற முறையில் மாற்ற நிரலால் செய்ய முடியுமா?
தொடரும்