﻿1
00:00:04,550 --> 00:00:11,000
‫في هذه المحاضرة ، سنقوم بتجميع وحدة تحكم اللاعب التي ستتلقى معلومات تفيد

2
00:00:11,000 --> 00:00:18,140
‫بأن اللعبة قد انتهت من وضع اللعبة وسوف نخلق سلوك إعادة التشغيل هذا بعد 5 ثوانٍ يعيد

3
00:00:18,140 --> 00:00:21,050
‫تحميل المستوى بعد وفاة اللاعب.

4
00:00:21,050 --> 00:00:22,730
‫دعنا نتعمق ونرى كيف يتم ذلك.

5
00:00:23,360 --> 00:00:30,710
‫لذلك عندما تنتهي اللعبة بالفعل ، نحتاج إلى إخطار وحدة التحكم في اللاعب لدينا ونحتاج أيضًا إلى وجود وحدة

6
00:00:30,710 --> 00:00:37,190
‫تحكم في اللاعب في C ++ لدينا حتى نتمكن من تنفيذ السلوك الذي يسمح لنا بإعادة تشغيل المستوى وما

7
00:00:37,190 --> 00:00:38,000
‫شابه.

8
00:00:38,210 --> 00:00:44,360
‫لذا فإن أول شيء يجب القيام به هو عندما يتم القضاء على هذه النقطة ، أولاً وقبل كل شيء ، نقوم فقط بتسجيل الدخول بشكل عشوائي.

9
00:00:44,360 --> 00:00:48,200
‫نريد التحقق مما إذا كانت اللعبة قد انتهت أم لا.

10
00:00:48,200 --> 00:00:50,390
‫الآن ، هناك نوعان من السيناريوهين.

11
00:00:50,390 --> 00:00:52,730
‫الأول حيث نفوز والآخر حيث نخسر.

12
00:00:52,760 --> 00:00:55,580
‫الخسارة هي الأولى التي سأعالجها لأنها أسهل.

13
00:00:55,580 --> 00:00:58,220
‫إذا كان البيدق المقتول هو اللاعب الذي تخسره ، فهذا كل شيء.

14
00:00:58,220 --> 00:01:04,130
‫قد تختار أن تكون لديك حياة متعددة بتكرارات مختلفة لوضع اللعبة هذا ، لكنني لن أفعل

15
00:01:04,130 --> 00:01:04,850
‫ذلك.

16
00:01:04,850 --> 00:01:06,170
‫سأعيش حياة واحدة فقط.

17
00:01:06,170 --> 00:01:07,520
‫إذا مت ، تنتهي اللعبة.

18
00:01:07,520 --> 00:01:08,900
‫قد ترغب في إعادة التشغيل.

19
00:01:09,320 --> 00:01:13,640
‫فكيف نتحقق مما إذا كان هذا البيدق هو وحدة تحكم اللاعب؟

20
00:01:13,670 --> 00:01:14,990
‫حسنًا ، هذا واضح جدًا.

21
00:01:14,990 --> 00:01:22,700
‫يمكننا فقط عمل طاقم الممثلين ، لذلك سنقوم بتمثيل وحدة تحكم اللاعب ولقتل البيدق.

22
00:01:22,700 --> 00:01:25,340
‫وبعد ذلك إذا لم يكن هذا باطلًا.

23
00:01:25,340 --> 00:01:32,810
‫لذلك دعونا نأخذ المؤشر ، مؤشر تحكم اللاعب ، ونسميه وحدة تحكم المشغل ونخزن نتيجة

24
00:01:32,810 --> 00:01:34,490
‫هذا المؤشر هنا.

25
00:01:34,490 --> 00:01:42,890
‫وسنقول بشكل أساسي إذا لم يكن هذا فارغًا ، لذلك إذا لم تكن وحدة تحكم اللاعب مؤشرًا فارغًا ، فإننا نعلم

26
00:01:43,190 --> 00:01:47,540
‫أن اللاعب مات وأن اللعبة انتهت بالنسبة للاعب.

27
00:01:47,630 --> 00:01:52,100
‫إذن ما نريد فعله هو استدعاء طريقة تحكم اللاعب.

