﻿1
00:00:04,480 --> 00:00:05,260
‫أهلا ومرحبا.

2
00:00:05,260 --> 00:00:09,820
‫في هذه المحاضرة ، سنقدم شيئًا جديدًا في شجرة السلوك ، الخدمات.

3
00:00:09,820 --> 00:00:14,560
‫سنكتشف ما هي الخدمات وكيف تساعدنا في سلوك التشغيل المستمر وكيف يمكننا

4
00:00:14,560 --> 00:00:16,390
‫كتابة خدماتنا في C ++.

5
00:00:16,390 --> 00:00:17,380
‫دعنا نتعمق في الأمر.

6
00:00:18,060 --> 00:00:23,940
‫الآن ، لم يتبق سوى عدد قليل من الأجزاء المنطقية في وحدة التحكم في الذكاء الاصطناعي لدينا والتي ليست في شجرة سلوكنا.

7
00:00:24,000 --> 00:00:27,000
‫واحد من هؤلاء هو تحديد موقع البداية.

8
00:00:27,000 --> 00:00:30,120
‫هذا ما زلت أرغب في تعيينه هنا من وحدة التحكم.

9
00:00:30,510 --> 00:00:36,210
‫لكن أشياء مثل القراد الآن أود أن أفعلها من داخل شجرة سلوكنا.

10
00:00:36,390 --> 00:00:38,100
‫ماذا اريد ان افعل هنا؟

11
00:00:38,190 --> 00:00:40,020
‫كيف أحصل عليه؟

12
00:00:40,410 --> 00:00:45,750
‫قم بتعيين موقع اللاعب لدينا لتحديث آخر موقع معروف للاعب.

13
00:00:46,200 --> 00:00:51,540
‫كلاهما يمكننا القيام به بشيء يسمى خدمة المخطط.

14
00:00:51,540 --> 00:00:56,030
‫لذا دعنا ننتقل إلى المخططات الخاصة بنا ونرى ما يحدث.

15
00:00:56,040 --> 00:01:03,090
‫لذلك إذا ذهبت إلى الذكاء الاصطناعي الخاص بي وفتحت شجرة السلوك ، وقمت بإرسائها في النافذة الرئيسية ، فأنا بحاجة إلى أن أوضح لك

16
00:01:03,090 --> 00:01:03,870
‫ما هي الخدمة.

17
00:01:03,870 --> 00:01:10,770
‫لم نستخدم واحدة من قبل ، وهي في الأساس طريقة لتشغيل شيء ما في كل مرة أو في كثير

18
00:01:10,770 --> 00:01:14,790
‫من الأحيان كلما كان هناك مسار معين نشطًا.

19
00:01:14,790 --> 00:01:22,380
‫لذلك إذا كان لدي خدمة هنا بشأن سلوك Chase ، فسيكون هناك شيء ما سيكون قادرًا على تشغيله طوال الوقت الذي يكون فيه سلوك Chase

20
00:01:22,650 --> 00:01:26,880
‫نشطًا ، سواء كنا نتحرك ، أو نطلق النار ، أو نرجح أيًا من هذه الأشياء

21
00:01:26,880 --> 00:01:28,800
‫، فسيكون دائمًا ادارة.

22
00:01:28,800 --> 00:01:31,200
‫ولكن إذا كنا في التحقيق فلن يكون الأمر كذلك.

23
00:01:31,410 --> 00:01:35,740
‫لذلك هذا هو بالضبط نوع الموقف الذي نتطلع إليه لاستخدام الخدمة.

24
00:01:35,760 --> 00:01:38,070
‫الآن دعونا نحصل على مثال للخدمة.

25
00:01:38,070 --> 00:01:44,670
‫أحد الأشياء التي نلاحظها عندما نلعب هو أنه بمجرد دخول الذكاء الاصطناعي في نطاقنا ونحن

26
00:01:44,670 --> 00:01:51,480
‫نتحرك ، فإنه لا يدور للنظر إلينا ويمكننا إصلاح ذلك من خلال خدمة مدمجة بالفعل هنا.

27
00:01:51,480 --> 00:01:58,680
‫لذلك إذا نقرنا بزر الماوس الأيمن على هذه العقدة وانتقلنا لإضافة خدمة والبحث عن خدمة التركيز الافتراضية ، يمكنك أن ترى أنها

