1 00:00:00,000 --> 00:00:00,988 2 00:00:00,988 --> 00:00:09,880 >> [음악 연주] 3 00:00:09,880 --> 00:00:13,360 >> 스피커 1 : 음, 여기에 우리가 있습니다, CS50의 마지막 P 세트. 4 00:00:13,360 --> 00:00:17,040 데에서 자신을 축하드립니다 지금까지 온 이후 첫 인사 5 00:00:17,040 --> 00:00:20,090 세계 닷컴 인쇄 마리오 피라미드. 6 00:00:20,090 --> 00:00:21,930 당신은 지난 주 웹 사이트를했다. 7 00:00:21,930 --> 00:00:25,110 그리고 우리는 또 다른 하나를 만드는 될 것입니다 이번 주, 한 당신은 할 수 있다는 8 00:00:25,110 --> 00:00:28,570 따기, 하버드 캠퍼스 드라이브 최대 CS50 직원들, 그리고 9 00:00:28,570 --> 00:00:31,910 그들을 다시 데려 자신의 주거 주택. 10 00:00:31,910 --> 00:00:35,400 >> 이제 지난 주에 우리는 PHP에서 근무 서버 측 언어. 11 00:00:35,400 --> 00:00:38,250 이 P 세트를 위해, 우리는 도입한다는 거 입니다 자바 스크립트에 12 00:00:38,250 --> 00:00:40,600 클라이언트 측 언어. 13 00:00:40,600 --> 00:00:44,010 그럼 몇 가지를 살펴 보자 제공의 유통 코드 14 00:00:44,010 --> 00:00:46,210 이 P 세트에 대한. 15 00:00:46,210 --> 00:00:49,700 >> 자바 스크립트를 폴더에,이 것 자바 스크립트 파일들을합니다. 16 00:00:49,700 --> 00:00:53,600 를 포함 buildings.js은있다 하버드 주변 건물의 배열 17 00:00:53,600 --> 00:00:57,340 자신의 정보와 캠퍼스, 및 위치. 18 00:00:57,340 --> 00:01:01,630 Houses.js 하버드의 배열 주거 주택, 그들의 19 00:01:01,630 --> 00:01:04,030 위도와 경도. 20 00:01:04,030 --> 00:01:07,020 Passengers.js이 포함되어 있습니다 승객의 배열 - 21 00:01:07,020 --> 00:01:08,600 CS50 직원들 - 22 00:01:08,600 --> 00:01:11,640 당신은 다시 데려 할 거라고 그들의 주거 주택. 23 00:01:11,640 --> 00:01:16,450 >> 많이 포함 Math3D.js, 운동과 함께 할 수있는 기능. 24 00:01:16,450 --> 00:01:19,500 당신이 수학적으로 마음이 있다면, 그러면 나는 당신을 살펴 환영합니다. 25 00:01:19,500 --> 00:01:23,530 하지만 당신은 이해 할 필요가 없습니다 거기에있는 모든. 26 00:01:23,530 --> 00:01:26,710 Shuttle.js, 그 다루는 셔틀의 움직임. 27 00:01:26,710 --> 00:01:31,450 그리고 index.html을 홈 페이지입니다 모든 것이 정말 일어나는 곳 28 00:01:31,450 --> 00:01:33,610 사용자가 사이트와 상호 작용한다. 29 00:01:33,610 --> 00:01:39,110 >> Service.css는 CSS 스타일 시트입니다, 이는 트위터에 추가 30 00:01:39,110 --> 00:01:43,960 부트 스트랩 라이브러리, 컨트롤 방법 index.html을 보인다. 31 00:01:43,960 --> 00:01:48,190 그리고 우리는 또한 service.js을 가지고있는 에 대한 서비스 기능이 포함되어 32 00:01:48,190 --> 00:01:49,010 셔틀. 33 00:01:49,010 --> 00:01:53,010 그리고 여기 당신이 될 것입니다 어디에 DOS로의 일부에 작성합니다. 34 00:01:53,010 --> 00:01:56,600 >> 이제 개체에 대해 살펴 보겠습니다과 자바 스크립트에서 연관 배열, 35 00:01:56,600 --> 00:01:59,360 어떤 의도 나 목적 교환 할 수있다. 36 00:01:59,360 --> 00:02:03,030 나는 개체에게 변수를 확인하고 싶다면 나는 지팡이 것이다라고 37 00:02:03,030 --> 00:02:04,290 그것을 선언한다. 38 00:02:04,290 --> 00:02:08,789 내가하고자하는 중괄호 핵심은 유니콘입니다 지정합니다. 39 00:02:08,789 --> 00:02:10,220 나무는 벚꽃입니다. 40 00:02:10,220 --> 00:02:12,710 길이는 13이다. 41 00:02:12,710 --> 00:02:16,370 >> 지금은 값에 액세스 할 수 있습니다 사용하여 객체의 42 00:02:16,370 --> 00:02:18,270 연관 배열 표기법. 43 00:02:18,270 --> 00:02:22,610 그래서 지팡이 인덱스 코어, I 설정할 수 있습니다 유니콘 같거나 44 00:02:22,610 --> 00:02:24,710 내가 필요로하는 경우에, 그 확인. 45 00:02:24,710 --> 00:02:26,510 아니면 도트 연산자를 사용할 수 있습니다. 46 00:02:26,510 --> 00:02:30,280 지팡이 점 나무, 벚꽃과 동일 등등, 등등. 47 00:02:30,280 --> 00:02:33,930 그래서 당신은 볼이 연관 배열과 자바 스크립트의 객체가 될 수 있습니다 48 00:02:33,930 --> 00:02:37,720 교환 및 의지 아주 편리한을 들어온다. 49 00:02:37,720 --> 00:02:41,570 >> 그 다음 우리는 건물의 배열을 참조 buildings.js합니다. 50 00:02:41,570 --> 00:02:43,870 다시 말하지만, 객체의 배열. 51 00:02:43,870 --> 00:02:48,500 나는 최선의 배열을 만들고 싶어 경우 하버드 대학 캠퍼스 건물, 52 00:02:48,500 --> 00:02:49,710 다음 나는 그것을 만들 것입니다. 53 00:02:49,710 --> 00:02:55,250 이 객체 표기법을 사용하여 위치를 나는 루트, 이름, 주소를 저장, 54 00:02:55,250 --> 00:03:00,260 모든에 대한 위도와 경도 하나의 건물 객체. 55 00:03:00,260 --> 00:03:02,930 >> 의 신속 변수에 대해 얘기하자 자바 스크립트에서. 56 00:03:02,930 --> 00:03:07,760 PHP, 자바 스크립트의 변수와 같이 약하게 또는 느슨하게 입력됩니다. 57 00:03:07,760 --> 00:03:14,120 지역 변수를 만들려면 앞에 V-A-R, VAR 변수 이름. 58 00:03:14,120 --> 00:03:17,010 >> 이제 자바 스크립트에서 함수는 것 변수의 범위를 제한. 59 00:03:17,010 --> 00:03:20,600 그래서 내에서 지역 변수가있는 경우 함수 다음 다른 기능 60 00:03:20,600 --> 00:03:22,060 액세스 할 수 없다. 61 00:03:22,060 --> 00:03:26,090 그러나 C는 달리, 루프 및 조건은하지 않습니다 변수의 범위를 제한. 62 00:03:26,090 --> 00:03:30,600 >> 당신의 내부에 그것을 선언 따라서도 조건, 전체 기능을 것입니다 63 00:03:30,600 --> 00:03:32,810 거기에 액세스 할 수 있습니다. 64 00:03:32,810 --> 00:03:35,820 이제 VAR하지 않고, 변수 글로벌 될 것입니다. 65 00:03:35,820 --> 00:03:39,170 당신은 이름을 선언하고이 경우 값을 할당 한 다음 해당 변수 66 00:03:39,170 --> 00:03:41,900 글로벌 변수가 될 것입니다 자바 스크립트에서. 67 00:03:41,900 --> 00:03:48,480 >> 이제 집에서, 우리는 연관이 집 형식 개체의 배열 위치 68 00:03:48,480 --> 00:03:52,100 모든 집은 위도이다 와 경도. 69 00:03:52,100 --> 00:03:55,140 그 다음 우리는 승객이 배열 배열, 70 00:03:55,140 --> 00:03:57,370 개체 유형의 승객. 71 00:03:57,370 --> 00:04:01,620 따라서 모든 승객은 이름을 가지고, 이름, 집. 72 00:04:01,620 --> 00:04:04,840 내가 형보고 있어요납니다 정말 그냥 의미 승객, 73 00:04:04,840 --> 00:04:08,150 모든 개체가 가지고있는 같은 키 값 쌍입니다. 74 00:04:08,150 --> 00:04:12,830 그래서 형 승용차의 모든 개체에는 사용자 이름, 이름, 집. 75 00:04:12,830 --> 00:04:14,850 >> 그래서 우리는 무엇을해야합니까 P 세트에 대해 무엇입니까? 76 00:04:14,850 --> 00:04:20,779 음, 우리는 사용자가 선택할 수 있도록해야합니다 직원까지 모두 표시 77 00:04:20,779 --> 00:04:25,090 현재있는 직원 우리의 셔틀, 그들을 내려. 78 00:04:25,090 --> 00:04:29,280 그리고 우리는 또한 여분의 얘기하자 구현 될 수있는 기능 79 00:04:29,280 --> 00:04:30,980 셔틀 P 세트. 80 00:04:30,980 --> 00:04:33,610 >> 그러나의 첫 번째 픽업에 대해 이야기하자. 81 00:04:33,610 --> 00:04:37,480 CS50 직원의 얼굴이되었습니다 모든 캠퍼스에 심어 여기서 각 82 00:04:37,480 --> 00:04:41,750 얼굴은 장소 표시로 구현 3D 지구에, 그리고 같은 83 00:04:41,750 --> 00:04:44,030 2D지도에 마커. 84 00:04:44,030 --> 00:04:47,880 사용자는 픽업을 클릭 할 때 그래서 버튼, 우리는 가까운 추가 할 85 00:04:47,880 --> 00:04:49,590 셔틀 승객. 86 00:04:49,590 --> 00:04:53,650 그리고 우리는 또한 자신의 자리를 제거 할 세계에서 표시하고이를 제거하여 87 00:04:53,650 --> 00:04:58,060 지도에서 마커를 표시하는 그들은 지금 우리의 셔틀에있어. 88 00:04:58,060 --> 00:05:02,520 >> 그래서 우리는 어떻게 감지 않으면 승객 우리의 셔틀의 범위 내인가? 89 00:05:02,520 --> 00:05:04,610 음, 기능 거리 - 90 00:05:04,610 --> 00:05:08,770 그래서 셔틀 점의 거리, 전달 위도와 경도, 의지 91 00:05:08,770 --> 00:05:12,030 전류로부터의 거리를 계산 에 셔틀의 위치 92 00:05:12,030 --> 00:05:15,850 당신이 그와 함께 지정하는 것이 포인트 위도와 경도가 없습니다. 93 00:05:15,850 --> 00:05:19,180 그래서 당신은 계산이 사용할 수 있습니다 에 셔틀 버스에서 거리 94 00:05:19,180 --> 00:05:20,310 승객. 95 00:05:20,310 --> 00:05:24,040 >> 그러나 당신은 어떻게 알 수 있습니까 곳 승객은? 96 00:05:24,040 --> 00:05:27,510 우리가해야합니다 곳 음, 그건 채우기 기능을 편집 할 수 있습니다. 97 00:05:27,510 --> 00:05:32,500 장소에게 직원을 모두 채 웁니다 세계에 승객, 98 00:05:32,500 --> 00:05:36,300 그리고지도에,하지만하지 않습니다 자신의 위치를​​ 저장합니다. 99 00:05:36,300 --> 00:05:39,850 그래서 아마 당신은 저장할 수있는 자신의 마크 및 마커를 배치 100 00:05:39,850 --> 00:05:41,570 일부 글로벌 배열. 101 00:05:41,570 --> 00:05:45,780 >> 지금은 이미 전역 배열이있다 승객들로부터의 정보를 저장하는 단계를 포함한다. 102 00:05:45,780 --> 00:05:49,960 승객 어레이는 각 승객의 이름과 자신의 집. 103 00:05:49,960 --> 00:05:54,985 아마 당신은 몇 가지 매개 변수를 추가 할 수 이 승객 개체. 104 00:05:54,985 --> 00:05:59,290 >> 우리는 모든 승객을 감지하는 데 도움이 우리의 셔틀의 범위 내에서하자 105 00:05:59,290 --> 00:06:02,500 모든 승객을 반복 승객 배열. 106 00:06:02,500 --> 00:06:07,790 자바 스크립트에 대한 루프 보일 수 있습니다 매우 유사한 다음과 같이, 107 00:06:07,790 --> 00:06:12,910 C에서 루프 사람들 아니면 우리가 사용할 수 있습니다 루프 구조에 대한 대안. 108 00:06:12,910 --> 00:06:17,130 >> 배열 var에 내가 들어, 어디 여전히 인덱스가됩니다. 109 00:06:17,130 --> 00:06:20,740 하지만 당신은 지정할 필요가 없습니다 배열 점 길이 110 00:06:20,740 --> 00:06:23,310 조건, 그리고 플러스 플러스. 111 00:06:23,310 --> 00:06:26,140 모든 승객의 위치는 자신의 자리를 마크가 없습니다. 112 00:06:26,140 --> 00:06:29,800 >> 그러나 장소 표시가없는 위도와 경도. 113 00:06:29,800 --> 00:06:34,575 우리는에 의해 이러한 매개 변수에 액세스 할 수있다 GET을 사용하여 형상을 얻는 114 00:06:34,575 --> 00:06:35,900 장소 표시에 기하학. 115 00:06:35,900 --> 00:06:39,630 그리고 우리는, 형상이되면 위도 또는 하나를 얻기 116 00:06:39,630 --> 00:06:42,600 경도, 이러한 기능을 사용하여. 117 00:06:42,600 --> 00:06:45,680 >> 그래서 지금 우리가 여부를 감지하는 방법을 알고 승객 내에 118 00:06:45,680 --> 00:06:47,920 우리의 셔틀의 범위. 119 00:06:47,920 --> 00:06:52,050 우리가 그 승객이되면, 우리는거야 어떤 승객을 추가 할 120 00:06:52,050 --> 00:06:53,140 그 범위 내에서. 121 00:06:53,140 --> 00:06:57,580 우리는 그들에 도약 할 수 있도록 할, 그리고 우리의 셔틀 버스에 좌석을 가지고 있지만 122 00:06:57,580 --> 00:06:59,640 우리는 그들을위한 충분한 공간이있는 경우. 123 00:06:59,640 --> 00:07:04,120 >> 셔틀 점 좌석 배열 것 좌석이 비어있는, 또는 여부를 나타냅니다 124 00:07:04,120 --> 00:07:05,890 누가 그 자리에 있습니다. 125 00:07:05,890 --> 00:07:11,170 그래서 좌석이 비어, 다음 경우 그 자리는 null이됩니다. 126 00:07:11,170 --> 00:07:15,930 그래서 좌석 배열을 반복, 저장 빈 좌석에 대한 검사 127 00:07:15,930 --> 00:07:20,020 당신까지 그 좌석에 승객 더 이상 빈 좌석이 없습니다. 128 00:07:20,020 --> 00:07:23,330 그리고 불행하게도, 다른 승객 기다려야 할 것 129 00:07:23,330 --> 00:07:26,000 다음 번 셔틀 주변에 온다. 130 00:07:26,000 --> 00:07:30,280 >> 그들은 셔틀에 도착하면, 우리는 할 수 있습니다 , 자신의 위치 표시를 제거 할 131 00:07:30,280 --> 00:07:32,540 3 차원 세계에서의 사진입니다. 132 00:07:32,540 --> 00:07:38,030 나는 장소 마크 (P)을 제거하고 싶어하는 경우 그때 나는 모든 기능을 얻을 것입니다 133 00:07:38,030 --> 00:07:42,790 내 땅에서, 구글 어스에서 다음 특정 장소에게 제거 134 00:07:42,790 --> 00:07:45,910 로 removeChild 함수를 사용하여 표시한다. 135 00:07:45,910 --> 00:07:51,360 그런 다음 마지막으로,의 마커를 제거하자, 임의의 2 차원지도에 아이콘 136 00:07:51,360 --> 00:07:53,650 우리가 따기 승객. 137 00:07:53,650 --> 00:07:59,790 마커, m을 제거하려면 다음 나는거야 다만 M 도트 setMap의 널 (null)을 실행합니다. 138 00:07:59,790 --> 00:08:02,920 범위 내에서 모든 승객에 대해이 작업을 수행, 당신은 픽업을 완료했습니다. 139 00:08:02,920 --> 00:08:05,056