28
00:01:52,100 --> 00:01:57,500
‫لقد ألمحنا بالفعل إلى حقيقة أن هناك طريقة انتهت اللعبة.

29
00:01:57,500 --> 00:01:58,460
‫دعونا نلقي نظرة على هذا.

30
00:01:58,460 --> 00:02:06,530
‫إذا قمنا بإجراء تحكم P وألقينا نظرة على وحدة تحكم اللاعب وسنبحث عن لعبة قد انتهت ويمكنك أن ترى ما

31
00:02:06,530 --> 00:02:12,950
‫يكفي من وجود طريقة افتراضية هنا تسمى اللعبة قد انتهت ويمكنك أن ترى أن هناك نهاية

32
00:02:12,950 --> 00:02:14,780
‫تركيز اللعبة.

33
00:02:14,780 --> 00:02:19,070
‫ما هو الفاعل الذي يجب أن نركز عليه في نهاية اللعبة افتراضيًا ، هذا مؤشر فارغ وربما هذا

34
00:02:19,070 --> 00:02:19,970
‫ما سنستخدمه.

35
00:02:20,690 --> 00:02:22,910
‫ثم نقول ، هل هذا هو الفائز؟

36
00:02:22,910 --> 00:02:28,340
‫في الأساس ، عليك السماح للاعب بالتحكم ومعرفة ما إذا كان قد فاز أم لا.

37
00:02:28,340 --> 00:02:31,760
‫ومن السهل تحديد ذلك في هذه الحالة.

38
00:02:31,760 --> 00:02:33,050
‫لا ، لم يفعلوا.

39
00:02:33,140 --> 00:02:41,480
‫لذلك سنقوم بإنهاء لعبة سهم تحكم اللعب ، ثم سأضع مؤشر فارغ لتركيز اللعبة النهائية

40
00:02:41,480 --> 00:02:47,540
‫لأننا لا نحتاج حقًا إلى هذه الميزة ومن ثم فائز.

41
00:02:47,540 --> 00:02:49,430
‫سيكون الأمر مجرد خطأ.

42
00:02:49,430 --> 00:02:53,540
‫هذه ليست وحدة تحكم اللعب الفائزة لأنها التي ماتت للتو.

43
00:02:54,370 --> 00:02:56,950
‫لذلك حان الوقت لبعض التحدي الذي يتعين عليك تنفيذه.

44
00:02:56,950 --> 00:02:59,710
‫انتهت اللعبة في وحدة تحكم اللعب.

45
00:02:59,860 --> 00:03:06,940
‫هذا يعني أننا بحاجة إلى إنشاء وحدة تحكم لاعب C ++ ، وإنشاء فئة فرعية للمخطط الخاص بها ، وتوليد هذه الفئة

46
00:03:06,940 --> 00:03:12,530
‫الفرعية للمخطط بشكل افتراضي من وضع لعبتنا ، ثم تريد المضي قدمًا والتجاوز.

47
00:03:12,550 --> 00:03:17,350
‫انتهت اللعبة ووضعت رسالة تسجيل هناك للتحقق من أننا وصلنا بالفعل.

48
00:03:17,350 --> 00:03:19,830
‫انتهت تلك اللعبة في الوقت المناسب.

49
00:03:19,840 --> 00:03:21,220
‫أوقف الفيديو واذهب.

50
00:03:21,250 --> 00:03:21,580
‫تمام.

51
00:03:21,580 --> 00:03:22,260
‫مرحبًا بعودتك.

52
00:03:22,270 --> 00:03:29,740
‫الخطوة الأولى ، قم بإنشاء وحدة تحكم مشغل C ++ ، وقم بإنشاء فئة C ++ جديدة ، ثم اذهب وابحث عن دعونا نرى ، وحدة

53
00:03:29,740 --> 00:03:30,760
‫تحكم اللاعب.

54
00:03:30,760 --> 00:03:34,720
‫بعد ذلك ، سوف نسمي هذا وحدة تحكم لاعب مطلق النار.

55
00:03:34,750 --> 00:03:36,010
‫انطلق وأنشئ هذا الفصل.