28
00:01:58,680 --> 00:02:00,210
‫بلون مختلف ، إنها خضراء.

29
00:02:00,390 --> 00:02:05,370
‫وإذا حددنا تلك الخدمة الافتراضية ، فإنها أيضًا تقع أسفل عقد التسلسل هذه بدلاً من فوقها

30
00:02:05,370 --> 00:02:06,870
‫، وهو ما يفعله المصممون.

31
00:02:07,350 --> 00:02:11,940
‫لذلك مع تحديد التركيز الافتراضي ، يمكنك بعد ذلك اختيار ما تريد التركيز عليه.

32
00:02:11,940 --> 00:02:17,460
‫وفي هذه الحالة ، نريد التركيز على موقع اللاعب ، والمضي قدمًا والضغط على "حفظ" والضغط على "تشغيل".

33
00:02:17,460 --> 00:02:23,370
‫والآن إذا ذهبنا وألقينا نظرة وتحركنا ، يمكنك أن ترى أنه يدور لمتابعتنا.

34
00:02:23,790 --> 00:02:24,840
‫أشياء رائعة.

35
00:02:24,930 --> 00:02:32,160
‫نريد الآن أن نكون قادرين على تنفيذ خدمة مماثلة في C ++ من شأنها تحديث موقع لاعبنا

36
00:02:32,160 --> 00:02:38,940
‫طوال الوقت وتحديث آخر موقع معروف لدينا للاعب أثناء مطاردتنا.

37
00:02:38,940 --> 00:02:45,000
‫لذلك سنقوم بذلك كخدمتين منفصلتين ويمكنك أن ترى كيف يمكن أن تجعل الخدمات تلقائيًا الأشياء

38
00:02:45,000 --> 00:02:51,090
‫أكثر فاعلية قليلاً من القيام بذلك في وضع علامة لأنه يمكنك فقط تشغيل آخر موقع معروف للاعب

39
00:02:51,090 --> 00:02:54,870
‫عندما تكون في الجزء الأيمن من شجرة السلوك.

40
00:02:54,870 --> 00:03:00,840
‫لذلك دعنا ننتقل إلى وضع الحماية ، وننتقل إلى متصفح المحتوى ، ونضيف فئة C ++ جديدة جديدة ، وسنعرض جميع

41
00:03:00,840 --> 00:03:02,880
‫الفئات ونبحث عن خياراتنا هنا.

42
00:03:03,000 --> 00:03:11,370
‫نحن نبحث عن خدمة BT ومن ثم هناك خياران مثلما كان لدينا مع مهمة BT الخاصة بنا ، فلدينا قاعدة Blackboard

43
00:03:11,490 --> 00:03:16,080
‫وسنريد بالفعل قاعدة Blackboard لأننا نريد أن نعرف أي مفتاح

44
00:03:16,080 --> 00:03:18,180
‫يجب أن يتم التحديث.

45
00:03:18,180 --> 00:03:20,640
‫على سبيل المثال ، هل يجب أن يكون موقع اللاعب؟

46
00:03:20,640 --> 00:03:23,190
‫هل يجب أن يكون آخر موقع لاعب معروف؟

47
00:03:23,310 --> 00:03:28,830
‫لذلك سنذهب ونضرب التالي في هذا مع تحديد Blackboard Base وسنطلق

48
00:03:28,830 --> 00:03:36,540
‫على خدمة BT هذه ، وتسطير أسفل موقع المشغل مثل ذلك والمضي قدمًا وإنشاء هذا الفصل.

49
00:03:36,660 --> 00:03:42,870
‫لذلك بمجرد الانتهاء من التجميع ، سننتقل إلى رمز Visual Studio ويمكنك أن ترى أننا

50
00:03:42,870 --> 00:03:48,390
‫حصلنا على موقع مشغل خدمة BT هذا الذي يرث من خدمة Blackboard Base Call.

51
00:03:48,390 --> 00:03:49,110
‫هذا ما أردناه.

52
00:03:49,110 --> 00:03:51,870
‫الآن ما هي الوظيفة التي سننتقل إليها؟

