WEBVTT 00:00:01.271 --> 00:00:03.741 ვისწავლეთ მასივის შექმნა და მასზე წვდომა. 00:00:03.741 --> 00:00:12.859 მასივის მნიშვნელოვანი თვისებაა მისი დინამიურობა პროგრამის მიმდინარეობისას. 00:00:12.859 --> 00:00:15.805 ახლავე გიჩვენებთ ამაში რას ვგულისხმობ. 00:00:15.805 --> 00:00:21.172 აქ გვაქვს პროგრამა, რომელიც გვიჩვენებს ბუშტებიანი ჰოპერის გამოსახულებას. 00:00:21.172 --> 00:00:29.397 გვაქვს xPositions მასივი, რომელიც შეიცავს ინფორმაციას ორივე ბუშტის მდებარეობაზე. 00:00:29.397 --> 00:00:35.471 აქ კი გვაქვს ციკლი, რომელიც მასივის ყველა ელემენტს გაივლის. 00:00:35.471 --> 00:00:46.810 თითოსთვის, ის x-დან ჰოპერის ხელამდე ხაზს, x-ზე კი 30x40 ზომის ოვალს - ბუშტს ხატავს. 00:00:46.810 --> 00:00:58.343 ესეიგი თუ მეტი ბუშტი გვინდა, საკმარისია მასივს რიცხვები დავუმატოთ, მაგალითად, 300. 00:00:58.343 --> 00:01:02.063 მშვენიერია, ახლა ჰოპერს სამი ბუშტი აქვს. 00:01:02.063 --> 00:01:10.932 ვთქვათ, გვსურს პროგრამირებაში გამოუცდელს მივცეთ ახალი ბუშტების დამატების საშუალება, 00:01:10.932 --> 00:01:17.801 ისე, რომ სადაც მომხმარებელი დააკლიკებს ეკრანს მაუსით, ბუშტი გაჩნდეს. 00:01:17.801 --> 00:01:20.688 მგონი ძალიან მაგარი იქნება. 00:01:20.688 --> 00:01:26.640 როგორ შეიძლება ეს მოვახერხოთ? გვინდა რომ ჩვენი პროგრამა დროში იცვლებოდეს, არა? 00:01:26.640 --> 00:01:30.278 მომხმარებლის ყოველ დაკლიკებაზე ბუშტი უნდა გაჩნდეს. 00:01:30.278 --> 00:01:37.637 გადავიტანოთ ყველაფერი ხატვის ფუნქციაში რომ დროში ცვლა მარტივი გახდეს. 00:01:37.637 --> 00:01:43.185 ესეიგი ამას აქ ჩამოვიტანთ და გამოვყოფთ. 00:01:43.185 --> 00:01:48.405 ახლა გვინდა იმის შემოწმება, აწვება თუ არა მომხმარებელი მაუსს ზუსტად ახლა. 00:01:48.405 --> 00:01:55.339 ეს "if"-ით შეგვიძლია. if(mouselsPressed) და შემდეგ კიდევ რაღაც. 00:01:55.339 --> 00:02:01.176 რა უნდა გავაკეთოთ? თუ მაუსს აწვებიან, როგორმე ამ მასივს რიცხვი უნდა დავუმატოთ. 00:02:01.176 --> 00:02:04.232 ისევ ორელემენტიანი იყოს. 00:02:04.232 --> 00:02:10.464 ესეიგი გვინდა როგორმე ამ მასივს რიცხვი დავუმატოთ. მე ამის ერთ გზას გიჩვენებთ. 00:02:10.464 --> 00:02:18.508 შეგვიძლია დავწეროთ xPositions[2] = mouseX; 00:02:18.508 --> 00:02:21.681 კარგი, ახლა გიჩვენებთ რომ ეს მართლაც მუშაობს. 00:02:21.681 --> 00:02:26.640 დავაკლიკე და ესეც ასე, ბუშტიც მივიღე. რა გააკეთა ამ ჩანაწერმა? 00:02:26.640 --> 00:02:38.236 xPositions[2] პოულობს მასივის ადგილ 2-ზე მყოფ ელემენტს, რომელიც რეალურად მესამეა. 00:02:38.236 --> 00:02:41.742 თუ დაუკვირდებით, მესამე ადგილი თავისუფალია, იქ არაფერია. 00:02:41.742 --> 00:02:45.897 ამიტომ, ჯერ ვპოულობთ ამ ადგილს და შემდეგ მასში ვათავსებთ mouseX-ს. 00:02:45.897 --> 00:02:51.358 რადგან მანამდე აქ არაფერია, ახლა ამ ადგილის მნიშვნელობა mouseX გახდება. 00:02:51.358 --> 00:03:00.130 ჩვენი მასივი ახლა სამ რიცხვს შეიცავს და ციკლი მესამე ბუშტსაც დახატავს. 00:03:00.130 --> 00:03:04.027 ძალიან კარგი, კიდევ დავაკლიკებ რომ ნახოთ როგორ მუშაობს. 00:03:04.027 --> 00:03:10.690 როგორც ხედავთ, ყოველი დაკლიკებისას ხატავს მესამე ბუშტს იქ, სადაც ვაკლიკებ. 00:03:10.690 --> 00:03:18.938 ეს იმიტომ, რომ ადგილ 2-ს მუდმივად ახალ მნიშვნელობას ვანიჭებთ, 00:03:18.938 --> 00:03:22.898 მნიშვნელობად ვწერთ ახალ mouseX-ს. 00:03:22.898 --> 00:03:34.574 გვექნება მხოლოდ სამი ბუშტი, ერთი 0-ში, ერთი 1-ში და ერთიც, რომელსაც ვცვლით, 2-ში. 00:03:34.574 --> 00:03:40.235 ეს უკვე ძალიან მაგარია, მაგრამ ჩვენ გვსურს მომხმარებელს ბევრი ბუშტი დავახატვინოთ, 00:03:40.235 --> 00:03:43.524 ანუ ყოველ დაკლიკებაზე ახალი ბუშტი ჩნდებოდეს. 00:03:43.524 --> 00:03:50.852 ესეიგი, ყოველ დაკლიკებაზე უნდა ვზრდიდეთ მასივის ელემენტების რაოდენობას. 00:03:50.852 --> 00:03:56.106 ანუ სულ 2-ის მაგივრად, შემდეგ დაკლიკებაზე გვექნება 3, შემდეგ 4, 5, 6 და ა.შ. 00:03:56.106 --> 00:04:01.019 ამისთვის შეგვიძლია მთვლელი ცვლადი შევქმნათ. დავწეროთ newInd = 2; 00:04:01.019 --> 00:04:05.523 აქ 2-ის ნაცვლად newInd-ს დავწერთ და ბოლოს საჭირო იქნება newInd++; 00:04:10.270 --> 00:04:16.231 ასე ამ ცვლადს ყოველ ჯერზე დავუმატებთ ერთს. ჯერ იქნება 2, შემდეგ 3, შემდეგ - 4. 00:04:16.231 --> 00:04:18.473 ესეიგი ეს ცვლადი ყოველ დაკლილებაზე გაიზრდება. 00:04:18.473 --> 00:04:22.009 ესეც ასე! ბევრი ბუშტი. ბუშტების წვეულება! 00:04:22.009 --> 00:04:32.108 მაგარია, მაგრამ ეს არაა საუკეთესო გზა, რადგან მასივის ზრდა ბევრჯერ მოგვიწევს. 00:04:32.108 --> 00:04:35.023 ამ ეფექტის მისაღწევად უფრო მარტივი გზაც არსებობს. 00:04:35.023 --> 00:04:42.768 ეს ყველაფერი არ გვჭირდება. 00:04:42.768 --> 00:04:50.996 დავწეროთ xPositions.push და შემდეგ mouseX. 00:04:50.996 --> 00:04:56.573 ამ მეთოდს xPositions მასივისთვის ვიძახებთ. 00:04:56.573 --> 00:05:05.232 ეს ბრძანება მასივს ეუბნება რომ ახალი mouseX მნიშვნელობა დაამატოს თავის ბოლოში. 00:05:05.232 --> 00:05:12.467 ყოველ დაკლიკებაზე ეს ბრძანება ახალ mouseX ცვლადს მასივში დაამატებს. 00:05:12.467 --> 00:05:16.768 ასე რომ მასივი ყოველ ჯერზე უფრო და უფრო გაიზრდება. 00:05:16.768 --> 00:05:22.684 იმუშავა! და ამისთვის წინანდელზე გაცილებით ნაკლები კოდი დაგვჭირდა. 00:05:22.684 --> 00:05:27.630 უმეტესად ჯობს push გამოიყენოთ როცა მასივისთვის ელემენტების დამატება გსურთ. 00:05:27.630 --> 00:05:32.182 ეს მოსახერხებელი მეთოდია მასივების ასაზრდელად პროგრამის მიმდინარეობისას, 00:05:32.182 --> 00:05:36.017 მაგალითად, როცა გვაქვს ანიმაცია, ან მომხმარებლები იყენებენ რამეს. 00:05:36.017 --> 00:05:41.295 დაახლოებით გავიარეთ 90% იმისა, თუ რაში გამოიყენება მასივები, 00:05:41.295 --> 00:05:46.792 თუმცა კიდევ მრავალი გამოყენება არსებობს მათთვის, შეგიძლიათ ეს ფორუმზე გაარჩიოთ. 00:05:46.792 --> 00:05:50.072 მაგრამ სასურველია ჯერ საფუძვლებში გაიწაფოთ.