Zamyla CHAN: ისე, აქ ვართ, ბოლო p-მითითებული CS50. ვულოცავთ საკუთარ თავს მქონე ასე შორს, რადგან თქვენი პირველი გამარჯობა Worlds და ბეჭდვა Up პირამიდების განთავსების Mario. თქვენ გააკეთა website გასულ კვირას. და ჩვენ ვაპირებთ, რომ იყოს მიღების კიდევ ერთი ამ კვირაში, რომელიც საშუალებას გაძლევთ მართოს გარშემო ჰარვარდის კამპუსში, კრეფა up CS50 თანამშრომლები და შემოტანა მათ უკან მათი საცხოვრებელი სახლები. ახლა, გასულ კვირას ვმუშაობდით PHP, სერვერის მხარეს ენაზე. ამ p-set, ჩვენ ვიღებთ გააცნო to JavaScript, რომელიც კლიენტის მხარეს ენაზე. მოდით შევხედოთ ზოგიერთი განაწილების კოდი, რომელიც გათვალისწინებული თქვენ ამ p-set. ამ JavaScript ფოლდერი, იქ იქნება bunch of JavaScript ფაილი. არსებობს buildings.js, რომელიც შეიცავს array შენობების გარშემო Harvard კამპუსში მათი ინფორმაცია და პოზიცია. Houses.js მასივი Harvard საცხოვრებელი სახლები, მათი latitudes და longitudes. Passengers.js შეიცავს მასივი მგზავრი, CS50 პერსონალის წევრები ის, რომ თქვენ უნდა შემოტანა უკან მათი საცხოვრებელი სახლები. Math3D.js, რომელიც შეიცავს უამრავ ფუნქციები უნდა გააკეთოს მოძრაობა. თუ თქვენ მათემატიკურად მოაზროვნე, მაშინ მივესალმები თქვენ მიიღოს სახეს. მაგრამ თქვენ არ უნდა გვესმოდეს ყველაფერი არსებობს. Shuttle.js, რომელიც ეხება Shuttle მოძრაობა. და index.html არის მთავარი გვერდი ყველაფერი, მართლაც, სადაც მომხმარებელი ინტერაქციაში საიტზე. Service.css არის CSS სტილის ფურცელი, რომელიც გარდა იმისა, რომ Twitter ჩატვირთვის ბიბლიოთეკა, კონტროლის როგორ index.html გამოიყურება. და მაშინ ჩვენ ასევე გვაქვს service.js, რომელიც შეიცავს სამსახური ფუნქციები Shuttle. და აი სადაც თქვენ ვაპირებთ იყოს შევსების ზოგიერთი to-do-ს. ახლა მოდით შევხედოთ ობიექტები და ასოციაციური მასივები in JavaScript, რომელიც, ყველა განცდა, ურთიერთშემცვლელნი. იმ შემთხვევაში, თუ მინდოდა ობიექტის ცვლადი ე.წ. ჯოხი, მინდა გამოაცხადოს ის. და შიგნით იმ curly აფრთხილებს, მინდა დააკონკრეტა, ძირითადი არის unicorn, ხის არის ალუბლის, ხოლო სიგრძე 13. ახლა, მე ასევე შეგიძლიათ ფასეულობები ობიექტების გამოყენებით ასოციაციურ მასივში notation. ასე რომ ჯოხი ინდექსი core, შემიძლია მითითებული რომ თანაბარი unicorn, ან შეამოწმეთ, რომ თუ მე უნდა. ან შემიძლია dot ოპერატორი wand.wood შეადგენს ალუბლის და ა.შ. და ა.შ.. ასე რომ, თქვენ ხედავთ, რომ ასოციაციური მასივით და ობიექტების JavaScript უნდა იყოს ურთიერთშენაცვლებადი, და მოდის საკმაოდ მოსახერხებელი. მაშინ ჩვენ ვხედავთ მასივი აშენებული in buildings.js, ერთხელ მასივი ობიექტები. იმ შემთხვევაში, თუ მინდოდა მასივი საუკეთესო შენობების ჰარვარდის კამპუსში, მაშინ მინდა, რომ ეს შემდეგნაირად. გამოყენებით ამ ობიექტის notation, სადაც მე შესანახად root, სახელი, მისამართი, განედისა და გრძედის და განედის ყოველი ერთი შენობა ობიექტი. მოდით სწრაფად საუბრობენ ცვლადები JavaScript. როგორიცაა PHP, JavaScript ცვლადები რომლებიც სუსტად ან თავისუფლად აკრეფილი. უნდა შეიქმნას ადგილობრივი ცვლადი, თქვენ პრეფიქსი ცვლადი სახელი V-A-R, var. ახლა კი, JavaScript, ფუნქციები ზღუდავს ფარგლებს ცვლადები. ასე რომ, თუ თქვენ გაქვთ ადგილობრივი ცვლადი ფარგლებში ფუნქცია, მაშინ სხვა ფუნქციები ვერ ვებგვერდზე. მაგრამ განსხვავებით C, მარყუჟების და პირობები არ ზღუდავს ფარგლებს ცვლადი. ისე კი, თუ გამოაცხადოს ის შიგნით მდგომარეობა, მთელი ფუნქცია ჰქონდეს მას. ახლა, ისე ვარ, ცვლადი იქნება გლობალური. ასე რომ, თუ თქვენ უბრალოდ განაცხადოს სახელი და მივანიჭოთ ღირებულება, მაშინ, რომ ცვლადი იქნება გლობალური ცვლადი JavaScript. ახლა კი, სახლები, ჩვენ ასოციაციურ array მასპინძელი ტიპის ობიექტები, სადაც ყველა სახლი მხოლოდ გრძედის და გრძედის. მაშინ ჩვენ მგზავრებს მასივი, რომელიც არის მასივი ობიექტის ტიპი სამგზავრო. ასე რომ ყველა მგზავრი აქვს შესახებ სახელი, სახელი, და სახლში. გაითვალისწინეთ, რომ მე ვამბობ ტიპის მგზავრი, რომელიც რეალურად მხოლოდ იმას ნიშნავს, რომ ყველა ობიექტი აქვს იგივე გასაღები ღირებულება წყვილი. ასე რომ ყველა ობიექტი ტიპის სამგზავრო აქვს მომხმარებლის სახელი, სახელი, და სახლში. ასე რომ, რა გვჭირდება გააკეთოს p-set? ასევე, ჩვენ უნდა დაუშვას წევრებს შეარჩიო up პერსონალის წევრები, არიან ყველა თანამშრომელთა, რომლებიც ამჟამად ჩვენი shuttle და ვარდნა მათ off. და მაშინ ჩვენ საუბარი ზედმეტი თვისებები, რომელიც შეიძლება განხორციელდეს Shuttle p-set. მაგრამ მოდით ვისაუბროთ პიკაპი პირველი. სახეები CS50 პერსონალი ყოფილიყო დარგეს მთელ კამპუსში, სადაც თითოეული სახე ხორციელდება როგორც ადგილზე მარკა on 3D Earth, და როგორც მარკერის 2D რუკაზე. ასე რომ, როდესაც მომხმარებელი იმოქმედებს Pickup ღილაკს, ჩვენ გვინდა, რომ დაამატოთ მიმდებარე მგზავრებს Shuttle. და ჩვენ ასევე გვინდა ამოიღონ მათ ადგილას აღსანიშნავად მსოფლიოს და ამოიღონ მათი მარკერის from the map, რაც მიუთითებს, რომ ისინი ჩვენს shuttle ახლა. ასე როგორ უნდა აღმოაჩინოს, თუ მგზავრებს ფარგლებში რიგი ჩვენი shuttle? ასევე, ფუნქცია მანძილი, ისე shuttle.distance, გადადის გრძედი და განედი, გამოთვლა მანძილი მიმდინარე პოზიცია საქართველოს shuttle იმ თვალსაზრისით, რომ თქვენ დააკონკრეტა, რომ მოცემულ გრძედი და განედი. ასე, რომ თქვენ შეგიძლიათ გამოიყენოთ ეს გამოთვლა დაშორება shuttle რომ მგზავრი. მაგრამ იცით, სადაც მგზავრები არიან? ისე, რომ სადაც ჩვენ გვექნება რედაქტირება populate ფუნქცია. Populate ადგილებში ყველა შემადგენლობა in მგზავრი შევიდა მსოფლიოს და შევიდა რუკაზე, მაგრამ არ შესანახად მათი ადგილმდებარეობა. ასე რომ, ალბათ, შეგიძლიათ შესანახად მათი განათავსეთ ნიშნები და მარკერები ზოგიერთ გლობალური მასივი. ახლა, იქ უკვე არის გლობალური მასივი შენახვის ინფორმაციის მგზავრი. მგზავრები მასივი მაღაზიები თითოეული სამგზავრო სახელი და საკუთარ სახლში. იქნებ თქვენ შეგიძლიათ დაამატოთ რამდენიმე პარამეტრები იქ სამგზავრო ობიექტები. დაგვეხმაროს აღმოაჩინოს ყველა მგზავრი ფარგლებში დიაპაზონი ჩვენი Shuttle, მოდით loop მეშვეობით ყველა მგზავრების მგზავრების მასივი. For loop in JavaScript შეიძლება გამოიყურებოდეს მსგავსი რამ, ძალიან გავს იმ მარყუჟების C. ან ჩვენ შეგვიძლია გამოვიყენოთ ალტერნატიული loop სტრუქტურა, var i მასივი, სადაც i იქნება ინდექსი, მაგრამ თქვენ არ უნდა მიუთითეთ array.length მდგომარეობა და i + +. ყველა სამგზავრო ადგილმდებარეობა მოცემულია მათი ადგილზე ჩანაწერები. მაგრამ ადგილი mark არ არის გრძედის და განედი. ჩვენ შედიხართ იმ პარამეტრების მიხედვით მიღების გეომეტრიის გამოყენებით მისაღებად გეომეტრია ადგილზე გასვლის შემდეგ, და შემდეგ ერთხელ ჩვენ გეომეტრია, მიღების ან გრძედის ან განედის გამოყენებით იმ ფუნქციებს. ასე რომ, ახლა ჩვენ ვიცით, როგორ უნდა აღმოაჩინოს თუ არა მგზავრებს ფარგლებში რიგი ჩვენი Shuttle. მას შემდეგ, რაც ჩვენ იმ მგზავრების, ჩვენ გსურთ დაამატოთ ნებისმიერი მგზავრი, რომლებიც შიგნით რომ დიაპაზონი. ჩვენ გვინდა, რომ დაუშვებს მათ hop და მიიღოს ადგილს ჩვენს shuttle, მაგრამ მხოლოდ თუ ჩვენ გვაქვს საკმარისი ოთახი მათ. Shuttle.seats მასივი მიუთითებს თუ არა ადგილები ცარიელი, ან ვინ არის, რომ ადგილს. ასე რომ, თუ ადგილი არის ცარიელი, მაშინ რომ ადგილს იქნება null. ასე რომ iterate მეტი ადგილების მასივი, შემოწმების ცარიელი ადგილების, შენახვის მგზავრი შევიდა იმ ადგილების, სანამ არ აქვს რაიმე უფრო ცარიელი ადგილების. და სამწუხაროდ, არც ერთი მგზავრი უნდა ველოდოთ, რომ მომავალი დრო shuttle მოდის down. როდესაც მათ მისაღებად Shuttle, ჩვენ გვინდა ამოიღონ მათ ადგილზე გასვლის შემდეგ, რომელიც მათი სურათი 3D-სამყაროში. თუ მინდოდა ამოიღონ ადგილი მარკა p, მაშინ მე კიდევ ყველა თვისებები ჩემი Earth, საწყისი Google Earth, და შემდეგ ამოიღონ, რომ კონკრეტული ადგილი აღსანიშნავად გამოყენებით removeChild ფუნქცია. მაშინ ბოლოს, მოდით ამოიღონ მეურვეობდა, ხატი 2D რუკა, ნებისმიერი სამგზავრო, რომ ჩვენ კრეფა up. ამოიღონ მარკერის m, მაშინ მე უბრალოდ შეასრულოს m.setMap null. ამისათვის ნებისმიერი მგზავრი ფარგლებში სპექტრი, და თქვენ დასრულდა პიკაპის. გრაფიკი ფუნქცია უნდა არიან ყველა მგზავრი, რომლებიც თქვენს Shuttle, და ცარიელი ადგილია, თუ ცარიელი. ასე რომ, გრაფიკი უნდა iterate მეტი shuttle.seats, ჩვენებისას სამგზავრო ინფორმაცია ყოველ ინდექსი, და ცარიელი ადგილია, თუ ეს მაჩვენებელი null. ახლა, თუ HTML ტექსტის დააყენა შიგნით JavaScript ცვლადი, მაშინ გამოყენებით document.getElementByID, გრაფიკი can შეცვალონ შიდა HTML, რომ მოცემული ელემენტის მინიჭებით HTML ტექსტის document.getElementByID შიდა HTML ცვლადი. როდესაც მომხმარებლებს დააწკაპუნეთ Drop Off ღილაკს in index.html, რომ თქვენ მოვუწოდებთ dropoff ფუნქცია. და ეს არის ჩვენი სამუშაო განახორციელოს, რომ. In dropoff, ჩვენ გვინდა წაშლა მგზავრები shuttle მხოლოდ იმ შემთხვევაში, ჩვენ სპექტრი მათი დანიშნულების, მათი საცხოვრებელი სახლი. ასე dropoff ექნება თუ არა Shuttle არის სპექტრს ნებისმიერი სახლები და ამოიღონ ნებისმიერი საჭირო მგზავრები Shuttle. ასე როგორ უნდა შეამოწმოთ, თუ ჩვენ ამ ქედის ნებისმიერი სახლები? ასევე, კიდევ ერთხელ, ჩვენ გამოიყენონ shuttle.distance ფუნქცია, გადადის გრძედი და განედი წერტილი რომ ჩვენ შემოწმების წინააღმდეგ. მაგრამ რა არის ის ქულები? ისე, სახლები მასივი, თუ გახსოვთ in houses.js, ინახავს გრძედი და განედი თითოეული სახლი ასოციაციურ მასივში, სადაც ყველა ინდექსი არის სახელი, რომ სახლში. მაშინ ამოიღონ მგზავრები - ასევე, მხოლოდ იმ შემთხვევაში თუ ჩვენ სპექტრი მათი სახლში, რომ მათ სურთ წასვლა. ასე რომ კიდევ ერთხელ, მახსოვს, რომ მგზავრთა ინახავს სახლში რომ ყველა მგზავრი სურს წასვლა. თუ ისინი ფარგლებში სპექტრი მათი სახლში, მაშინ ჩვენ ამოიღონ, რომ სამგზავრო საწყისი shuttle.seats და კომპლექტი საკუთარი პოზიცია მასივი null. ახლა მოდით ვისაუბროთ რამდენიმე დამატებითი ფუნქციები რომელიც შეიძლება განხორციელდეს CS50 Shuttle p-set. არსებობს წერტილი სისტემა, რომლის დროსაც თქვენ ტრეკზე რამდენი მიუთითებს მომხმარებელს აქვს. ჩაშვების off მგზავრებს წარმატებით, მათ შეუძლიათ მიიღონ რაოდენობა. მაგრამ ცდილობს Drop off მგზავრებს სადაც არ არსებობს რაიმე სახლის მიმდებარე ტერიტორიაზე, ასევე, მათ შეუძლიათ მიიღონ დაჯარიმდა რომ. ასე რომ, ალბათ გსურთ ტრეკზე ქულა გლობალური ცვლადი. შეგიძლიათ განახორციელოს ალბათ ტაიმერი, სადაც მომხმარებელს აქვს გარკვეული დრო შეარჩიო ჩამოაგდეს off გარკვეული რაოდენობის მგზავრი. შესაძლოა ინტეგრირება ამ ქულების სისტემის. ან თქვენ შეგიძლიათ რედაქტირება Chart ისეთი, რომ მგზავრი დალაგებულია სახლი. ასე რომ, ალბათ, ერთგვარი ფუნქცია shuttle.seats. შეგიძლიათ განახორციელოს საფრენი ფუნქცია, სადაც თუ მომხმარებლის საშუალებებით Konami კოდი, შემდეგ shuttle გზიდან off ადგილზე და shuttle შეუძლია ფრენა. მაგრამ უსაფრთხო drop off, იმისათვის, რათა shuttle მიწის თავისი თვლები ადგილზე პირველი. თქვენ ასევე შეგიძლიათ განახორციელოს teleportation, სადაც თქვენ drop down სიაში შენობების index.html. და შერჩევის ერთი იმ, მომხმარებლის იქნება გადაიყვანეს რომ შენობა კამპუსში. OK, თუმცა, გამგზავრება მეშვეობით კედლები რამდენიმე შენობების თქვენი გზა. თქვენ ასევე შეგიძლიათ შეცვალოთ სიჩქარე Shuttle, რომელიც საშუალებას აძლევს მომხმარებელს, რათა გაიზარდოს ან შეამციროს სიჩქარე. ალბათ გსურთ გლობალური ცვლადი ტრეკზე, თუ რამდენად საწვავის shuttle აქვს, მცირდება მას, როგორც თქვენ წავიდეთ ერთად. ერთხელ თქვენ მოხვდა ნულოვანი, თუმცა, shuttle ვერ შეძლებს გადავიდეს, თუ თქვენ refueled, ალბათ გამოყენებით ღილაკს, ან კი საკუთარი ბენზინგასამართი სადგური. მაგრამ ეს ნამდვილად არ არის ამომწურავ ჩამონათვალს. შეამოწმეთ სპეც სრული სიაში, ან შესაძლოა შესთავაზოს თქვენი, თქვენი TF. ცაში არის ლიმიტი. ეს არის უკანასკნელი CS50 p-set, ისე არ fun მას. ეს იყო CS50 Shuttle. მაქვს ვთქვა, ეს იყო სიამოვნება მიღების ეს თქვენთვის წარმოების გუნდი. და იმედი მაქვს, რომ თქვენ ისარგებლონ მათ, ასევე. ჩემი სახელი არის Zamyla. და ეს იყო CS50.