53
00:03:52,050 --> 00:03:58,470
‫حسنًا ، سأحاول نقل أبسط وظيفة ممكنة ، وهي فقط لتعيين قيمة

54
00:03:58,740 --> 00:04:01,650
‫آخر موقع معروف للاعب.

55
00:04:01,650 --> 00:04:08,340
‫على الرغم من أنه سيتم تكوين هذا المفتاح في شجرة السلوك ، وليس هنا في نص عادي ، إلا أنه سيحصل

56
00:04:08,340 --> 00:04:12,390
‫على موقع المشغل وتعيينه على مفتاح السبورة.

57
00:04:12,390 --> 00:04:17,640
‫ولن يتم إجراء أي من أسباب التحقق من خط البصر إذا كنا نقوم بتشغيله في شجرة

58
00:04:17,640 --> 00:04:21,930
‫سلوكنا فقط عندما نطارد ، فلن نحتاج إلى فحص خط البصر.

59
00:04:21,930 --> 00:04:25,470
‫يمكننا أن نرى اللاعب الذي نعرف أن هذا هو الحال تلقائيًا.

60
00:04:25,470 --> 00:04:29,010
‫لذلك هناك تبسيط آخر للقيام بذلك في الخدمة.

61
00:04:29,520 --> 00:04:36,840
‫لذلك يجب أن يكون هذا واضحًا إلى حد ما إذا عرفنا كيفية الحصول على استدعاء طريقة هنا في خدمة BT.

62
00:04:37,230 --> 00:04:41,940
‫لذلك دعنا نذهب ونلقي نظرة على خدمة BT الخاصة بنا لمعرفة ما هو متاح هناك.

63
00:04:41,940 --> 00:04:44,100
‫ما هو التوثيق ، ماذا يمكننا أن نفعل؟

64
00:04:44,130 --> 00:04:51,120
‫الطرق الرئيسية التي يمكنك رؤيتها هنا أصبحت ذات صلة بـ C ذات الصلة بعقدة التجزئة وعند بدء البحث.

65
00:04:51,150 --> 00:04:52,020
‫عند بدء البحث.

66
00:04:52,020 --> 00:04:54,240
‫نحن لسنا مهتمين بشكل خاص بعقدة التجزئة.

67
00:04:54,240 --> 00:05:00,870
‫نعم ، هذا هو المكان الذي سنحصل فيه على تحديث طوال الوقت بأن هذه الخدمة في مسار نشط.

68
00:05:01,110 --> 00:05:02,970
‫هذا هو الوقت الذي نرغب فيه في التنفيذ.

69
00:05:02,980 --> 00:05:06,180
‫نذهب ونبحث في هذا الملف للعثور على التوقيع الكامل هنا.

70
00:05:06,390 --> 00:05:08,010
‫يمكننا رؤيتها هنا.

71
00:05:08,010 --> 00:05:09,270
‫دعنا نرى ، ما هو القسم الموجود فيه؟

72
00:05:09,270 --> 00:05:10,770
‫إنه تحت القسم المحمي.

73
00:05:10,770 --> 00:05:16,890
‫لذلك سنذهب إلى خدمة BT التي أنشأناها وننشئ قسمًا محميًا.

74
00:05:17,530 --> 00:05:24,220
‫ولصقها ، يتم تلقائيًا تجاوز هنا لأن BT Service كانت ترثها من فئة الوالدين ، لكن

75
00:05:24,220 --> 00:05:27,660
‫لا ضرر في تجاوزها مرة أخرى بأنفسنا.

76
00:05:27,670 --> 00:05:32,920
‫يمكننا إجراء تحول تحكم P لإنشاء التنفيذ ثم نريد الاتصال بـ super.

77
00:05:32,920 --> 00:05:39,550
‫لذلك نحن نريد عقدة علامة التجزئة الفائقة ونريد المرور في شركاتنا الخاصة وذاكرة العقدة الخاصة بنا.

78
00:05:39,550 --> 00:05:41,500
‫ودعنا نرى ، هناك بعض الأشياء الأخرى هنا.

79
00:05:41,500 --> 00:05:46,930
‫لدينا دلتا ثانية بالإضافة إلى ما نحتاج إلى تفويته أيضًا وننتهي في النهاية بالفاصلة

