1 00:00:01,271 --> 00:00:03,741 ვისწავლეთ მასივის შექმნა და მასზე წვდომა. 2 00:00:03,741 --> 00:00:12,859 მასივის მნიშვნელოვანი თვისებაა მისი დინამიურობა პროგრამის მიმდინარეობისას. 3 00:00:12,859 --> 00:00:15,805 ახლავე გიჩვენებთ ამაში რას ვგულისხმობ. 4 00:00:15,805 --> 00:00:21,172 აქ გვაქვს პროგრამა, რომელიც გვიჩვენებს ბუშტებიანი ჰოპერის გამოსახულებას. 5 00:00:21,172 --> 00:00:29,397 გვაქვს xPositions მასივი, რომელიც შეიცავს ინფორმაციას ორივე ბუშტის მდებარეობაზე. 6 00:00:29,397 --> 00:00:35,471 აქ კი გვაქვს ციკლი, რომელიც მასივის ყველა ელემენტს გაივლის. 7 00:00:35,471 --> 00:00:46,810 თითოსთვის, ის x-დან ჰოპერის ხელამდე ხაზს, x-ზე კი 30x40 ზომის ოვალს - ბუშტს ხატავს. 8 00:00:46,810 --> 00:00:58,343 ესეიგი თუ მეტი ბუშტი გვინდა, საკმარისია მასივს რიცხვები დავუმატოთ, მაგალითად, 300. 9 00:00:58,343 --> 00:01:02,063 მშვენიერია, ახლა ჰოპერს სამი ბუშტი აქვს. 10 00:01:02,063 --> 00:01:10,932 ვთქვათ, გვსურს პროგრამირებაში გამოუცდელს მივცეთ ახალი ბუშტების დამატების საშუალება, 11 00:01:10,932 --> 00:01:17,801 ისე, რომ სადაც მომხმარებელი დააკლიკებს ეკრანს მაუსით, ბუშტი გაჩნდეს. 12 00:01:17,801 --> 00:01:20,688 მგონი ძალიან მაგარი იქნება. 13 00:01:20,688 --> 00:01:26,640 როგორ შეიძლება ეს მოვახერხოთ? გვინდა რომ ჩვენი პროგრამა დროში იცვლებოდეს, არა? 14 00:01:26,640 --> 00:01:30,278 მომხმარებლის ყოველ დაკლიკებაზე ბუშტი უნდა გაჩნდეს. 15 00:01:30,278 --> 00:01:37,637 გადავიტანოთ ყველაფერი ხატვის ფუნქციაში რომ დროში ცვლა მარტივი გახდეს. 16 00:01:37,637 --> 00:01:43,185 ესეიგი ამას აქ ჩამოვიტანთ და გამოვყოფთ. 17 00:01:43,185 --> 00:01:48,405 ახლა გვინდა იმის შემოწმება, აწვება თუ არა მომხმარებელი მაუსს ზუსტად ახლა. 18 00:01:48,405 --> 00:01:55,339 ეს "if"-ით შეგვიძლია. if(mouselsPressed) და შემდეგ კიდევ რაღაც. 19 00:01:55,339 --> 00:02:01,176 რა უნდა გავაკეთოთ? თუ მაუსს აწვებიან, როგორმე ამ მასივს რიცხვი უნდა დავუმატოთ. 20 00:02:01,176 --> 00:02:04,232 ისევ ორელემენტიანი იყოს. 21 00:02:04,232 --> 00:02:10,464 ესეიგი გვინდა როგორმე ამ მასივს რიცხვი დავუმატოთ. მე ამის ერთ გზას გიჩვენებთ. 22 00:02:10,464 --> 00:02:18,508 შეგვიძლია დავწეროთ xPositions[2] = mouseX; 23 00:02:18,508 --> 00:02:21,681 კარგი, ახლა გიჩვენებთ რომ ეს მართლაც მუშაობს. 24 00:02:21,681 --> 00:02:26,640 დავაკლიკე და ესეც ასე, ბუშტიც მივიღე. რა გააკეთა ამ ჩანაწერმა? 25 00:02:26,640 --> 00:02:38,236 xPositions[2] პოულობს მასივის ადგილ 2-ზე მყოფ ელემენტს, რომელიც რეალურად მესამეა. 26 00:02:38,236 --> 00:02:41,742 თუ დაუკვირდებით, მესამე ადგილი თავისუფალია, იქ არაფერია. 27 00:02:41,742 --> 00:02:45,897 ამიტომ, ჯერ ვპოულობთ ამ ადგილს და შემდეგ მასში ვათავსებთ mouseX-ს. 28 00:02:45,897 --> 00:02:51,358 რადგან მანამდე აქ არაფერია, ახლა ამ ადგილის მნიშვნელობა mouseX გახდება. 29 00:02:51,358 --> 00:03:00,130 ჩვენი მასივი ახლა სამ რიცხვს შეიცავს და ციკლი მესამე ბუშტსაც დახატავს. 30 00:03:00,130 --> 00:03:04,027 ძალიან კარგი, კიდევ დავაკლიკებ რომ ნახოთ როგორ მუშაობს. 31 00:03:04,027 --> 00:03:10,690 როგორც ხედავთ, ყოველი დაკლიკებისას ხატავს მესამე ბუშტს იქ, სადაც ვაკლიკებ. 32 00:03:10,690 --> 00:03:18,938 ეს იმიტომ, რომ ადგილ 2-ს მუდმივად ახალ მნიშვნელობას ვანიჭებთ, 33 00:03:18,938 --> 00:03:22,898 მნიშვნელობად ვწერთ ახალ mouseX-ს. 34 00:03:22,898 --> 00:03:34,574 გვექნება მხოლოდ სამი ბუშტი, ერთი 0-ში, ერთი 1-ში და ერთიც, რომელსაც ვცვლით, 2-ში. 35 00:03:34,574 --> 00:03:40,235 ეს უკვე ძალიან მაგარია, მაგრამ ჩვენ გვსურს მომხმარებელს ბევრი ბუშტი დავახატვინოთ, 36 00:03:40,235 --> 00:03:43,524 ანუ ყოველ დაკლიკებაზე ახალი ბუშტი ჩნდებოდეს. 37 00:03:43,524 --> 00:03:50,852 ესეიგი, ყოველ დაკლიკებაზე უნდა ვზრდიდეთ მასივის ელემენტების რაოდენობას. 38 00:03:50,852 --> 00:03:56,106 ანუ სულ 2-ის მაგივრად, შემდეგ დაკლიკებაზე გვექნება 3, შემდეგ 4, 5, 6 და ა.შ. 39 00:03:56,106 --> 00:04:01,019 ამისთვის შეგვიძლია მთვლელი ცვლადი შევქმნათ. დავწეროთ newInd = 2; 40 00:04:01,019 --> 00:04:05,523 აქ 2-ის ნაცვლად newInd-ს დავწერთ და ბოლოს საჭირო იქნება newInd++; 41 00:04:10,270 --> 00:04:16,231 ასე ამ ცვლადს ყოველ ჯერზე დავუმატებთ ერთს. ჯერ იქნება 2, შემდეგ 3, შემდეგ - 4. 42 00:04:16,231 --> 00:04:18,473 ესეიგი ეს ცვლადი ყოველ დაკლილებაზე გაიზრდება. 43 00:04:18,473 --> 00:04:22,009 ესეც ასე! ბევრი ბუშტი. ბუშტების წვეულება! 44 00:04:22,009 --> 00:04:32,108 მაგარია, მაგრამ ეს არაა საუკეთესო გზა, რადგან მასივის ზრდა ბევრჯერ მოგვიწევს. 45 00:04:32,108 --> 00:04:35,023 ამ ეფექტის მისაღწევად უფრო მარტივი გზაც არსებობს. 46 00:04:35,023 --> 00:04:42,768 ეს ყველაფერი არ გვჭირდება. 47 00:04:42,768 --> 00:04:50,996 დავწეროთ xPositions.push და შემდეგ mouseX. 48 00:04:50,996 --> 00:04:56,573 ამ მეთოდს xPositions მასივისთვის ვიძახებთ. 49 00:04:56,573 --> 00:05:05,232 ეს ბრძანება მასივს ეუბნება რომ ახალი mouseX მნიშვნელობა დაამატოს თავის ბოლოში. 50 00:05:05,232 --> 00:05:12,467 ყოველ დაკლიკებაზე ეს ბრძანება ახალ mouseX ცვლადს მასივში დაამატებს. 51 00:05:12,467 --> 00:05:16,768 ასე რომ მასივი ყოველ ჯერზე უფრო და უფრო გაიზრდება. 52 00:05:16,768 --> 00:05:22,684 იმუშავა! და ამისთვის წინანდელზე გაცილებით ნაკლები კოდი დაგვჭირდა. 53 00:05:22,684 --> 00:05:27,630 უმეტესად ჯობს push გამოიყენოთ როცა მასივისთვის ელემენტების დამატება გსურთ. 54 00:05:27,630 --> 00:05:32,182 ეს მოსახერხებელი მეთოდია მასივების ასაზრდელად პროგრამის მიმდინარეობისას, 55 00:05:32,182 --> 00:05:36,017 მაგალითად, როცა გვაქვს ანიმაცია, ან მომხმარებლები იყენებენ რამეს. 56 00:05:36,017 --> 00:05:41,295 დაახლოებით გავიარეთ 90% იმისა, თუ რაში გამოიყენება მასივები, 57 00:05:41,295 --> 00:05:46,792 თუმცა კიდევ მრავალი გამოყენება არსებობს მათთვის, შეგიძლიათ ეს ფორუმზე გაარჩიოთ. 58 00:05:46,792 --> 00:05:50,072 მაგრამ სასურველია ჯერ საფუძვლებში გაიწაფოთ.