56
00:03:36,010 --> 00:03:44,560
‫بمجرد الانتهاء من ذلك ، نريد الانتقال إلى المخططات الخاصة بنا وإنشاء فصل دراسي يستند إلى ذلك.

57
00:03:44,560 --> 00:03:50,680
‫لذلك نريد وحدة تحكم لاعب مطلق النار حيث أن القاعدة تحدد ذلك وسنسميها وحدة تحكم

58
00:03:50,710 --> 00:03:53,200
‫لاعب مطلق النار بشرطة سفلية.

59
00:03:53,200 --> 00:03:57,580
‫هذا ليس مطلوبًا حاليًا ، ولكن لاحقًا ، سنرغب في ربط بعض أصول واجهة المستخدم

60
00:03:57,580 --> 00:03:59,230
‫بوحدة التحكم في المشغل.

61
00:03:59,230 --> 00:04:00,940
‫لذلك سيكون لدينا جاهزة هناك.

62
00:04:01,150 --> 00:04:07,900
‫ثم سنذهب إلى صوت التنبيه ، والمزيد من وضع اللعبة وإرساء ذلك لأننا نريد تغيير فئة وحدة تحكم اللاعب الافتراضية

63
00:04:07,900 --> 00:04:13,150
‫من وحدة التحكم في المشغل إلى وحدة تحكم لاعب مطلق النار بشرطة سفلية.

64
00:04:13,450 --> 00:04:14,050
‫رائع.

65
00:04:14,380 --> 00:04:18,280
‫ثم نريد تجاوز لعبتنا انتهت.

66
00:04:18,490 --> 00:04:21,430
‫لذلك دعونا نرى ما إذا كنا ننتقل إلى وحدة تحكم اللاعب.

67
00:04:22,060 --> 00:04:24,550
‫يمكننا أن نرى أن هذا في القسم العام.

68
00:04:24,550 --> 00:04:25,360
‫ها هو التوقيع.

69
00:04:25,360 --> 00:04:25,990
‫دعونا ننسخه.

70
00:04:25,990 --> 00:04:31,390
‫انتقل إلى وحدة التحكم في لعب مطلق النار H وقم بإنشاء الجمهور.

71
00:04:32,170 --> 00:04:35,650
‫إلى أن لعبة الفراغ الافتراضية قد انتهت.

72
00:04:35,650 --> 00:04:36,190
‫رائع.

73
00:04:36,190 --> 00:04:40,210
‫ولدينا تجاوز بالفعل لأنه تم تجاوز ذلك بوضوح من مكان إلى.

74
00:04:41,160 --> 00:04:45,330
‫وبعد ذلك ما يمكننا القيام به هو أنه يمكننا المضي قدمًا وتنفيذه.

75
00:04:45,340 --> 00:04:48,780
‫تحول التحكم p نريد الاتصال به للتذكر الفائق.

76
00:04:49,790 --> 00:04:53,060
‫ونريد أن نفعل انتهت اللعبة هكذا.

77
00:04:53,870 --> 00:05:01,770
‫ونريد أن نمر في تركيز نهاية اللعبة ويكون B هو الفائز ثم نريد تسجيل الدخول.

78
00:05:01,790 --> 00:05:02,810
‫لذلك تقوم بتسجيل الدخول.

79
00:05:02,900 --> 00:05:04,280
‫استخدم الماكرو الخاص بي هناك.

80
00:05:04,610 --> 00:05:07,240
‫لقد انتهينا.

81
00:05:07,250 --> 00:05:10,310
‫ستكون رسالة السجل التي تظهر في النهاية.

82
00:05:10,310 --> 00:05:12,880
‫لذلك دعونا نجمع ونرى ما إذا كان هذا يعمل.

83
00:05:12,890 --> 00:05:14,540
‫سنذهب إلى سجل الإخراج.

84
00:05:14,690 --> 00:05:17,690
‫اضرب اللعب واذهب واقتل.

85
00:05:17,690 --> 00:05:23,480
‫الصحة في الأساس تتراجع ببطء ومن ثم يجب أن نرى رسالة.