80
00:05:46,990 --> 00:05:49,960
‫المنقوطة يجب أن ننهي تنفيذ عقدة التجزئة.

81
00:05:49,960 --> 00:05:56,320
‫الآن هنا نريد أساسًا القيام بهذا السلوك من وحدة التحكم I CP ، التي نحصل فيها على

82
00:05:56,320 --> 00:05:59,590
‫مكون السبورة ، ثم تعيين قيمة كمتجه.

83
00:05:59,590 --> 00:06:04,120
‫حسنًا ، نحن نعرف كيفية الحصول على مكونات السبورة من مراجع مكونات المالك.

84
00:06:04,120 --> 00:06:05,410
‫هذا واضح ومباشر.

85
00:06:05,410 --> 00:06:11,590
‫سنقوم فقط بعمل نقطة للمالك ثم سنقوم بمكوّن الحصول على السبورة مع تذكر أننا

86
00:06:11,590 --> 00:06:17,980
‫نحتاج إلى تجزئة تضمين هنا لمكون السبورة المائلة للأمام لشجرة السلوك.

87
00:06:17,980 --> 00:06:20,410
‫ثم يمكننا استخدام عامل السهم الخاص بنا.

88
00:06:20,500 --> 00:06:27,370
‫وما يجب أن نكون قادرين على فعله هنا هو فقط تعيين القيمة كمتجه ثم نحتاج إلى مفتاح.

89
00:06:27,370 --> 00:06:30,490
‫حسنًا ، نحن نعرف كيف نتعامل مع هذا ، لكن دعنا نعيد تنشيط ذاكرتنا.

90
00:06:30,490 --> 00:06:36,370
‫إذا انتقلنا إلى خدمة BT الخاصة بنا ، يمكنك رؤية Blackboard Base ، يمكنك رؤية نفس المهمة ، فلدينا

91
00:06:36,370 --> 00:06:38,380
‫مفتاح السبورة المحدد.

92
00:06:38,380 --> 00:06:39,310
‫هذا ما سنستخدمه.

93
00:06:39,340 --> 00:06:44,950
‫الحصول على مفتاح Blackboard المحدد يحصل على المفتاح الذي تم تحديده في شجرة السلوك ثم نريد قيمة المتجه

94
00:06:44,950 --> 00:06:45,940
‫الخاصة بنا.

95
00:06:45,940 --> 00:06:46,840
‫من أين نحن ذاهبون للحصول على ذلك؟

96
00:06:46,840 --> 00:06:48,580
‫سنقوم بالضبط بنفس وحدة تحكم الذكاء الاصطناعي.

97
00:06:48,580 --> 00:06:52,960
‫سنحصل على اللاعب - أولاً وقبل كل شيء هنا في القمة.

98
00:06:52,960 --> 00:06:57,880
‫ثم نحتاج إلى التحقق مما إذا كان هذا فارغًا أم لا ونحتاج أيضًا إلى تضمين إحصائيات اللعب الخاصة بنا.

99
00:06:57,880 --> 00:07:04,600
‫لذلك دعونا نتأكد من أن لدينا إحصائيات اللعب التي تتضمنها وحدة التحكم CP المضمنة في موقع مشغل

100
00:07:04,750 --> 00:07:06,130
‫خدمة اللاعب.

101
00:07:06,790 --> 00:07:13,750
‫ثم سنفعله ، وإذا كان بيدق اللاعب يساوي مؤشر فارغ ، فإن ما نريد فعله هو العودة مبكرًا

102
00:07:13,750 --> 00:07:20,080
‫مرة أخرى هنا ، فإنه يعيد الفراغ حتى نتمكن من القيام بإرجاع مبكر سريع.

103
00:07:20,140 --> 00:07:30,070
‫ثم يمكننا استخدام بيدق لاعبنا هنا للحصول على موقع الممثل ببساطة وقد نحتاج إلى تضمينه هنا.

104
00:07:30,070 --> 00:07:30,970
‫سنرى كيف نذهب.

105
00:07:30,970 --> 00:07:34,420
‫حسنًا ، لا يضر أن تكون آمنًا ، ويفعل ذلك ، وأن تكون صريحًا بشأن هذه الأشياء.

