>> რობ Bowden: Hi.
მე Rob.
კითხვაზე, თუ როგორ უნდა განახორციელოს ეს თამაში?
კარგად, მოდით შესვენება out პერსონალის გადაწყვეტა.
>> ასე რომ, მოდით პირველი ხელმძღვანელი ქვემოთ init ფუნქციებს, რომ ჩვენ გითხარით, რომ
განხორციელება პირველი.
პირველი, ჩვენ შევხედოთ ერთი ეს არის init paddle.
ყველა უფლება, ასე მახსოვს, რომ ჩვენ გვინდა paddle უნდა ზუსტად ორიენტირებული
x-ღერძი.
ამიტომ, ჩვენ უნდა გაერკვნენ სად, რომ უნდა წავიდეს.
>> იმის გათვალისწინებით, სიგანე board - რომელიც ასევე hash განსაზღვრული up top -
ჩვენ უნდა გამოვაკლოთ გარეთ paddle სიგანე და გავყოთ 2, რომ
ცენტრში paddle არის ცენტრში ფორუმში.
გახსოვდეთ, რომ x-კოორდინაციას ეხება ზედა მარცხენა კუთხეში paddle,
და ა.შ. ეს არის სწორედ იქ, სადაც ჩვენ გვინდა, რომ იყოს.
Y-კოორდინაციას მნიშვნელობა არ აქვს იმდენი იმიტომ, რომ ჩვენ შეგვიძლია განვათავსოთ
იქ, სადაც გვინდა.
ასე რომ, ჩვენ instantiating paddle, ჩვენ დავსახეთ ფერი: შავი, ჩვენ მითითებული შეავსოთ True
ამიტომ შევსებული მართკუთხედი, და ჩვენ შემდეგ დაამატოთ ეს ფანჯარა და დაბრუნება
paddle.
და რომ ეს ინიციალიზებისას paddle.
>> ეს იქნება მსგავსი განთავსების init scoreboard.
ამიტომ, ჩვენ ვაპირებთ ინიციალიზაცია ეტიკეტების, ჩვენ ვაპირებთ მითითებული ფერი
ღია რუხი - თქვენ შეგიძლიათ აირჩიოთ რასაც თქვენ გსურთ - ჩვენ ვაპირებთ მითითებული შრიფტის
sans serif 48 -
შეიძლება ასევე შეარჩიო რაც გაგიხარდებათ -
ჩვენ დაამატოთ ეს ფანჯარა.
ახლა ეს send უკან ნამდვილად არ არის აუცილებელია, რომ ეს მხოლოდ იმ შემთხვევაში თუ რამე
სხვაგან ხდება გადახურვა იარლიყი.
მაშინ, როდესაც ჩვენ ვიყენებთ გამოავლინონ შეჯახება, გამოავლინონ Collision იქნება აღმოაჩინოს სხვა
რამ ადრე იგი ცნობს იარლიყი.
მაგრამ ეს ნამდვილად არ უნდა მოახდინოს us ამ პროგრამაში.
>> და ბოლოს, ჩვენ გვაქვს ამ განახლების Scoreboard ფუნქცია, რომ ჩვენ დაწერა.
მოდით შევხედოთ, რომ.
ახლა, აქ ჩვენ ვხედავთ, რომ რაღაც თითქმის იდენტურია, რაც
დავინახეთ label.c.
ამიტომ ჩვენ გვაქვს ეტიკეტების -
ხასიათი ბუფერული 12 პერსონაჟი, რაც არის საკმარისი იმისათვის, რომ გაუმკლავდეს ნებისმიერ
რიცხვი, უარყოფითი ან დადებითი.
მაშინ ჩვენ ვიყენებთ sprintf კოპირება მიუთითებს შევიდა, რომ ბუფერული.
ასე s ამ შეიცავს string წარმოადგენს პუნქტების რაოდენობა.
>> და ბოლოს, ჩვენ მითითებული ეტიკეტზე რომ სიმებიანი.
და მაშინ ჩვენ გვჭირდება ცენტრში ეტიკეტების იმ შემთხვევაში, თუ ჩვენ წავიდა ცხრიდან 10
ქულები და ჩვენ გადავიდა იგი.
ასე რომ, ჩვენ გამოვთვალოთ x და y-კოორდინატები ეტიკეტების რომელიც
კიდევ სიგანე და სიმაღლე ფანჯარა.
მიუხედავად იმისა, რომ ჩვენ შეგვიძლია აგრეთვე უბრალოდ გამოიყენოთ მუდმივები სიგანე და სიმაღლე hash
განსაზღვრული up დაბრუნება.
ჩვენ ასევე მიიღოს სიგანე და სიმაღლე ეტიკეტების და ყოფს
რომ 2 ცენტრში.
და მაშინ ჩვენ ვიყენებთ Set საიდან რეალურად ამას რომ ადგილმდებარეობა.
ასე რომ, ეს init scoreboard.
>> OK.
ასე რომ init ბურთი იქნება ძალიან გავს რომ init paddles ასევე.
ჩვენ ვხედავთ, რომ ჩვენ გამოყენებით newgoval რათა instantiate ახალი ბურთი.
და აქ ჩვენ გამოყენებით 2 ჯერ რადიუსში როგორც სიგანე ბურთი და 2
ჯერ რადიუსი, როგორც სიმაღლე დაადასტურა.
ახლა, ასევე newgoval, x და y-კოორდინირება, რომ ჩვენ კორიდორი ხდება
ეხება ზედა მარცხენა ბურთი, რომელიც რეალურად
გარეთ ბურთი თავად.
რათა მიიღოს ბურთი ზუსტად ორიენტირებული ფორუმში, ჩვენ უნდა გაიაროს
სიგანე იყოფა 2 ცენტრი და მაშინ სხვაობა out რადიუსი დააყენებს
ფაქტობრივი ცენტრში ბურთი შევიდა ცენტრში ფორუმში.
და ჩვენ ყველაფერს ზუსტად იგივე რამ რომ y-ღერძი, გარდა გამოყენებით
სიმაღლე ნაცვლად სიგანე.
>> ასე რომ განათავსებს ბურთი ცენტრში.
და ეს instantiates ბურთი, მითითებული ფერი შავი, შეავსოთ ბურთი,
მაშინ საბოლოოდ დაამატოთ ეს ფანჯარა და დაბრუნება.
და რომ ეს ინიციალიზებისას დაადასტურა.
>> ახლა მოდით შევხედოთ init აგური, რომელიც ოდნავ მეტი
რთული, მაგრამ ეს საკმაოდ მსგავსი init paddle.
ახლა, პირველ რიგში, ჩვენ უნდა გაერკვნენ სიგანე თითოეული აგურის.
გახსოვდეთ, რომ ჩვენ გვაქვს მუდმივი მოუწოდა ზარი, რომელიც განსაზღვრავს
მწკრივების რიცხვი აგური რომელიც ჩვენ გაგვაჩნია.
ასე რომ, ჩვენ ვაპირებთ, რათა დადგინდეს, სიგანე ერთი აგურის აღების სიგანე
მთელი ფორუმში, გამოკლება out ზომა ჩვენი უფსკრული -
რომელიც hash განსაზღვრული up თავზე და ეხება რაოდენობის pixels, რომ
უნდა იყოს თითოეული აგურის -
და ამიტომ ჩვენ ვაპირებთ აქვს სულ უფსკრული ჯერ მოუწოდებს ცარიელი პიქსელი
ერთი row.
და რომელიც ასევე ეხება ზოგიერთი ცარიელი pixels მარცხნივ და მარჯვნივ
მარცხენა სვეტი და მარჯვენა სვეტში აგურის.
>> ასე რომ სხვაობა იმ ცარიელი pixels ტოვებს us რიგი pixels, რომ
აგურის რეალურად გამოყენებით.
და მაშინ ჩვენ გავყოთ ზარების მისაღებად ნომერი pixels per აგურის.
ასე რომ აქ ჩვენ განსაზღვრავს მასივი რომ მხოლოდ განსაზღვრავს ფერები გვინდა, თითოეული
გრაფაში აგური.
თუ ჩვენ გვქონდა უფრო რიგები აგური, ვიდრე ფერები, რომ ჩვენ მითითებული, ჩვენ დავინახავთ
რომ ჩვენ უბრალოდ loop უკან გარშემო და გამოყენება red კიდევ ერთხელ, და შემდეგ ფორთოხლის და
ყვითელი და ასე შემდეგ.
>> ასე რომ, როგორც p განხორციელება სპეც მინიშნებები, ჩვენ ვართ აპირებს loop მთელი რიგები და
სვეტების აგური.
მაგრამ სანამ ჩვენ loop მეტი სვეტები, ჩვენ აქ რომ ჩვენ სასურველი
y პოზიცია ყოველი აგურის ამ კონკრეტულ row.
ჩვენ შეგვიძლია აგრეთვე გადაადგილება ამ მეორე მარყუჟი, მაგრამ მაშინ ჩვენ უბრალოდ უნდა იყოს
აკეთებს გაანგარიშება მეტი და მეტი ერთხელ, როდესაც ჩვენ არ უნდა.
>> ასე რომ y პოზიცია აგურის აპირებს უნდა იყოს ზღვარი, რომელიც hash
განსაზღვრული up დაბრუნება და მხოლოდ ეხება შორის სივრცე ზევით გამგეობისა და
დაწყების ყველა აგური.
და ჩვენ ვაპირებთ დავამატოთ, რომ ზედიზედ რომ ჩვენ შესახებ ჯერ სიმაღლე
ინდივიდუალური აგურის plus უფსკრული რომ არის შორის აგურის.
ასე რომ, ეს არის ასევე ვერტიკალური უფსკრული თითოეული აგურის.
ასე რომ გვაძლევს y-კოორდინაცია აგურის.
>> ასე რომ, აქ ჩვენ ვაპირებთ გამოთვლა x-კოორდინაციას აგურის.
ახლა, ჩვენ უფსკრული იყოფა 2 რადგან, მახსოვს, ადრე, მე ვთქვი, რომ
მარცხენა მხარეს ფორუმში, ჩვენ ვაპირებთ დატოვოს პატარა სივრცეში.
ასე რომ უფსკრული იყოფა 2 არის, რომ სივრცეში.
და მაშინ ჩვენ დასძინა, რომ სვეტი რომ ჩვენ შესახებ ჯერ სიგანე პლუს
უფსკრული, სადაც სიგანე თანხის სივრცეში რომ ერთი აგურის იკავებს და
მაშინ უფსკრული არის სივრცე შორის ყოველი აგურის.
ასე რომ ითვლის x-კოორდინაცია აგურის.
>> ახლა ჩვენ უბრალოდ უნდა instantiate აგურის რომ x და y-კოორდინაცია
გამოყენებით სიგანე რომ ჩვენ გამოითვლება თითოეული აგურის, და შესვენების სიმაღლე, რომელიც
hash განსაზღვრული up დაბრუნება.
ჩვენ დავსახეთ ფერის აგურის.
გაითვალისწინეთ, რომ ჩვენ ჩვენი ფერები მასივი და ჩვენ ავლით ზედიზედ რომ იყო
on mod num ფერები რომელიც აპირებს us გადაიტანოთ უკან გარშემო წითელი თუ ჩვენ
აქვს უფრო რიგები, ვიდრე ფერები.
და ბოლოს, ჩვენ შეავსოთ აგურის ფერი და დაამატოთ ეს ფანჯარა.
>> და რომ არის ის.
ასე რომ, ეს ყველა ჩვენი ინიციალიზაცია მეთოდები.
ახლა ჩვენ უნდა შევხედოთ, რომ სანამ loop, რომ თქვენ უნდა შეავსოთ შემოსული
ასე რომ, აქ ჩვენ ვხედავთ, რომ ეს არის ჩვენი, ხოლო loop რომ აპირებს გაგრძელდება
თამაში მთავრდება, რომელიც არც საშუალება ჩვენ ამოიწურა სიცოცხლეს ან
ჩვენ ამოიწურა აგური.
>> ასე რომ, პირველი, რაც ჩვენ არის Wait for დაჭერით.
ასე რომ თამაში ელოდება us რეალურად დააწკაპუნეთ სანამ ბურთი იწყება მოძრავი.
და მაშინ ჩვენ ვაპირებთ to decrement ცხოვრებაში.
ასე რომ, თუ ჩვენ გვქონდა სამი სიცოცხლე, ახლა ჩვენ ქვემოთ ორი სიცოცხლე, ჩვენ ჩვენი
მესამე სიცოცხლე.
ჩვენ ვაპირებთ ცენტრი დაადასტურა.
ახლა, ეს ნამდვილად არ აპირებს დაეხმაროს კონტაქტი პირველივე ცხოვრებაში ჩვენ ითამაშოს
მას შემდეგ, რაც ბურთი უკვე აპირებს უკვე ორიენტირებული, როდესაც ჩვენ
instantiated იგი.
მაგრამ ჩვენ ვხედავთ, როდესაც ჩვენ დასრულდება მდე დაკარგვის ცხოვრება და loop უკან გარშემო, მაშინ ჩვენ
აპირებს გვინდა recenter ბურთი ბოლოში ფორუმში დაბრუნება
ცენტრი.
>> ასე რომ, ახლა აქ ჩვენ უნდა გენერირება x სიჩქარე დაადასტურა.
და, როგორც თითო Spec, ჩვენ გამოყენებით d rand 48 გენერირება შემთხვევითი ნომერი
მიუთითოთ სიჩქარე.
ჩვენ დასძინა ერთი, რომ რადგან ჩვენ მხოლოდ მინდა სიჩქარის დიაპაზონი ერთი
ორ ნაცვლად ნულოვანი ერთი.
და ბოლოს, ჩვენ გამოყენებით d rand 48 ისევ რათა დადგინდეს, თუ არა ბურთი
აპირებს გადავიდეს მარცხნივ ან უფლება უნდა დაიწყოს.
>> ასე d rand 48 დააბრუნებს შემთხვევითი რიცხვების შორის ნულოვანი და ერთი, და ამიტომ ითხოვს
თუ ეს ნაკლებია, ვიდრე 0.5, ჩვენ გვაქვს 50 50 შანსი გადასვლის სიჩქარე
ბურთი იყოს უარყოფითი.
და ბოლოს, ჩვენ მითითებული ვერტიკალური სიჩქარე ბურთი იყოს მხოლოდ გარკვეული მუდმივი.
ვირჩევთ სამი.
და ახლა ჩვენ გვაქვს კიდევ ერთი მარყუჟი.
>> ასე რომ, ეს შიდა loop არის გავაგრძელებთ.
ყურადღება მიაქციეთ, რომ აქ, ხოლო აგური მეტია zero -
ასე რომ, თუ ჩვენ ამოიწურა აგური, ჩვენ მოიგო თამაში და ჩვენ შეგვიძლია
დაარღვიოს ამ loop -
და ყველა ოჯახის y Ball ნაკლები სიმაღლე მინუს 2 ჯერ რადიუსში.
რა ეს აღიარება არის თუ ბურთი ხდება წასვლა წარსულში paddle, in
ასეთ შემთხვევაში თქვენ დაკარგავთ ცხოვრებაში.
>> ეძებს შიგნით ამ loop ჩვენ შემოწმების მაუსის ღონისძიება.
ასე რომ, თუ არ არსებობს მაუსის ღონისძიება, რომელიც იმას ნიშნავს, რომ ჩვენ გვინდა, რომ შეამოწმოს
თუ მაუსის გადავიდა, და თუ მაუსის გადაიყვანეს, ჩვენ გვინდა, რომ გვქონდეს
paddle შეინარჩუნოს ერთად მაუსის.
ასე რომ, ამის გაკეთება, ჩვენ გამოვთვალოთ new პოზიცია paddle, რომელიც აპირებს
დაიბრუნოს პოზიცია mouse - რომელიც grabs პოზიცია გამოყენებით
ღონისძიება, რომელიც ჩვენ ჩააბარა -
და მაშინ ჩვენ ვაპირებთ გამოვაკლოთ out paddle სიგანე იყოფა 2, ასე რომ,
paddle რჩება ორიენტირებული მაუსი ნაცვლად, მარცხენა ფლანგზე paddle
დარჩენის ორიენტირებული.
>> ასე რომ, ახლა ჩვენ ასევე გვინდა ვიყოთ დარწმუნებული, რომ ჩვენ არ წავიდეთ მეტი მარცხენა ან მარჯვენა
მხარეს ფორუმში.
და ა.შ. აქ ჩვენ უბრალოდ შემოწმების თუ paddle იქნება off მარცხენა მხარეს
ფორუმში, მხოლოდ გამყარებაში მას მარცხენა მხარეს.
და აქ ჩვენ შემოწმების თუ paddle იქნება მეტი მარჯვენა მხარეს
საბჭო, მხოლოდ გამყარებაში მას მარჯვენა მხარეს.
და ბოლოს, ჩვენ რეალურად მითითებული მდებარეობა paddle.
>> ახლა, თუ არ იყო მაუსის მოძრაობა, ეს ნიშნავს, რომ ჩვენ ვაპირებთ
გსურთ გადაადგილება დაადასტურა.
ასე რომ, ჩვენ უკვე გვაქვს x და y სიჩქარე ბურთი
და ამიტომ ჩვენ გადატანა.
მაგრამ ახლა ჩვენ გვინდა აღმოაჩინოს რამდენიმე რამ.
ასე რომ აქ ჩვენ გამოვლენის შემთხვევაში, თუ ჩვენ მოხვდა ან მარცხენა ან მარჯვენა მხარეს
საბჭო, გვინდა, რომ ბურთი Bounce.
ასე რომ, ამ შემთხვევაში, ჩვენ დავსახეთ x სიჩქარე უარყოფითი x სიჩქარე.
>> იმ შემთხვევაში, თუ ბურთი მოხვდა ზედა ფორუმში, მაშინ ჩვენ ასევე გვინდა, რომ ბურთი Bounce.
მაგრამ ახლა ჩვენ გვინდა, რომ შეიცვალოს y სიჩქარე.
გაითვალისწინეთ, რომ ჩვენ არ გვაქვს პირობა ბურთი hitting ბოლოში
board მას შემდეგ უკვე ტყვედ აქ ამ ხოლო loop.
>> და ბოლოს, ჩვენ გვინდა, რომ აღმოაჩინოს ზოგიერთი შეჯახება, სადაც თუ ბურთი მოხვდა
ან paddle ან აგურის, ჩვენ გვინდა დაკავდით განსაკუთრებულ შემთხვევაში რამ.
ასე რომ, თუ არ იყო შეჯახება, რომელშიც შემთხვევაში ობიექტი არ იქნება null, მაშინ,
თუ ობიექტი მოხვდა paddle, რომ ჩვენ უბრალოდ გვინდა Bounce ბურთი.
და აქ, ასევე ჩვენ მითითებული მდებარეობა ბურთი მაღლა paddle.
გაითვალისწინეთ, რომ ჩვენ აღების x თანამდებობაზე ბურთი და მხოლოდ reusing რომ.
მაგრამ აქ ჩვენ ვიღებთ y პოზიცია საქართველოს paddle და მოძრავი ბურთი
ზემოთ paddle.
>> ეს არის განსაკუთრებული შემთხვევა ისე, რომ ბურთი არ მოხვდა paddle და შემდეგ,
სანამ შეუძლია გადაადგილება off paddle, სხვა loop მიდის გარშემო და
იგი მიიჩნევს, რომ ეს ჯერ კიდევ პანელზე და ასე რომ y სიჩქარე იღებს დაუბრუნდნენ
უარყოფითი და შემდეგ ბურთი უბრალოდ სახის ჩხირები bouncing on paddle.
ასე რომ, თუ ჩვენ არ მოხვდა paddle, მაშინ ჩვენ ასევე გვინდა შევამოწმოთ
თუ ჩვენ მოხვდა აგურის.
და ა.შ. ეს არის, თუ როგორ შეგვიძლია შემოწმება თუ ჩვენ მოხვდა აგურის.
>> ჩვენ უნდა შევამოწმოთ ეს იმიტომ, რომ ჩვენ შეიძლება რეალურად მოხვდა label და ჩვენ
არ მინდა ამოიღონ იარლიყი.
ასე რომ, თუ ჩვენ მოხვდა აგურის, ჩვენ შეგვიძლია ამოიღონ, რომ აგურის ფანჯრიდან, decrement
ჩვენი გრაფი აგურის, გავზარდოთ ჩვენი პუნქტების რაოდენობა და ახლა ჩვენ უნდა
განაახლოთ scoreboard სწორედ იგივე, რაც ჩვენ ვნახეთ ადრე, როცა დავინახეთ,
init scoreboard.
მაგრამ ახლა ჩვენ უბრალოდ განახლება მატჩის რადგან ჩვენ შეიცვალა
პუნქტების რაოდენობა.
და ეს ახლა უნდა არიან, რომ ჩვენ მოხვდა კიდევ ერთი შესვენება.
>> და ბოლოს, თუ ჩვენ მოხვდა აგურის ჩვენ ასევე გვინდა Bounce.
ასე რომ, საბოლოოდ, ჩვენ პაუზის მხოლოდ ისე, რომ ბურთი არ არის მოძრავი სუპერ სწრაფი და ჩვენ
შეიძლება რეალურად მოხვდა იგი ჩვენს paddle.
და ეს საკმაოდ ბევრი იყო.
ასე რომ, ახლა ჩვენ გვინდა loop თავში დაბრუნება ეს მაშინ, როცა მარყუჟის და გაგრძელდება მანამ, სანამ
ან ჩვენ დაკარგავთ ცხოვრებაში ან ჩვენ ამოიწურა აგური.
>> რა მოხდება, თუ ჩვენ დაკარგავთ ცხოვრებაში?
მაშინ ჩვენ ვაპირებთ გასასვლელად ეს მაშინ, როცა loop, და ვნახავთ, ნება loop უკან
ყველაზე გარე, ხოლო loop.
ამ შემთხვევაში, ჩვენ ვაპირებთ შეასრულოს ამ წყობის ისევ.
და ამ წყობის აპირებს us დაველოდოთ ერთი დაჭერით, decrement ჩვენი
სიცოცხლე, recenter ბურთი, recalculate x და y სიჩქარე, და
მაშინ განაახლებს თამაში.
>> და ისე, რომ გაგრძელდება მანამ, სანამ ან აგურის მთავრდება მყოფი ნაკლები
ან ტოლია zero -
ამ შემთხვევაში ჩვენ თეთრებმა თამაში -
ან ცხოვრების ნაკლებია, ვიდრე ნულოვანი, რომელშიც საქმე დავკარგეთ თამაშის.
ასე რომ, კიდევ ერთხელ, რომ იმ შემთხვევაში, ჩვენ შესვენება out რომ ხოლო მარყუჟის, და მივაღწევთ აქ
სადაც ჩვენ ვაპირებთ დაველოდოთ click ადრე არსებული თამაშში ისე, რომ
თამაში არ მხოლოდ მაშინვე დახურვა ჩვენზე.
და ბოლოს, ჩვენ დახურვა ფანჯარა და რომ არის ის.
ჩემი სახელი არის რობ, და ეს იყო Breakout.