86
00:05:23,480 --> 00:05:24,530
‫هل وصلتنا الرسالة؟

87
00:05:24,530 --> 00:05:24,920
‫رقم.

88
00:05:24,920 --> 00:05:25,880
‫لذلك دعونا نلقي نظرة.

89
00:05:25,880 --> 00:05:27,230
‫ما هي وحدة تحكم اللاعب هنا؟

90
00:05:27,230 --> 00:05:32,870
‫يبدو أن وحدة التحكم في لاعب التسطير السفلي للصفير هي الصحيحة.

91
00:05:32,870 --> 00:05:35,570
‫لقد انتهينا من لعبة التجاوز.

92
00:05:35,570 --> 00:05:37,250
‫الآن هنا اكتشفت خطأ.

93
00:05:37,250 --> 00:05:42,170
‫الآن هذا شيء ربما لاحظه بعضكم وكان يصرخون على الشاشة هو أننا

94
00:05:42,170 --> 00:05:47,900
‫هنا لدينا وحدة تحكم اللاعب التي نلجأ إليها وأنا أشعر بالارتباك مع

95
00:05:47,900 --> 00:05:49,760
‫اللاعب الفعلي -.

96
00:05:49,760 --> 00:05:57,260
‫لذا ما نريد القيام به هنا هو أننا نريد أن نقول الحصول على المتحكم في - الذي قتل.

97
00:05:57,260 --> 00:06:05,030
‫لذا - حصلت على نقطة قتل ، احصل على وحدة التحكم Aron حتى يحصل السهم على وحدة تحكم ثم نريد إرسال ذلك إلى وحدة تحكم اللاعب

98
00:06:05,030 --> 00:06:08,600
‫وإذا كان ذلك فارغًا ، حسنًا ، يجب أن ينجح ذلك.

99
00:06:08,600 --> 00:06:10,760
‫لذلك دعونا نمضي قدمًا ونجرب ذلك.

100
00:06:10,820 --> 00:06:12,320
‫انطلق واضغط على اللعب.

101
00:06:12,800 --> 00:06:14,030
‫نقتل أنفسنا مرة أخرى.

102
00:06:15,700 --> 00:06:18,940
‫وهذه المرة أيضًا لا نتلقى أي رسالة سجل.

103
00:06:18,940 --> 00:06:21,370
‫وهذه المرة لسبب خفي.

104
00:06:21,490 --> 00:06:24,550
‫هذا لأننا انفصلنا عن وحدة التحكم.

105
00:06:24,640 --> 00:06:26,890
‫قبل أن نسمي هذا - اقتل.

106
00:06:26,890 --> 00:06:32,740
‫لذلك عندما تحاول السيطرة - هذا في الواقع لاغٍ ، ليس هناك سيطرة - بعد الآن.

107
00:06:32,740 --> 00:06:38,470
‫لذلك نحن بحاجة إلى القيام بهذا الإشعار قبل أن نقوم بالفصل من وحدة التحكم.

108
00:06:38,620 --> 00:06:42,220
‫يتضمن ذلك الانتقال إلى أعلى الخط الذي يحصل على وضع لعبتنا.

109
00:06:42,220 --> 00:06:43,600
‫لم أكن أعتقد أن ذلك سيكون مهمًا.

110
00:06:43,660 --> 00:06:47,200
‫ولكن الآن بعد أن أفكر في الأمر بالفعل ، نعم ، بالطبع هو كذلك.

111
00:06:47,200 --> 00:06:50,170
‫لذلك دعونا ننتقل إلى مستوانا ونلعب.

112
00:06:50,500 --> 00:06:51,970
‫دعنا نذهب ونطلق النار عليه.

113
00:06:51,970 --> 00:06:56,940
‫وبمجرد الانتهاء من ذلك ، يمكنك أن ترى أننا انتهينا من الطباعة كما نريد.

114
00:06:56,950 --> 00:06:59,020
‫لذلك كان لدينا بعض الفواق على طول الطريق.

115
00:06:59,020 --> 00:07:01,660
‫ليس خطأك إذا لم تحصل على ذلك في التحدي.