106
00:07:34,420 --> 00:07:38,890
‫لذلك سنقوم بتضمين إطار اللعبة ثم شرطة مائلة للأمام.

107
00:07:38,890 --> 00:07:44,050
‫سيتم رهنها على H حتى نتمكن من التأكد من أننا حصلنا على كل شيء بالترتيب هنا وبعد ذلك

108
00:07:44,050 --> 00:07:46,090
‫نقوم فقط بتعيين القيمة كمتجه.

109
00:07:46,090 --> 00:07:47,350
‫يجب أن يكون هذا كل ما نحتاجه.

110
00:07:47,350 --> 00:07:49,210
‫دعنا نذهب ونجمع ونرى ما إذا كان هذا يعمل.

111
00:07:49,210 --> 00:07:50,350
‫في الحقيقة ، شيء آخر.

112
00:07:50,350 --> 00:07:54,700
‫ربما نريد اسمًا جميلًا جميلًا ، لذلك يجب أن يكون لدينا مُنشئ هنا.

113
00:07:54,700 --> 00:08:00,550
‫لذلك سأقوم بإنشاء قسم عام مع المُنشئ ، والذي سيكون اسم الفصل

114
00:08:00,550 --> 00:08:03,760
‫، ثم نبدأ وننشئ هذا التطبيق.

115
00:08:03,760 --> 00:08:08,590
‫سأقوم بإبراز تطبيقي فوق تطبيق عقدة التجزئة ومن ثم سنقوم

116
00:08:08,590 --> 00:08:17,680
‫بتعيين اسم العقدة على قدم المساواة مع أنه يجب تحديث موقع المشغل ودعنا نبني ونرى ما إذا كان ذلك يعمل.

117
00:08:17,710 --> 00:08:19,300
‫يبدو أنه كان لدي فاصلة منقوطة مفقودة.

118
00:08:19,300 --> 00:08:20,170
‫لنحاول ذلك مرة أخرى.

119
00:08:20,170 --> 00:08:23,350
‫بمجرد تجميع ذلك بنجاح ، يمكننا الانتقال إلى عدونا.

120
00:08:23,350 --> 00:08:29,350
‫بالإضافة إلى التركيز على الإعداد ، أرغب في إضافة خدمة جديدة نعرضها هنا كموقع

121
00:08:29,350 --> 00:08:34,600
‫للاعب حيث يظهر الاسم الجميل بشكل أساسي كموقع تحديث للاعب.

122
00:08:34,600 --> 00:08:40,720
‫يمكنك أن ترى أنه يريد أن يخبرك بتكرار التكتكة كل 0. 4 إلى 0. 6 ثوان.

123
00:08:40,720 --> 00:08:43,990
‫هذا أفضل من استخدام التجزئة لأننا نعلم أن التجزئة تعمل على كل إطار هنا.

124
00:08:43,990 --> 00:08:46,660
‫هذا يتم تشغيله بشكل أقل تكرارًا ، وهو أمر جيد.

125
00:08:46,660 --> 00:08:52,450
‫ويمكننا الانتقال إلى التفاصيل وإنشاء مفتاح السبورة ، والقائمة المنسدلة وتحديد

126
00:08:52,450 --> 00:08:58,720
‫ما نريد تحديثه ليس فقط موقع اللاعب ولكن آخر موقع معروف للاعب ، لأن ذلك سيحدث في كل إطار

127
00:08:58,720 --> 00:09:02,800
‫طالما أننا نطارد وهذا هو السلوك الذي نريده.

128
00:09:02,800 --> 00:09:08,940
‫لذا ، فإن عقدة خدمة أخرى نريد المضي قدمًا وإنشائها ستفعل سلوك وحدة التحكم في الذكاء الاصطناعي من أجل

129
00:09:08,950 --> 00:09:11,230
‫النزول إلى وضع علامة ومعرفة ما تبقى.

130
00:09:11,230 --> 00:09:17,530
‫بالنسبة إلينا هنا هو تحديث موقع اللاعب بشرط ما إذا كان لدينا خط نظر أم لا.

131
00:09:17,530 --> 00:09:19,390
‫لذلك نريده تحديث موقع المشغل.

