დავუბრუნდეთ ჩვენს სახატავ პროგრამას. დღეს აქ ტექსტს დავამატებთ.
ახლა მინდა ყოველი ვინსტონი წარწერის ქვეშ მოვათავსო
მისი ცხოვრების სხვადასხვა ეტაპები რომ გამოჩნდეს.
ალხა ვინსტონი ყველგანაა
ეს იმიტომ, რომ ჩვენ faceX-სა და faceY-ს შემთხვევითად ვირჩევთ შიგნით ფუნქციაში
ჩვენ კი გვინდა ზუსტი ადგილი მივუთითოთ, სადაც ვინსტონი უნდა დაიხატოს
ყოველ ჯერზე, როცა ამ ფუნქციას გამოვიძახებ, მინდა შემეძლოს ადგილის მითითება
ისევე, როგორც ellipse()-ისა და rect()-ის შემთხვევაში
ვინსტონი მინდა დავსვა აქ, აქ, ერთი აქ და ერთი ვინსტონიც აქ
აღარ მინდა ის შემთხვევით ადგილას დაიხატოს ყოველ ჯერზე, როცა ფუნქციას ვიძახებ
ამისთვის ფუნქციას უნდა მივუთითოთ პარამეტრები
ორივე პარამეტრი უნდა მივუთითოთ ჩვენი ფუნქციის აღწერაში აი აქ, ზემოთ
და გადავცეთ შესაბამისი მნიშვნელობები აქ, ქვემოთ, სადაც ვიძახებთ.
drawWinston()-ს გადავცემთ faceX-სა და faceY-ს
ეს მნიშვნელობები ფუნქციამ უნდა გამოიყენოს შემთხვევითების მაგივრად.
ახლა ვიფიქროთ, რა უნდა გადავცეთ ფუნქციის გამოძახებისას, ქვემოთ
ჩვენ ვსვამთ ვინსტონს ყოველი წარწერის ქვეშ
ასე რომ გადაცემული x და y იმის მსგავსი უნდა იყოს, რაც text()-ს გადავეცით
შეიძლება y 10 პიქსელით დაბლა ავიღოთ
ეს იქნება 10 და 30
ეს კი 200 და 230
10 და 230
200 და 230
იგივე რიცხვებს ვიღებ, რაც წარწერების კოორდინატები, ოღონდ ყოველ y-ს 10-ს ვუმატებ
იმიტომ რომ მინდა, რომ ოდნავ დაბლა დავხატო
ვინსტონი არ გადაწეულა
ზემოთ აღწერილი ფუნქციისთვის არ გვითქვამს, რომ პარამეტრებს გადავცემთ
და ის ისევ შემთხვევით რიცხვებს იყენებს
იმისთვის, რომ ფუნქციამ გაიგოს, რომ პარამეტრებს გადავცემ
პარამეტრებს ამ ფრჩხილებში სახელები უნდა დავარქვათ.
დავარქვათ მათ faceX და faceY, შუაში მძიმე
ეს სახელები იმიტომ ავარჩიეთ, რომ ამავე სახელებს ფუნქციაში ვიყენებთ
ასე კოდის თავიდან დაწერა არ მოგვიწევს.
მაგრამ ისევ არაფერი შეცვილია, ვინსტონი ისევ იქვეა.
თუ ფუნციის სულ ზედა ნაწილს ჩახედავთ
ნახავთ, რომ faceX-სა და faceY-ს შემთხვევით მნიშვნელობებს ვანიჭებთ.
უბრალოდ ეს ხაზები უნდა წავშალოთ
ახლა faceX-ისა და faceY-ის მნიშვნელობები ფუნქციას გადაეცემა
და ეს ის მნიშვნელობებია, რომლებით აქ მივუთითეთ.
ვინსტონი მთლად სწორ ადგილებში ვერ დავსვი
დამავიწყდა, რომ წარწერის ადგილი განისაზღვრება ზედა მარცხენა კუთხით
ხოლო სახის ადგილი - ცენტრის მიხედვით
უნდა შევცალო ჩემი რიცხები აქ
x საკმაოდ უნდა შევცვალო, ეს კი აქ დავსვა
ვცვლი იმ მნიშვნელობები, რომლებსაც ფუნქციას გადავცემთ
ფუნქციის აღწერა არ არის შესაცვლელი
ის იმ მნიშვნელობებს იღებს, რომელსაც ჩვენ გადავცემთ.
ისივე, როგორც ellipse() და rect()
ადგილი ავარჩიე, მაგრამ ახლა შევამჩნიე, რომ ვინსტონი ზედმეტად დიდია
ვინსტონები ერთმანეთს ედება და ეკრანზე არ ეტევა
მას ხატავს კოდი, რომელიც ამ ფუნქციაში მოვათავსე
შემიძლია ყველა ვინსტონის ზომა ერთად შევცვალო
ამისთვის მხოლოდ იმ ხაზის შეცვლაა საჭირო, რომელიც ელიპსს ხატავს
თუ მათ შევცვლით, ვთქვათ, 190-ით, ვინსტონი გახდება 190-ჯერ
ახლა ის უკეთ ეტევა
შემიძლია გავაგრძელო, რათა ვინსტონი მთლიანად შიგნით მოვათავსო.
მშვენიერი
შევაჯამოთ. რას აკეთებს ეს კოდი:
ის განსაზღვრავს ფუნქციას drawWinston()
და ამბობს, რომ ის ორ მნიშვნელობას იღებს - faceX-სა და faceY-ს
ეს მნიშვნელობები შემოდიან როგორც ცვლადები, რომლებიც ფუნქციაში შეგვიძლია გამოვიყენოთ
ისევე, როგორც ცვლადები, რომლებსაც ზემოთ გამოვაცხადეთ
და შემდეგ ამ ფუნქციას ვიძახებთ ნებისმიერ დროს, მას შემდეგ რაც გამოვაცხადებთ
შეგვიძლია მას განსხვავებული მნიშვნელობები გადავცეთ
თქვენ ნახეთ, რა კარგ საშუალებებს გვაძლევენ ფუნქციები
შეგვიძლია დავწეროთ ისეთი კოდი, რომლის ბევრჯერ გამოყენება კარგი იქნება
ასევე შეგვიძლია გამოვიყენოთ პარამეტრები, რაღაცების შეცვლა რომ შეგვეძლოს
ეს რეცეპტს ჰგავს. გვაქვს ზოგადი ისნტრუქციები
და თუკი მიხვდით, რომ უცებ ოთხი ვინსტონის კვება გახდა საჭირო ერთის მაგივრად
არ მოგიწევთ თავიდან დაიწყოთ, უბრალოდ შეცვლით საწყის ინსტრუქციებს
და ყველაფერს ოთხზე გაამრავლებთ
ახლა შეგიძლია იფიქროთ თქვენს კოდზე როგორც რეცეპტზე