116
00:07:01,660 --> 00:07:03,730
‫لقد فعلت كل شيء آخر حتى تلك النقطة.

117
00:07:03,730 --> 00:07:04,990
‫هذا عظيم.

118
00:07:04,990 --> 00:07:11,050
‫لذا آمل أن تكون قد جربت تصحيح ذلك ، لكن لا تقلق إذا علقت في هذه الأشياء.

119
00:07:11,350 --> 00:07:17,890
‫آخر شيء أردت القيام به هنا هو إعادة تشغيل اللعبة على جهاز توقيت.

120
00:07:17,980 --> 00:07:24,340
‫الآن ، الطريقة التي يمكننا بها القيام بذلك واضحة إلى حد ما لأن وحدة تحكم المشغل لديها بالفعل

121
00:07:24,340 --> 00:07:25,960
‫طريقة إعادة التشغيل.

122
00:07:25,960 --> 00:07:30,220
‫لذلك إذا ذهبنا وألقينا نظرة على هذا ، فيجب أن يكون مستوى إعادة التشغيل.

123
00:07:30,220 --> 00:07:35,590
‫هذا هو الذي نريد الاتصال به ونريد القيام بذلك على جهاز توقيت.

124
00:07:35,590 --> 00:07:42,520
‫لذلك استخدمنا مؤقتات من قبل للقيام بأشياء متكررة ، ولكن يمكننا أيضًا استخدامها لتأخير إجراء

125
00:07:42,520 --> 00:07:44,050
‫بمقدار معين.

126
00:07:44,050 --> 00:07:50,170
‫لذلك سأذهب إلى وحدة تحكم لاعب مطلق النار H وأنشئ خاصية خاصة هنا.

127
00:07:50,890 --> 00:07:56,740
‫يمكن أن تكون ملكية خاصة لك والتي يتم تحريرها في أي مكان.

128
00:07:58,620 --> 00:07:59,160
‫يطفو.

129
00:07:59,160 --> 00:08:02,940
‫سيكون هذا تأخير إعادة التشغيل.

130
00:08:03,060 --> 00:08:05,760
‫يمكنك أن ترى سبب حاجتنا إلى قاعدة مخطط لهذا بالفعل.

131
00:08:05,790 --> 00:08:08,400
‫سأعطيها تأخير 5/2.

132
00:08:08,610 --> 00:08:16,920
‫ثم سأنتقل إلى C ++ وسنرغب في الحصول على مدير مؤقت عالمي.

133
00:08:17,520 --> 00:08:19,850
‫وبعد ذلك يمكننا القيام بذلك.

134
00:08:19,860 --> 00:08:21,870
‫ثم نحن بحاجة لتضمين.

135
00:08:21,870 --> 00:08:27,120
‫لذا قم بتضمين التجزئة وسيكون مدير المؤقت.

136
00:08:27,390 --> 00:08:33,210
‫H ثم يجب أن نكون قادرين على استخدام عامل التشغيل DOT لأن نوع الإرجاع هنا هو

137
00:08:33,210 --> 00:08:38,160
‫مرجع وسنقوم بعمل مؤقت محدد وهنا نحتاج إلى تمرير مقبض مؤقت.

138
00:08:38,160 --> 00:08:40,590
‫لذلك في قسم خاص ، دعنا نذهب وننشئ واحدًا.

139
00:08:40,590 --> 00:08:46,470
‫لذلك سيكون مقبض مؤقت F ، سأطلق عليه اسم مؤقت إعادة التشغيل مثل.

140
00:08:46,470 --> 00:08:51,230
‫إذن ، سيكون هذا هو المقبض الذي نمرره إلى جهاز ضبط الوقت.

141
00:08:51,240 --> 00:08:57,810
‫الشيء التالي الذي نحتاجه في التوقيع الخامس هنا هو في الواقع أن نحصل على الشيء الذي نريد الاتصال به ، والذي

142
00:08:57,810 --> 00:08:59,130
‫سيكون هذا فقط.

143
00:08:59,460 --> 00:09:05,280
‫وبعد ذلك ، أعتقد أنه يجب أن تكون الطريقة نفسها فقط.