132
00:09:19,390 --> 00:09:22,450
‫إذا كان لدينا خط رؤية ، فقم بإلغاء تحديد الموقع إذا لم يكن لدينا.

133
00:09:22,450 --> 00:09:25,750
‫لذلك ستكون عقدة خدمة جديدة لأنها سلوك مختلف قليلاً.

134
00:09:25,780 --> 00:09:28,270
‫سنقوم بإضافة فئة C ++ جديدة.

135
00:09:28,270 --> 00:09:33,220
‫سنقوم بإظهار جميع الفئات ومرة أخرى ، سنقوم بخدمة BT ، وتأكيد قواعد

136
00:09:33,220 --> 00:09:39,910
‫السبورة السفلية ، والفئة الأساسية لدينا ، وسنطلق عليها Beat Service Underscore.

137
00:09:40,590 --> 00:09:44,010
‫موقع اللاعب إذا شوهد.

138
00:09:44,130 --> 00:09:46,980
‫وانطلق وقم بإنشاء هذا الفصل.

139
00:09:46,980 --> 00:09:51,120
‫ولأن هذه هي كل الأشياء التي رأيتها في الغالب من قبل ، فسيكون تنفيذ هذه الخدمة هو التحدي

140
00:09:51,120 --> 00:09:51,930
‫الذي تواجهه.

141
00:09:51,930 --> 00:09:57,570
‫لذلك ستنفذ عقدة التشنج اللاإرادي باستخدام الكود الموجود في وحدة تحكم الذكاء الاصطناعي.

142
00:09:57,570 --> 00:10:04,350
‫كدليل لك ، ستحتاج إلى الحصول على مؤشر تحكم AI من داخل خدمة BT.

143
00:10:04,350 --> 00:10:09,810
‫الآن هذا هو نفسه تمامًا كما فعلنا في مهمة BT ، لذا استخدم ذلك كدليل للحصول على مؤشر تحكم

144
00:10:09,810 --> 00:10:11,340
‫الذكاء الاصطناعي.

145
00:10:11,520 --> 00:10:15,270
‫ستحتاج إلى مؤشر تحكم AI للتحقق من خط الرؤية.

146
00:10:15,270 --> 00:10:21,630
‫تذكر أن خط الرؤية هو طريقة في وحدة تحكم الذكاء الاصطناعي ومن ثم تحتاج إلى تحديث أو مسح المفتاح

147
00:10:21,660 --> 00:10:27,270
‫اعتمادًا على فحص خط الرؤية الخاص بك ثم وضع هذه العقدة في شجرة السلوك.

148
00:10:27,270 --> 00:10:32,130
‫في رأيك ، أين سيكون المستوى الصحيح لشجرة السلوك لتشغيل هذه الخدمة؟

149
00:10:32,130 --> 00:10:33,660
‫كيف ستفكر في ذلك؟

150
00:10:33,660 --> 00:10:37,110
‫كان لديك القليل من خدش الذقن ، أوقف مقطع فيديو واذهب.

151
00:10:38,070 --> 00:10:38,310
‫تمام.

152
00:10:38,310 --> 00:10:38,870
‫مرحبًا بعودتك.

153
00:10:38,880 --> 00:10:44,670
‫لقد فتح هذا خدمة تجميل جديدة في كود Visual Studio.

154
00:10:44,670 --> 00:10:51,750
‫الآن سيكون الأمر متطابقًا إلى حد كبير في الرأس ، لذلك سأقوم بنسخ ذلك في رأسنا

155
00:10:51,750 --> 00:11:00,300
‫الذي تم إنشاؤه حديثًا ، والاستثناء هو أننا نحتاج إلى تغيير اسم المنشئ للمطابقة.

156
00:11:00,300 --> 00:11:07,650
‫سنقوم الآن بإنشاء تطبيق للمنشئ ومنحه اسم عقدة لتحديث موقع المشغل إذا تمت

157
00:11:08,010 --> 00:11:12,690
‫رؤيته وإضافة فاصلة منقوطة في النهاية هنا.

158
00:11:12,720 --> 00:11:14,400
‫دعونا لا ننسى ذلك هذه المرة.

159
00:11:14,400 --> 00:11:21,660
‫ثم عد إلى C ++ ، سأقوم بتنفيذ عقدة التجزئة أيضًا وسأقوم فقط بالنسخ عبر

