-
ვისწავლეთ მასივის შექმნა და მასზე წვდომა.
-
მასივის მნიშვნელოვანი თვისებაა მისი
დინამიურობა პროგრამის მიმდინარეობისას.
-
ახლავე გიჩვენებთ ამაში რას ვგულისხმობ.
-
აქ გვაქვს პროგრამა, რომელიც გვიჩვენებს
ბუშტებიანი ჰოპერის გამოსახულებას.
-
გვაქვს xPositions მასივი, რომელიც შეიცავს
ინფორმაციას ორივე ბუშტის მდებარეობაზე.
-
აქ კი გვაქვს ციკლი, რომელიც
მასივის ყველა ელემენტს გაივლის.
-
თითოსთვის, ის x-დან ჰოპერის ხელამდე ხაზს,
x-ზე კი 30x40 ზომის ოვალს - ბუშტს ხატავს.
-
ესეიგი თუ მეტი ბუშტი გვინდა, საკმარისია
მასივს რიცხვები დავუმატოთ, მაგალითად, 300.
-
მშვენიერია, ახლა ჰოპერს სამი ბუშტი აქვს.
-
ვთქვათ, გვსურს პროგრამირებაში გამოუცდელს
მივცეთ ახალი ბუშტების დამატების საშუალება,
-
ისე, რომ სადაც მომხმარებელი დააკლიკებს
ეკრანს მაუსით, ბუშტი გაჩნდეს.
-
მგონი ძალიან მაგარი იქნება.
-
როგორ შეიძლება ეს მოვახერხოთ? გვინდა
რომ ჩვენი პროგრამა დროში იცვლებოდეს, არა?
-
მომხმარებლის ყოველ
დაკლიკებაზე ბუშტი უნდა გაჩნდეს.
-
გადავიტანოთ ყველაფერი ხატვის ფუნქციაში
რომ დროში ცვლა მარტივი გახდეს.
-
ესეიგი ამას აქ ჩამოვიტანთ და გამოვყოფთ.
-
ახლა გვინდა იმის შემოწმება, აწვება თუ
არა მომხმარებელი მაუსს ზუსტად ახლა.
-
ეს "if"-ით შეგვიძლია. if(mouselsPressed)
და შემდეგ კიდევ რაღაც.
-
რა უნდა გავაკეთოთ? თუ მაუსს აწვებიან,
როგორმე ამ მასივს რიცხვი უნდა დავუმატოთ.
-
ისევ ორელემენტიანი იყოს.
-
ესეიგი გვინდა როგორმე ამ მასივს რიცხვი
დავუმატოთ. მე ამის ერთ გზას გიჩვენებთ.
-
შეგვიძლია დავწეროთ xPositions[2] = mouseX;
-
კარგი, ახლა გიჩვენებთ
რომ ეს მართლაც მუშაობს.
-
დავაკლიკე და ესეც ასე, ბუშტიც
მივიღე. რა გააკეთა ამ ჩანაწერმა?
-
xPositions[2] პოულობს მასივის ადგილ 2-ზე
მყოფ ელემენტს, რომელიც რეალურად მესამეა.
-
თუ დაუკვირდებით, მესამე
ადგილი თავისუფალია, იქ არაფერია.
-
ამიტომ, ჯერ ვპოულობთ ამ ადგილს
და შემდეგ მასში ვათავსებთ mouseX-ს.
-
რადგან მანამდე აქ არაფერია, ახლა
ამ ადგილის მნიშვნელობა mouseX გახდება.
-
ჩვენი მასივი ახლა სამ რიცხვს შეიცავს
და ციკლი მესამე ბუშტსაც დახატავს.
-
ძალიან კარგი, კიდევ დავაკლიკებ
რომ ნახოთ როგორ მუშაობს.
-
როგორც ხედავთ, ყოველი დაკლიკებისას
ხატავს მესამე ბუშტს იქ, სადაც ვაკლიკებ.
-
ეს იმიტომ, რომ ადგილ 2-ს
მუდმივად ახალ მნიშვნელობას ვანიჭებთ,
-
მნიშვნელობად ვწერთ ახალ mouseX-ს.
-
გვექნება მხოლოდ სამი ბუშტი, ერთი 0-ში,
ერთი 1-ში და ერთიც, რომელსაც ვცვლით, 2-ში.
-
ეს უკვე ძალიან მაგარია, მაგრამ ჩვენ გვსურს
მომხმარებელს ბევრი ბუშტი დავახატვინოთ,
-
ანუ ყოველ დაკლიკებაზე
ახალი ბუშტი ჩნდებოდეს.
-
ესეიგი, ყოველ დაკლიკებაზე უნდა
ვზრდიდეთ მასივის ელემენტების რაოდენობას.
-
ანუ სულ 2-ის მაგივრად, შემდეგ დაკლიკებაზე
გვექნება 3, შემდეგ 4, 5, 6 და ა.შ.
-
ამისთვის შეგვიძლია მთვლელი
ცვლადი შევქმნათ. დავწეროთ newInd = 2;
-
აქ 2-ის ნაცვლად newInd-ს დავწერთ
და ბოლოს საჭირო იქნება newInd++;
-
ასე ამ ცვლადს ყოველ ჯერზე დავუმატებთ ერთს.
ჯერ იქნება 2, შემდეგ 3, შემდეგ - 4.
-
ესეიგი ეს ცვლადი ყოველ
დაკლილებაზე გაიზრდება.
-
ესეც ასე! ბევრი ბუშტი. ბუშტების წვეულება!
-
მაგარია, მაგრამ ეს არაა საუკეთესო გზა,
რადგან მასივის ზრდა ბევრჯერ მოგვიწევს.
-
ამ ეფექტის მისაღწევად
უფრო მარტივი გზაც არსებობს.
-
ეს ყველაფერი არ გვჭირდება.
-
დავწეროთ xPositions.push და შემდეგ mouseX.
-
ამ მეთოდს xPositions მასივისთვის ვიძახებთ.
-
ეს ბრძანება მასივს ეუბნება რომ ახალი
mouseX მნიშვნელობა დაამატოს თავის ბოლოში.
-
ყოველ დაკლიკებაზე ეს ბრძანება ახალ
mouseX ცვლადს მასივში დაამატებს.
-
ასე რომ მასივი ყოველ ჯერზე
უფრო და უფრო გაიზრდება.
-
იმუშავა! და ამისთვის წინანდელზე
გაცილებით ნაკლები კოდი დაგვჭირდა.
-
უმეტესად ჯობს push გამოიყენოთ როცა
მასივისთვის ელემენტების დამატება გსურთ.
-
ეს მოსახერხებელი მეთოდია მასივების
ასაზრდელად პროგრამის მიმდინარეობისას,
-
მაგალითად, როცა გვაქვს ანიმაცია,
ან მომხმარებლები იყენებენ რამეს.
-
დაახლოებით გავიარეთ 90% იმისა,
თუ რაში გამოიყენება მასივები,
-
თუმცა კიდევ მრავალი გამოყენება არსებობს
მათთვის, შეგიძლიათ ეს ფორუმზე გაარჩიოთ.
-
მაგრამ სასურველია
ჯერ საფუძვლებში გაიწაფოთ.