144
00:09:05,490 --> 00:09:08,280
‫لذلك يمكننا القيام بذلك عن طريق عمل علامة العطف.

145
00:09:08,280 --> 00:09:13,920
‫ومن ثم فهي في الواقع الطريقة ، طريقة مستوى إعادة التشغيل ، التي نريد أن نطلق عليها والتي

146
00:09:13,920 --> 00:09:16,200
‫تم تحديدها في وحدة تحكم اللاعب A.

147
00:09:16,200 --> 00:09:17,910
‫لذلك وحدة تحكم لاعب.

148
00:09:19,300 --> 00:09:19,660
‫كولين.

149
00:09:19,660 --> 00:09:27,340
‫مستوى إعادة تشغيل Cullen ومن ثم نحتاج فقط إلى تجاوز التأخير الذي حددناه بالفعل على أنه تأخير إعادة

150
00:09:27,340 --> 00:09:28,210
‫التشغيل.

151
00:09:28,630 --> 00:09:35,830
‫افعل ذلك ، ضع فاصلة منقوطة في النهاية هناك ونأمل أن نعيد تشغيل أنفسنا بعد

152
00:09:35,830 --> 00:09:36,800
‫5 ثوانٍ.

153
00:09:36,820 --> 00:09:41,650
‫سنقوم الآن بجعل الاختبار أسهل قليلاً من خلال فتح بندقيتنا وجعلها أكثر

154
00:09:41,650 --> 00:09:42,520
‫فتكًا.

155
00:09:42,520 --> 00:09:48,160
‫لذلك سأذهب إلى الإعدادات الافتراضية ، وأحدث الضرر عند 50 ، لذلك سنقتل بطلقتين.

156
00:09:48,280 --> 00:09:49,900
‫دعنا نذهب ونضرب اللعب.

157
00:09:50,750 --> 00:09:52,250
‫نقتل أنفسنا بسرعة.

158
00:09:53,260 --> 00:10:00,460
‫وبعد 5 ثوانٍ ، نأمل أن نعيد تشغيل المستوى الذي نعيد تشغيله ونعود إلى المستوى.

159
00:10:00,460 --> 00:10:03,130
‫لذلك يعمل عداد الوقت الخاص بنا كما نتوقع.

160
00:10:03,640 --> 00:10:11,410
‫الآن في الإصدارات الأحدث ، ستجد أنه بدلاً من إعادة التشغيل ، ما ستراه هو رسالة خطأ تبدو

161
00:10:11,410 --> 00:10:17,740
‫مثل هذه وتتحدث عن فشل السفر وتقول شيئًا عن UUID و PID و sandbox و blah blah

162
00:10:17,740 --> 00:10:18,550
‫blah.

163
00:10:18,580 --> 00:10:23,650
‫حسنًا ، الطريقة التي يجب أن نتغلب بها على هذا عندما نحاول إعادة التشغيل ونريد التحقق مما

164
00:10:23,650 --> 00:10:29,890
‫إذا كانت إعادة التشغيل تعمل أم لا ، هي أننا نذهب إلى قائمة النقاط ، والنقاط ، والنقاط بدلاً من قائمة التشغيل وعلينا

165
00:10:29,890 --> 00:10:31,920
‫أن نلعب لعبة قائمة بذاتها.

166
00:10:31,930 --> 00:10:38,110
‫إذا كنت تلعب كلعبة مستقلة ، فسيستغرق تشغيلها وقتًا أطول قليلاً ، لكن

167
00:10:38,110 --> 00:10:41,620
‫إعادة التشغيل ستعمل كما هو متوقع.

168
00:10:41,620 --> 00:10:43,600
‫ونرى المستوى معاد تحميله.

169
00:10:43,600 --> 00:10:46,570
‫الآن ، من الواضح أنه لا يوجد الكثير من الدلائل على أن هذا سيحدث.

170
00:10:46,570 --> 00:10:50,170
‫لذلك سنلقي نظرة على واجهة المستخدم في المحاضرات القادمة.

171
00:10:50,170 --> 00:10:51,010
‫سأراك هناك.