160
00:11:21,660 --> 00:11:25,080
‫إذا وجدنا أنفسنا موقع اللاعب.

161
00:11:25,080 --> 00:11:31,740
‫CP وسيقوم فقط بالنسخ عبر المكالمة إلى super والحصول على بيدق اللاعب والتحقق من الإرجاع

162
00:11:31,740 --> 00:11:32,610
‫الفارغ.

163
00:11:32,610 --> 00:11:36,090
‫في الواقع ، سأقوم بنسخ الجسم بالكامل وسنقوم بتعديله من هناك.

164
00:11:36,600 --> 00:11:43,380
‫لذا بنسخ ذلك عبر وسنقوم أيضًا بنسخ الوصول إلى مكون السبورة مع تضمين مكون السبورة

165
00:11:43,740 --> 00:11:50,160
‫وإحصائيات اللعب والبيدق ، لأننا نحتاج إلى الوصول إلى كل هؤلاء.

166
00:11:50,160 --> 00:11:53,130
‫في الواقع ، يتم مشاركة الكثير من الوظائف هنا.

167
00:11:53,130 --> 00:11:58,860
‫يمكنك التفكير في جعلهم يشاركون هذا الرمز بطريقة ما ، لكنني أعتقد أنه لا يوجد الكثير من الازدواجية التي

168
00:11:58,860 --> 00:12:00,360
‫نهتم بها بدرجة كافية.

169
00:12:00,840 --> 00:12:05,430
‫لذا ما علينا القيام به هنا هو أيضًا التحقق من أن لدينا جهاز تحكم بالعين.

170
00:12:05,430 --> 00:12:15,450
‫لذا سأفعل إذا كان مكون المالك أو مالك نقطة الحصول على I owner يساوي مؤشر فارغ ، فسنريد المضي

171
00:12:15,720 --> 00:12:19,470
‫قدمًا والعودة في هذه المرحلة.

172
00:12:19,950 --> 00:12:24,360
‫ثم الشيء التالي الذي نريد القيام به هو التحقق من رؤيتنا.

173
00:12:24,360 --> 00:12:32,070
‫لذلك سنقوم بعمل إذا حصل المالك على مالك ومن ثم سنقوم بعمل سهم هنا ونحتاج إلى تضمين وحدة

174
00:12:32,070 --> 00:12:34,440
‫التحكم الخاصة بنا هنا.

175
00:12:34,440 --> 00:12:36,900
‫لذلك سيكون هناك تجزئة تشمل.

176
00:12:38,120 --> 00:12:41,810
‫وبعد ذلك سأكون أنا المتحكم في H.

177
00:12:42,380 --> 00:12:48,470
‫ثم نريد عمل خط ودعنا نرى ما هو الاستخدام الصحيح هنا.

178
00:12:48,470 --> 00:12:54,650
‫إذا انتقلنا إلى وحدة التحكم I CP ، فإن خط الرؤية الثاني هو ما نريده.

179
00:12:54,650 --> 00:13:00,380
‫إذن خط الرؤية رقم 2 نحتاج إلى عمل خط رؤية للاعب بيدق.

180
00:13:00,380 --> 00:13:02,870
‫في هذه الحالة ، هل لدينا خط نظر للاعب بيدق؟

181
00:13:03,320 --> 00:13:04,820
‫هل هذا ما نفعله في CP؟

182
00:13:04,820 --> 00:13:05,810
‫دعنا فقط نتحقق من ذلك مرة أخرى.

183
00:13:05,810 --> 00:13:06,680
‫نعم نحن.

184
00:13:07,220 --> 00:13:11,450
‫ثم نرغب في المضي قدمًا وتعيين القيم بشكل مختلف.

185
00:13:11,510 --> 00:13:15,800
‫لذلك نحن نضع قيمة المتجه للاعب البيدق للحصول على موقع الممثل.

186
00:13:15,800 --> 00:13:18,620
‫نعم ، هذا إذا كان لدينا خط نظر آخر.

187
00:13:18,620 --> 00:13:22,430
‫إذا لم يكن لدينا خط نظر ، فنحن نعلم أننا بحاجة إلى توضيح هذه القيمة.

188
00:13:22,430 --> 00:13:26,030
‫لذلك سنستمر في الحصول على مكون المالك ، الحصول على مكون السبورة.

189
00:13:26,060 --> 00:13:31,640
‫ثم ستكون قيمة واضحة وسنقوم بمسح قيمة مفتاح السبورة المحدد

190
00:13:31,640 --> 00:13:37,790
‫، وهذا يجب أن يغطينا إلى حد كبير لتنفيذ موقع المشغل.

191
00:13:37,790 --> 00:13:41,480
‫إذا تمت رؤيته ، فلنذهب ونجمع ونرى ما إذا كان يعمل بشكل جيد.

192
00:13:41,480 --> 00:13:42,710
‫نجح التجميع.

193
00:13:42,710 --> 00:13:44,570
‫دعنا ندخل إلى شجرة السلوك.

194
00:13:44,570 --> 00:13:50,420
‫الآن المستوى الذي أريد أن يعمل عنده هو بشكل أساسي في المستوى الأعلى في المحدد الأولي ، لأنني أريده

195
00:13:50,420 --> 00:13:56,060
‫أن يقوم بتحديث موقع المشغل بشكل أساسي طوال الوقت لأننا نحتاج إلى أن نكون قادرين على إجهاض أي من

196
00:13:56,060 --> 00:13:59,600
‫هذه السلوكيات الأخرى بناءً على يتم تعيين موقع اللاعب.

197
00:13:59,600 --> 00:14:02,810
‫لذلك نحن بحاجة إلى أن نكون قادرين على عدم ضبطه في أي وقت.

198
00:14:02,900 --> 00:14:08,240
‫لذلك سأذهب وانقر بزر الماوس الأيمن على محدد المستوى العلوي ، وأضف خدمة ، وأضف موقع التشغيل

199
00:14:08,240 --> 00:14:08,870
‫إذا رأيت.

200
00:14:09,200 --> 00:14:13,760
‫وبعد ذلك سنحتاج إلى تحديد عقدة الخدمة تلك وتحديد مفتاح السبورة السوداء الخاص بها

201
00:14:13,760 --> 00:14:15,260
‫، والذي سيكون موقع لاعبنا.

202
00:14:15,710 --> 00:14:20,270
‫بحيث يتم تعيين واحد في موقع المشغل ، موقع المشغل المحدث ، وكلما كان الشخص الأكثر غباءًا

203
00:14:20,270 --> 00:14:22,220
‫يقوم بتحديث آخر موقع معروف للاعب.

204
00:14:22,550 --> 00:14:29,270
‫ويجب أن نكون الآن قادرين على النزول إلى وحدة التحكم في الذكاء الاصطناعي الخاصة بنا وإزالة كل هذا الرمز

205
00:14:29,270 --> 00:14:33,740
‫بشكل أساسي في TTIC لأنه تم استبداله بخدماتنا بدلاً من ذلك.

206
00:14:33,740 --> 00:14:36,350
‫ويمكننا المضي قدمًا والتجميع ومعرفة ما إذا كان ذلك يعمل.

207
00:14:36,350 --> 00:14:41,060
‫دعنا ننتقل إلى المحرر ونلعب ونرى ما إذا كان لا يزال لدينا عدو لنا.

208
00:14:41,060 --> 00:14:46,580
‫إنه قادم يركض إلينا ، ويفقد البصر ، ثم يعود إلينا ، ويبدأ في إطلاق النار.

209
00:14:46,580 --> 00:14:46,850
‫نعم.

210
00:14:46,850 --> 00:14:53,000
‫كل شيء يعمل بشكل أساسي كما كان يفعل من قبل ، إلا أنه الآن يفعل ذلك بالكامل عبر الخدمات

211
00:14:53,000 --> 00:14:55,730
‫التي كتبناها لأنفسنا في C ++.

212
00:14:55,760 --> 00:15:01,100
‫في المحاضرة التالية ، سنصلح هذا الخطأ المزعج حيث يواصل الذكاء الاصطناعي إطلاق النار

213
00:15:01,100 --> 00:15:03,290
‫، وفي النهاية يتمكن من قتل نفسه.

214
00:15:03,290 --> 00:15:04,160
‫سأراك هناك.

