در این مطلب، ویدئو Refactoring A Tower Defense Game در پایتون // CODE ROAST با زیرنویس فارسی را برای دانلود قرار داده ام. شما میتوانید با پرداخت 15 هزار تومان ، این ویدیو به علاوه تمامی فیلم های سایت را دانلود کنید.اکثر فیلم های سایت به زبان انگلیسی می باشند. این ویدئو دارای زیرنویس فارسی ترجمه شده توسط هوش مصنوعی می باشد که میتوانید نمونه ای از آن را در قسمت پایانی این مطلب مشاهده کنید.
مدت زمان فیلم: 00:36:48
تصاویر این ویدئو:
قسمتی از زیرنویس این فیلم:
00:00:00,000 –> 00:00:03,220
وقت آن است که یک کد دیگر را برشته کنیم
2
00:00:03,220 –> 00:00:05,670
[تشویق]
3
00:00:05,670 –> 00:00:06,330
[موسیقی]
4
00:00:06,330 –> 00:00:07,520
[تشویق]
5
00:00:07,520 –> 00:00:09,440
مدتی طول کشید تا قسمت دوم سریال را انجام دهم،
6
00:00:09,440 –> 00:00:11,679
متوجه شدم که
7
00:00:11,679 –> 00:00:13,519
قسمت اول بسیار طولانی شد زیرا
8
00:00:13,519 –> 00:00:16,160
اساساً سعی کردم همه چیز را درست کنم بنابراین
9
00:00:16,160 –> 00:00:17,600
امروز نمی روم برای انجام یک Refactor کامل،
10
00:00:17,600 –> 00:00:19,680
اما من هنوز هم سعی می کنم یک
11
00:00:19,680 –> 00:00:21,840
تجزیه و تحلیل کاملاً کامل از کد انجام دهم این
12
00:00:21,840 –> 00:00:24,720
ویدیو توسط زبانه 9 حمایت می شود و تکمیل کد ai
13
00:00:24,720 –> 00:00:26,480
سیستمی است که مستقیماً با ایده
14
00:00:26,480 –> 00:00:28,480
شما ادغام می شود،
15
00:00:28,480 –> 00:00:30,320
بعداً از آن استفاده خواهم کرد و به شما نشان خواهم داد که چگونه
16
00:00:30,320 –> 00:00:32,159
کار می کند و همچنین در مورد برخی از
17
00:00:32,159 –> 00:00:34,239
ویژگی هایی که برای این کد روست ارائه می دهد صحبت می
18
00:00:34,239 –> 00:00:36,160
کنیم. ما می خواهیم به یک
19
00:00:36,160 –> 00:00:39,840
بازی دفاعی برج ارائه شده
20
00:00:39,840 –> 00:00:41,920
21
00:00:41,920 –> 00:00:44,079
22
00:00:44,079 –> 00:00:47,360
توسط guccillific نگاهی بیندازیم.
23
00:00:47,360 –> 00:00:50,000
کد بازی برج دفاعی یک فایل واحد است
24
00:00:50,000 –> 00:00:52,480
که اساساً شامل تمام کدهایی است که
25
00:00:52,480 –> 00:00:54,399
مشاهده می کنید با چند واردات شروع می شود،
26
00:00:54,399 –> 00:00:56,079
بنابراین اولین مسئله اینجاست که
27
00:00:56,079 –> 00:00:58,879
شما همه چیز را از tkinter وارد
28
00:00:58,879 –> 00:01:00,640
می کنید، به این معنی که واقعا سخت است
29
00:01:00,640 –> 00:01:02,559
Refactor چیزهایی را اگر میخواهید
30
00:01:02,559 –> 00:01:04,799
به کتابخانه راهنمای دیگری بروید، همچنین تعدادی جهانی وجود دارد
31
00:01:04,799 –> 00:01:07,920
32
00:01:07,920 –> 00:01:11,040
[خنده]
33
00:01:11,040 –> 00:01:13,439
من خودتان را کنار هم گذاشتهام شما میتوانید این کار را انجام دهید
34
00:01:13,439 –> 00:01:15,200
در واقع این طوری نیست که من باید
35
00:01:15,200 –> 00:01:16,880
به این پاسخ بدهم. متوجه شدم که به عنوان
36
00:01:16,880 –> 00:01:18,560
توسعهدهندگان تمایل داریم برای اینکه
37
00:01:18,560 –> 00:01:21,200
در مورد کد بد خیلی منفی باشیم، البته
38
00:01:21,200 –> 00:01:22,880
میخواهیم کد را بهبود ببخشیم، میخواهیم
39
00:01:22,880 –> 00:01:24,960
کد بهتری بنویسیم، اما همچنین باید متوجه
40
00:01:24,960 –> 00:01:26,560
باشیم که افراد در مراحل مختلف
41
00:01:26,560 –> 00:01:28,159
فرآیند یادگیری هستند.
42
00:01:28,159 –> 00:01:31,600
43
00:01:31,600 –> 00:01:34,000
در این کد او همچنین گفت که
44
00:01:34,000 –> 00:01:35,439
این پروژه ای نیست که او اخیراً روی آن کار
45
00:01:35,439 –> 00:01:37,680
کرده است، اما چند سال پیش است، بنابراین
46
00:01:37,680 –> 00:01:39,680
فکر می کنم این در واقع نشان دهنده جسارت زیادی است
47
00:01:39,680 –> 00:01:41,680
که شما می
48
00:01:41,680 –> 00:01:43,680
توانید این را در جهان منتشر کنید و اجازه دهید
49
00:01:43,680 –> 00:01:46,000
دیگران انتقاد کنند. این و در واقع به
50
00:01:46,000 –> 00:01:48,079
این معنی است که شما فرآیند یادگیری خود را
51
00:01:48,079 –> 00:01:51,200
بالاتر از نفس خود قرار می دهید که به نظر من
52
00:01:51,200 –> 00:01:53,600
نگرش بسیار خوبی است، بنابراین
53
00:01:53,600 –> 00:01:56,479
من به شما سلام می کنم، حالا بیایید
54
00:01:56,479 –> 00:01:58,560
به بقیه کدها نگاه کنیم تا ما این جهانی ها را
55
00:01:58,560 –> 00:02:00,079
داشته باشیم، ما یک
56
00:02:00,079 –> 00:02:02,320
کلاس بازی داریم که در واقع کلاس اصلی
57
00:02:02,320 –> 00:02:04,479
که نحوه اجرای بازی را کنترل
58
00:02:04,479 –> 00:02:06,640
می کند، یک اولیه ساز است که
59
00:02:06,640 –> 00:02:09,119
تمام اشیاء بازی را ایجاد می کند که
60
00:02:09,119 –> 00:02:11,280
همه چیز را مقداردهی اولیه می کند، بوم و غیره را ایجاد می کند.
61
00:02:11,280 –> 00:02:14,640
62
00:02:14,640 –> 00:02:17,280
63
00:02:17,280 –> 00:02:19,360
بار در
64
00:02:19,360 –> 00:02:22,480
ثانیه این نرخ فریم است و
65
00:02:22,480 –> 00:02:24,319
بازی چه کاری انجام می دهد خوب بازی را آپدیت
66
00:02:24,319 –> 00:02:26,480
و رنگ می کند و در این حالت
67
00:02:26,480 –> 00:02:29,200
از روش تایم اوت از tk inter برای اجرای
68
00:02:29,200 –> 00:02:31,840
مجدد همان روش بعد از 50
69
00:02:31,840 –> 00:02:33,680
میلی ثانیه استفاده می کند که می بینید در این
70
00:02:33,680 –> 00:02:35,840
روش ها بسیار زیاد است. از ارجاعات به
71
00:02:35,840 –> 00:02:38,160
متغیرهای سراسری مانند اینجا برای مثال و
72
00:02:38,160 –> 00:02:40,560
این امر جدا کردن چیزها را در فایل های مختلف سخت می کند،
73
00:02:40,560 –> 00:02:42,319
اما ما سعی می کنیم
74
00:02:42,319 –> 00:02:44,080
این کار را انجام دهیم و سپس بیایید به
75
00:02:44,080 –> 00:02:45,920
پایین تر حرکت کنیم، کلاس های دیگری وجود دارد
76
00:02:45,920 –> 00:02:49,200
که در مورد این کلاس ها بیشتر صحبت خواهم کرد.
77
00:02:49,200 –> 00:02:53,040
بعداً چند هیولا دکمه ای است
78
00:02:53,040 –> 00:02:55,040
که نشان دهنده عناصر مختلف ماوس
79
00:02:55,040 –> 00:02:57,040
است که بخشی از بازی هستند و
80
00:02:57,040 –> 00:02:59,120
سپس اگر تا انتها به پایین اسکرول کنید
81
00:02:59,120 –> 00:03:02,239
، کد واقعی را خواهیم داشت. در
82
00:03:02,239 –> 00:03:04,400
شروع بازی، پس بیایید این را اجرا کنیم
83
00:03:04,400 –> 00:03:06,800
و ببینیم چگونه کار میکند، من فقط یک
84
00:03:06,800 –> 00:03:08,800
موج جدید راهاندازی میکنم تا به شما نشان دهم چه اتفاقی میافتد، بنابراین
85
00:03:08,800 –> 00:03:10,159
این دشمنان هستند که ظاهر میشوند
86
00:03:10,159 –> 00:03:13,360
و اکنون میتوانم این
87
00:03:14,159 –> 00:03:16,239
چیزهای تیراندازی را در اینجا قرار دهم، من
88
00:03:16,239 –> 00:03:17,200
89
00:03:17,200 –> 00:03:20,239
انواع مختلفی از برجها دارم. که من می توانم قرار دهم
90
00:03:20,239 –> 00:03:22,879
که این دشمنان را بکشند و اوه که
91
00:03:22,879 –> 00:03:24,959
یکی نزدیک می شود من فقط چند
92
00:03:24,959 –> 00:03:26,480
برج را اینجا قرار دادم و اکنون که موج
93
00:03:26,480 –> 00:03:29,440
کامل شده است می توانم موج بعدی را شروع کنم اجازه
94
00:03:29,440 –> 00:03:32,400
دهید چند برج دیگر را اینجا قرار دهم زیرا این
95
00:03:32,400 –> 00:03:34,080
به وضوح مشخص است کافی نیست، در واقع یک
96
00:03:34,080 –> 00:03:36,319
بازی واقعاً زیبا است، من در کار
97
00:03:36,319 –> 00:03:37,840
بر روی بازآفرینی کد مشکل داشتم، زیرا من همیشه
98
00:03:37,840 –> 00:03:39,360
این بازی را بازی می کردم، بنابراین بیایید
99
00:03:39,360 –> 00:03:41,360
کمی کد را تجزیه و تحلیل کنیم، بنابراین واضح است که
100
00:03:41,360 –> 00:03:43,200
ما همه این متغیرهای سراسری و
101
00:03:43,200 –> 00:03:44,000
102
00:03:44,000 –> 00:03:45,920
واردات واژگان را داریم که
103
00:03:45,920 –> 00:03:47,760
به طور کلی باید از آنها اجتناب کنیم. اما
104
00:03:47,760 –> 00:03:50,080
چند چیز دیگر نیز وجود دارد که باید به آنها نگاه کرد،
105
00:03:50,080 –> 00:03:51,920
برای مثال این کلاس بازی در حال حاضر
106
00:03:51,920 –> 00:03:54,640
مسئولیت های زیادی دارد و
107
00:03:54,640 –> 00:03:57,439
مسئول مدیریت
108
00:03:57,439 –> 00:04:00,080
حلقه بازی عمومی سیستم موتور بازی است، به طوری که می
109
00:04:00,080 –> 00:04:00,799
110
00:04:00,799 –> 00:04:03,120
گویند دوباره مسئول ایجاد تمام این
111
00:04:03,120 –> 00:04:05,599
آبجکت های بازی برای به روز رسانی آنها و کشیدن
112
00:04:05,599 –> 00:04:06,400
آنها
113
00:04:06,400 –> 00:04:08,319
بسیار زیاد است
114
00:04:08,319 –> 00:04:10,319
و به همین دلیل است که اکنون یک کلاس بسیار طولانی است
115
00:04:10,319 –> 00:04:12,560
همچنین همه این کلاس ها
116
00:04:12,560 –> 00:04:14,640
در یک فایل هستند من توصیه می کنم
117
00:04:14,640 –> 00:04:16,880
کلاس ها را در فایل های جداگانه قرار دهید و به دلیل
118
00:04:16,880 –> 00:04:18,560
متغیرهای جهانی
119
00:04:18,560 –> 00:04:20,560
انتقال همه این
120
00:04:20,560 –> 00:04:22,079
کلاسها به فایلهای مختلف
121
00:04:22,079 –> 00:04:24,720
کار بسیار زیادی خواهد بود، زیرا در اینجا جفتهای زیادی اتفاق میافتد،
122
00:04:24,720 –> 00:04:26,400
نکته دیگری که باید در مورد آن فکر کرد این است که آیا
123
00:04:26,400 –> 00:04:28,639
ساختار کلاسها در حال حاضر
124
00:04:28,639 –> 00:04:31,199
منطقی است، بنابراین اجازه دهید به کد نگاه کنیم
125
00:04:31,199 –> 00:04:33,440
و ببینید چه چیزی داریم، به
126
00:04:33,440 –> 00:04:36,560
عنوان مثال یک کلاس دکمه داریم که عالی است،
127
00:04:36,560 –> 00:04:38,560
اما در اینجا می بینید
128
00:04:38,560 –> 00:04:40,720
که دکمه با نگاه کردن به اینکه آیا مقدار x
129
00:04:40,720 –> 00:04:42,800
و y که احتمالاً مختصات ماوس
130
00:04:42,800 –> 00:04:45,759
است در ناحیه
131
00:04:45,759 –> 00:04:48,320
مرزی دکمه هستند یا نه، بررسی می کند که فشار داده شده است یا خیر.
132
00:04:48,320 –> 00:04:50,400
یکی دیگر از مشکلات این است
133
00:04:50,400 –> 00:04:53,360
که دکمه به طور مستقیم به
134
00:04:53,360 –> 00:04:54,960
اشیاء دیگری که بخشی از بازی هستند دسترسی پیدا می کند و
135
00:04:54,960 –> 00:04:57,440
این بدان معناست که شما نمی توانید از این دکمه
136
00:04:57,440 –> 00:04:59,280
در هیچ مکان دیگری استفاده کنید. چون
137
00:04:59,280 –> 00:05:01,520
شاید این شی تولید کننده موج
138
00:05:01,520 –> 00:05:03,600
اینجا نباشد، بنابراین باید
139
00:05:03,600 –> 00:05:06,000
راهی را در موتور بازی پیدا کنیم تا این
140
00:05:06,000 –> 00:05:08,720
اشیاء کمتر به یکدیگر وابسته شوند
141
00:05:08,720 –> 00:05:11,280
و من در یک دقیقه در مورد آن صحبت خواهم کرد و
142
00:05:11,280 –> 00:05:13,680
چیز دیگری وجود دارد. بیایید ببینیم که
143
00:05:13,680 –> 00:05:16,000
ما همچنین چند هیولا داریم، بنابراین
144
00:05:16,000 –> 00:05:17,520
من فقط میخواهم به پایین اسکرول کنم تا به شما نشان دهم
145
00:05:17,520 –> 00:05:19,840
در آنجا چه اتفاقی میافتد، بنابراین
146
00:05:19,840 –> 00:05:22,240
کلاس هیولا، تنظیمات بسیار و زیادی
147
00:05:22,240 –> 00:05:24,880
دارد، بهروزرسانی و روش حرکت
148
00:05:24,880 –> 00:05:27,520
و برخی چیزهای دیگر که
149
00:05:27,520 –> 00:05:28,800
محاسبه میکند
150
00:05:28,800 –> 00:05:31,520
و سپس ما زیر کلاسهایی داریم که از
151
00:05:31,520 –> 00:05:34,639
این کلاس هیولاهای پایه برای
152
00:05:34,639 –> 00:05:36,800
چیزهای مختلف استفاده میکنند، در برخی موارد ممکن است تعجب کنید که
153
00:05:36,800 –> 00:05:38,720
آیا واقعاً برای استفاده از
154
00:05:38,720 –> 00:05:40,479
کلاسهای فرعی لازم است یا این کار را به روشی متفاوت انجام دهید، برای
155
00:05:40,479 –> 00:05:43,840
مثال در اینجا monster 1 اساساً
156
00:05:43,840 –> 00:05:46,320
دقیقاً مشابه monster است با این تفاوت
157
00:05:46,320 –> 00:05:48,160
که چند
158
00:05:48,160 –> 00:05:50,639
مقدار مختلف برای سلامتی و سرعت و
159
00:05:50,639 –> 00:05:53,039
مواردی از این قبیل، راه دیگری برای انجام این
160
00:05:53,039 –> 00:05:55,440
کار به جای ایجاد یک کلاس فرعی
161
00:05:55,440 –> 00:05:57,680
در واقع ایجاد یک نمونه از هیولا است
162
00:05:57,680 –> 00:06:00,720
که آن مقادیر خاص را دارد.
163
00:06:00,720 –> 00:06:02,560
و این همیشه تعادلی است که باید
164
00:06:02,560 –> 00:06:04,240
بین
165
00:06:04,240 –> 00:06:06,400
زمانی که قرار است از یک زیر کلاس
166
00:06:06,400 –> 00:06:08,160
استفاده کنید چه زمانی از وراثت استفاده
167
00:06:08,160 –> 00:06:09,919
کنید و چه زمانی از
168
00:06:09,919 –> 00:06:12,639
تنظیمات برای ایجاد تمایز
169
00:06:12,639 –> 00:06:14,880
بین چیزهای مختلف استفاده کنید، توصیه کلی من
170
00:06:14,880 –> 00:06:16,720
این است که
171
00:06:16,720 –> 00:06:18,720
اگر اگر رفتار را تغییر دهید،
172
00:06:18,720 –> 00:06:21,520
وراثت یا کلاسهای فرعی منطقیتر است
173
00:06:21,520 –> 00:06:23,759
، اگر فقط
174
00:06:23,759 –> 00:06:25,600
مقادیر را تغییر دهید مانند آنچه در اینجا انجام میدهید، پس
175
00:06:25,600 –> 00:06:27,759
شاید بهتر است از یک
176
00:06:27,759 –> 00:06:29,680
فایل پیکربندی یا چیزی شبیه به آن استفاده کنید، بنابراین
177
00:06:29,680 –> 00:06:32,400
چیز دیگر این است که این اسکریپت مستقیماً
178
00:06:32,400 –> 00:06:35,840
نمونه بازی را ایجاد کند. در پایان و
179
00:06:35,840 –> 00:06:38,240
این بدان معنی است که اگر به
180
00:06:38,240 –> 00:06:39,919
دلایلی این را در جای دیگری
181
00:06:39,919 –> 00:06:42,000
وارد کنید، این بازی نیز ایجاد می شود که
182
00:06:42,000 –> 00:06:44,560
چیز بدی است، بنابراین ما باید آن را در یک
183
00:06:44,560 –> 00:06:46,560
بیانیه if جداگانه قرار دهیم تا مطمئن شویم که
184
00:06:46,560 –> 00:06:48,400
این فقط زمانی اتفاق می افتد که شما این را دوباره
185
00:06:48,400 –> 00:06:50,800
به عنوان اسکریپت اصلی اجرا می کنیم، بنابراین بیایید همین الان این مشکل را
186
00:06:50,800 –> 00:06:52,639
برطرف کنیم که در کد اینجا هستیم
187
00:06:52,639 –> 00:06:55,039
،
188
00:06:57,360 –> 00:06:59,039
یکی از راه های بهبود بیشتر این است
189
00:06:59,039 –> 00:07:00,880
که در واقع قرار ندادن آن در اسکریپت جهانی
190
00:07:00,880 –> 00:07:02,720
pe اما در واقع یک تابع اصلی ایجاد می
191
00:07:02,720 –> 00:07:06,160
کنیم، بنابراین بیایید آن را نیز انجام دهیم
192
00:07:06,800 –> 00:07:08,720
و سپس ما فقط می خواهیم
193
00:07:08,720 –> 00:07:13,280
این را کپی کنیم و آن را درست در اینجا قرار دهیم
194
00:07:15,280 –> 00:07:18,240
و سپس در اینجا به
195
00:07:18,240 –> 00:07:22,080
جای آن تابع main را فراخوانی می کنیم،
196
00:07:22,160 –> 00:07:24,000
بنابراین اکنون این را در یک قرار داده ایم
197
00:07:24,000 –> 00:07:26,080
عملکرد اصلی که کمی تمیزتر است، بنابراین کاری که
198
00:07:26,080 –> 00:07:28,639
من می خواهم در این ویدیو انجام دهم این است که یک
199
00:07:28,639 –> 00:07:31,440
معماری موتور بازی اولیه ایجاد کنم
200
00:07:31,440 –> 00:07:34,400
تا جنبه های عمومی بازی را
201
00:07:34,400 –> 00:07:36,720
از جنبه های خاص بازی برج دفاعی جدا کند،
202
00:07:36,720 –> 00:07:38,639
اما قبل از شروع این
203
00:07:38,639 –> 00:07:41,120
کار اجازه دهید ابتدا یک مشکل را برطرف کنیم. چند چیز جزئی
204
00:07:41,120 –> 00:07:42,880
اینجا و آنجا در کد، بنابراین من می
205
00:07:42,880 –> 00:07:44,720
خواهم با متد run در کلاس بازی
206
00:07:44,720 –> 00:07:46,720
در داخل این متد شروع کنم، ما از یک ویژگی run استفاده می کنیم
207
00:07:46,720 –> 00:07:49,199
که در
208
00:07:49,199 –> 00:07:51,120
حال حاضر ظاهراً همیشه درست است و
209
00:07:51,120 –> 00:07:53,840
سپس اگر اجرا شود مشخصه درست است، سپس
210
00:07:53,840 –> 00:07:55,599
ما متد به روز رسانی و رنگ را
211
00:07:55,599 –> 00:07:58,080
فراخوانی می کنیم، بنابراین اساساً مکانیزمی
212
00:07:58,080 –> 00:08:00,960
برای شروع یا توقف حلقه بازی است،
213
00:08:00,960 –> 00:08:02,400
مشکل این است که این یک
214
00:08:02,400 –> 00:08:04,160
سطح تورفتگی عمیق دارد زیرا همه چیز
215
00:08:04,160 –> 00:08:06,160
تحت این عبارت if قرار دارد و همچنین ما.
216
00:08:06,160 –> 00:08:08,720
مقایسه مجدد با a مقدار بولی که
217
00:08:08,720 –> 00:08:10,960
مورد نیاز نیست و در نهایت
218
00:08:10,960 –> 00:08:14,080
اجرا می شود در اینجا با حروف بزرگ است که
219
00:08:14,080 –> 00:08:15,599
به طور کلی در پایتون به این معنی
220
00:08:15,599 –> 00:08:17,440
است که یک مقدار ثابت خواهد بود اما
221
00:08:17,440 –> 00:08:19,199
این چیزی است که ممکن است بخواهید
222
00:08:19,199 –> 00:08:20,879
در نقطه ای از بازی روی false تنظیم کنید،
223
00:08:20,879 –> 00:08:22,800
بنابراین من پیشنهاد می کنم این را به یک متغیر بزرگ تبدیل نکنید،
224
00:08:22,800 –> 00:08:24,319
اما در واقع یک
225
00:08:24,319 –> 00:08:27,199
متغیر با حروف کوچک است
226
00:08:27,199 –> 00:08:29,360
و ما در واقع
227
00:08:29,360 –> 00:08:30,319
نیازی به این نداریم که
228
00:08:30,319 –> 00:08:32,080
این قسمت درست است،
229
00:08:32,080 –> 00:08:33,679
زیرا ما در حال بررسی با
230
00:08:33,679 –> 00:08:35,679
بولی هستیم و
231
00:08:35,679 –> 00:08:38,000
یکی دیگر از کارهایی که می توانید برای کاهش سطح تورفتگی انجام دهید این
232
00:08:38,000 –> 00:08:40,240
است که در واقع بررسی کنید
233
00:08:40,240 –> 00:08:42,240
که آیا در حال اجرا است یا خیر، اما بررسی کنید که
234
00:08:42,240 –> 00:08:44,959
اجرا نمی شود، بنابراین اگر
235
00:08:44,959 –> 00:08:47,200
اجرا نمی شود،
236
00:08:47,200 –> 00:08:48,320
237
00:08:48,320 –> 00:08:49,600
ما
238
00:08:49,600 –> 00:08:51,920
برمی گردیم و سپس همه
239
00:08:51,920 –> 00:08:53,279
این خطوط را
240
00:08:53,279 –> 00:08:54,800
اینجا می گیریم
241
00:08:54,800 –> 00:08:55,600
242
00:08:55,600 –> 00:08:56,959
و آنها را در این
243
00:08:56,959 –> 00:08:59,200
سطح تورفتگی پایین تر قرار می دهیم، این به
244
00:08:59,200 –> 00:09:00,959
طور کلی ایده خوبی است اگر شما دوباره
245
00:09:00,959 –> 00:09:03,680
کد می نویسید که ابتدا موارد خاص را مدیریت می کنید
246
00:09:03,680 –> 00:09:05,839
در این مورد، حالت خاص این است
247
00:09:05,839 –> 00:09:08,399
که ما در حال حاضر در حال اجرا نیستیم
248
00:09:08,399 –> 00:09:09,279
و
249
00:09:09,279 –> 00:09:11,279
سپس قسمت اصلی که روش
250
00:09:11,279 –> 00:09:13,200
قرار است انجام دهد که به روز رسانی
251
00:09:13,200 –> 00:09:16,000
بازی و رنگ آمیزی است. بازی و تنظیم مجدد
252
00:09:16,000 –> 00:09:18,480
تایمر در سطح تورفتگی اصلی روش اتفاق می افتد
253
00:09:18,480 –> 00:09:20,160
254
00:09:20,160 –> 00:09:22,959
و در کل خواندن آن آسان تر است، بنابراین
255
00:09:22,959 –> 00:09:25,600
اکنون به تولید کننده موج می روم و
256
00:09:25,600 –> 00:09:28,240
مثال دیگری از این در
257
00:09:28,240 –> 00:09:30,160
روش به روز رسانی وجود دارد، بگذارید ببینیم، بنابراین اینجا می بینید
258
00:09:30,160 –> 00:09:33,040
که یک نوع است در همین مورد، بنابراین اگر
259
00:09:33,040 –> 00:09:35,440
کارمان تمام نشده است، اما این نیز
260
00:09:35,440 –> 00:09:37,440
مقایسه با بولی در اینجا است، ما
261
00:09:37,440 –> 00:09:39,120
همه این کارها را انجام خواهیم داد، بنابراین در اینجا شما
262
00:09:39,120 –> 00:09:43,040
همچنین می توانید اساساً آن را عوض کنید،
263
00:09:43,040 –> 00:09:44,959
بنابراین مقایسه مستقیم بولی را حذف می کنیم
264
00:09:44,959 –> 00:09:47,440
265
00:09:47,440 –> 00:09:50,480
و این موارد را حذف کنید و سپس
266
00:09:50,480 –> 00:09:53,519
ما برمی گردیم و
267
00:09:53,519 –> 00:09:56,480
بیایید این خطوط را انتخاب کرده و در
268
00:09:56,480 –> 00:09:58,240
سطح تورفتگی بالاتر قرار دهیم، بنابراین ما همین
269
00:09:58,240 –> 00:10:00,959
کار را انجام می دهیم و حتی
270
00:10:00,959 –> 00:10:03,040
ممکن است بتوانیم این
271
00:10:03,040 –> 00:10:05,440
عبارت if else را در اینجا نیز کوتاه کنیم، زیرا
272
00:10:05,440 –> 00:10:08,079
این نیز شما می توانید بعد از این خط برگردید
273
00:10:08,079 –> 00:10:10,079
و سپس این به سطح تورفتگی بالاتر می رود،
274
00:10:10,079 –> 00:10:11,920
خوب، بنابراین
275
00:10:11,920 –> 00:10:13,760
ما این دکمه موج بعدی را داریم، بنابراین من
276
00:10:13,760 –> 00:10:16,320
در مورد این صحبت کردم که آیا فشار داده شده است یا خیر،
277
00:10:16,320 –> 00:10:17,839
در واقع دو کار وجود دارد که می توانیم
278
00:10:17,839 –> 00:10:19,920
در اینجا انجام دهیم تا چاه اول را ساده کنیم. این است که
279
00:10:19,920 –> 00:10:21,680
ما دوباره این دستورات تودرتوی if را داریم و
280
00:10:21,680 –> 00:10:24,320
تنها پس از آن می خواهیم این کار را انجام دهیم،
281
00:10:24,320 –> 00:10:27,279
اما کاری که من می خواهم انجام دهم این است که متدی را اضافه کنیم
282
00:10:27,279 –> 00:10:29,360
که نام آن
283
00:10:29,360 –> 00:10:31,279
در محدوده است
284
00:10:31,279 –> 00:10:33,760
و یک x
285
00:10:33,760 –> 00:10:37,360
و یک y به دست می آید که همچنین یک پایان
286
00:10:37,360 –> 00:10:39,839
و سپس ما اساساً میتوانیم
287
00:10:39,839 –> 00:10:42,560
کل این عبارت را اینجا برگردانیم، اما در
288
00:10:42,560 –> 00:10:44,399
واقع راهی برای نوشتن آن به صورت
289
00:10:44,399 –> 00:10:46,399
کمی کوتاهتر در پایتون وجود دارد، بنابراین در
290
00:10:46,399 –> 00:10:48,640
اینجا ما بررسی میکنیم که x بزرگتر یا
291
00:10:48,640 –> 00:10:52,640
مساوی از self.x و کوچکتر از self.x2 است
292
00:10:52,640 –> 00:10:55,040
و y همان چیزی است که پایتون در واقع
293
00:10:55,040 –> 00:10:56,959
از عبارات مقایسهای پشتیبانی میکند
294
00:10:56,959 –> 00:10:58,800
که کمی به نحوه انجام آن در ریاضیات نزدیکتر هستند،
295
00:10:58,800 –> 00:11:01,440
بنابراین میتوانید آن را
296
00:11:01,440 –> 00:11:04,160
به صورت
297
00:11:10,320 –> 00:11:11,600
زیر بنویسید، بنابراین اکنون میتوانید به سادگی بررسی کنید
298
00:11:11,600 –> 00:11:13,760
که آیا ماوس در
299
00:11:13,760 –> 00:11:15,920
محدوده دکمه قرار دارد یا خیر. با فراخوانی این
300
00:11:15,920 –> 00:11:18,160
تابع و سپس در روش checkpress
301
00:11:18,160 –> 00:11:20,959
میتوانیم از آن استفاده کنیم و اساساً
302
00:11:20,959 –> 00:11:23,519
این دستور if را معکوس کنیم تا دوباره
303
00:11:23,519 –> 00:11:27,160
سطح تورفتگی را کاهش
304
00:11:28,000 –> 00:11:30,560
دهیم، سپس برمیگردیم و سپس این
305
00:11:30,560 –> 00:11:33,680
i را میتوان حذف کرد و سپس اجازه دهید دوباره
306
00:11:33,680 –> 00:11:36,640
این خطوط را انتخاب کرده و آنها را جدا کنیم. بودن چون
307
00:11:36,640 –> 00:11:38,240
این کلاس پایتون 3 است
308
00:11:38,240 –> 00:11:40,320
دیگر نیازی به ارث بردن از
309
00:11:40,320 –> 00:11:42,880
شیء ندارد، پس
310
00:11:42,880 –> 00:11:43,920
بیایید
311
00:11:43,920 –> 00:11:45,839
اینها را حذف کنیم و دیگر به آن نیاز نداریم
312
00:11:45,839 –> 00:11:47,680
و کاری که میتوانید انجام دهید، زیرا
313
00:11:47,680 –> 00:11:50,160
این پایتون 3 است این است که این
314
00:11:50,160 –> 00:11:52,880
فراخوانیهای فوقالعاده نیز میتوانند ساده
315
00:11:52,880 –> 00:11:54,240
شوند. من فقط می توانم
316
00:11:54,240 –> 00:11:56,560
این را حذف کنم زیرا دیگر نیازی به آن
317
00:11:56,560 –> 00:11:58,399
نیست و در اینجا اگر به
318
00:11:58,399 –> 00:12:00,639
این دکمه نگاه کنید این
319
00:12:00,639 –> 00:12:02,959
برای ما واقعاً عالی است زیرا اگر این
320
00:12:02,959 –> 00:12:05,200
اولیه ساز را حذف کنیم، سوپر اولیه ساز
321
00:12:05,200 –> 00:12:06,639
به طور خودکار فراخوانی می شود، بنابراین می توانیم
322
00:12:06,639 –> 00:12:08,720
این را به طور کامل حذف کنیم.
323
00:12:08,720 –> 00:12:10,959
برای
324
00:12:10,959 –> 00:12:12,720
دکمه ارتقا و احتمالاً برای
325
00:12:12,720 –> 00:12:14,639
چند دکمه دیگر نیز استفاده می شود، بنابراین
326
00:12:14,639 –> 00:12:16,720
یک چیز دیگر وجود دارد که می خواهم قبل از اینکه به قسمت موتور بازی ادامه دهیم آن را برطرف
327
00:12:16,720 –> 00:12:18,959
328
00:12:18,959 –> 00:12:21,200
کنم و آن این است که این کد شامل چند مورد
329
00:12:21,200 –> 00:12:22,160
از این
330
00:12:22,160 –> 00:12:24,959
تلاش ها است به جز بلوک هایی که شما اینجا را ببینید، بنابراین
331
00:12:24,959 –> 00:12:27,519
ما دو تا از آنها را در روش به روز رسانی
332
00:12:27,519 –> 00:12:28,560
در
333
00:12:28,560 –> 00:12:31,120
کلاس بازی داریم، بنابراین کدام اینجا است
334
00:12:31,120 –> 00:12:33,200
و دیگری وجود دارد که کمی
335
00:12:33,200 –> 00:12:36,000
پایین تر است، فکر می کنم این
336
00:12:36,000 –> 00:12:38,240
پرتابه است، بله پرتابه بنابراین
337
00:12:38,240 –> 00:12:39,920
این نیز یک چیز بسیار بد است زیرا
338
00:12:39,920 –> 00:12:42,560
شما با گرفتن هر گونه استثنائات بسیاری از خطاها را پنهان می کنید،
339
00:12:42,560 –> 00:12:45,040
در واقع
340
00:12:45,040 –> 00:12:47,120
دلیل اینکه tri-xep به این شکل در اینجا قرار داده شده است
341
00:12:47,120 –> 00:12:49,760
این است که این پرتابه ها وقتی
342
00:12:49,760 –> 00:12:51,040
خود را به روز می کنند می توانند به
343
00:12:51,040 –> 00:12:53,440
طور بالقوه خودشان را از برنامه حذف کنند.
344
00:12:53,440 –> 00:12:55,360
لیستی از پرتابه ها چون ما در یک
345
00:12:55,360 –> 00:12:57,920
حلقه for هستیم که یک حلقه برای شماره گذاری شده با
346
00:12:57,920 –> 00:12:59,360
یک شاخص است
347
00:12:59,360 –> 00:13:01,519
اگر پرتابه خودش را حذف کند اساساً
348
00:13:01,519 –> 00:13:03,440
این شکست می شود و شما یک استثنا دریافت می کنید
349
00:13:03,440 –> 00:13:05,680
اکنون یک راه ساده برای رفع آن وجود دارد
350
00:13:05,680 –> 00:13:08,880
و آن این است که از این حلقه های نمایه شده استفاده نکنید.
351
00:13:08,880 –> 00:13:11,040
لیست پرتابهها
352
00:13:11,040 –> 00:13:14,880
اما به سادگی از for in استفاده کنید،
353
00:13:18,160 –> 00:13:20,240
بنابراین اکنون ما پرتابه را بهروزرسانی
354
00:13:20,240 –> 00:13:23,519
میکنیم و میتوانیم همه این
355
00:13:23,519 –> 00:13:25,040
خطوط را در اینجا حذف کنیم زیرا دیگر به آنها نیاز
356
00:13:25,040 –> 00:13:27,040
نداریم و میتوانیم همین کار را
357
00:13:27,040 –> 00:13:30,200
برای هیولاها انجام دهیم،
358
00:13:36,320 –> 00:13:38,079
بنابراین کد را ساده میکنیم و
359
00:13:38,079 –> 00:13:40,560
بلوک خالی پذیرش را حذف میکند
360
00:13:40,560 –> 00:13:42,959
و یکی به جز بلوند باقی میماند و
361
00:13:42,959 –> 00:13:45,120
این یکی و این یکی کمی
362
00:13:45,120 –> 00:13:46,160
عجیب است،
363
00:13:46,160 –> 00:13:48,160
ما این قسمت از کد را امتحان میکنیم، اما
364
00:13:48,160 –> 00:13:49,519
فقط اگر
365
00:13:49,519 –> 00:13:52,000
منجر به استثنا شود ما این کار
366
00:13:52,000 –> 00:13:54,480
را انجام میدهیم تا این نوع ترکیبها
367
00:13:54,480 –> 00:13:55,760
جریان را با کنترل
368
00:13:55,760 –> 00:13:57,920
استثناء کنترل کنند و این واقعاً
369
00:13:57,920 –> 00:14:00,320
گیجکننده است، دلیل اینکه این مورد
370
00:14:00,320 –> 00:14:02,240
به جز بلوک امتحان میشود این است که در برخی
371
00:14:02,240 –> 00:14:04,959
موارد هدف وجود ندارد، اما ما
372
00:14:04,959 –> 00:14:07,440
در واقع میتوانیم آن را بررسی کنیم. به جای
373
00:14:07,440 –> 00:14:10,320
اینکه این را امتحان کنم به جز بلوک،
374
00:14:10,320 –> 00:14:11,440
اجازه دهید فقط
375
00:14:11,440 –> 00:14:14,000
این را حذف کنم و سپس
376
00:14:14,000 –> 00:14:17,360
دوباره آزمایشگاه تورفتگی را کاهش
377
00:14:17,360 –> 00:14:21,040
دهیم، در واقع میتوانیم بررسی کنیم که هدف وجود دارد
378
00:14:21,040 –> 00:14:22,880
و سپس البته دوباره
379
00:14:22,880 –> 00:14:24,880
380
00:14:24,880 –> 00:14:28,480
مقایسه بولی را انجام نمیدهیم
381
00:14:28,639 –> 00:14:31,360
تا به این شکل باشد و سپس
382
00:14:31,360 –> 00:14:33,279
بقیه را به همین صورت رها کنیم تا
383
00:14:33,279 –> 00:14:35,120
لحظه ای که موتورهای بازی و
384
00:14:35,120 –> 00:14:37,040
معماری های بازی همیشه مورد
385
00:14:37,040 –> 00:14:39,279
علاقه من بوده اند، زمانی که
386
00:14:39,279 –> 00:14:41,120
در دانشگاه تدریس می کردم، سال ها یک دوره برنامه نویسی بازی تدریس می کردم
387
00:14:41,120 –> 00:14:43,199
،
388
00:14:43,199 –> 00:14:44,720
چند مشکل رایج وجود دارد که
389
00:14:44,720 –> 00:14:46,880
وقتی با آنها مواجه خواهید شد. شما سعی می کنید
390
00:14:46,880 –> 00:14:48,880
از ابتدا یک بازی بسازید یکی از آنها این است که شما
391
00:14:48,880 –> 00:14:51,279
در دنیای بازی خود اشیاء زیادی خواهید داشت
392
00:14:51,279 –> 00:14:53,199
که باید به روز شوند و روی صفحه ترسیم شوند
393
00:14:53,199 –> 00:14:55,199
و ترتیبی که آنها را به روز می
394
00:14:55,199 –> 00:14:57,519
کنید و در ساعت و ساعت. اگر آنها را ترسیم کنید،
395
00:14:57,519 –> 00:14:59,839
اغلب اشیا و بازی ها نیز باید
396
00:14:59,839 –> 00:15:01,760
با یکدیگر ارتباط برقرار کنند، به عنوان مثال،
397
00:15:01,760 –> 00:15:04,959
اگر دکمه تخم ریزی را فشار دهید، واحد
398
00:15:04,959 –> 00:15:06,079
تخم ریزی دشمن
399
00:15:06,079 –> 00:15:08,800
باید شروع به تخم ریزی دشمنان کند و در
400
00:15:08,800 –> 00:15:10,560
حالت ایده آل شما می خواهید این کار را به گونه ای انجام دهید
401
00:15:10,560 –> 00:15:12,639
که این اشیاء انجام ندهند. در مورد یکدیگر بدانید
402
00:15:12,639 –> 00:15:14,160
زیرا این امر منجر به
403
00:15:14,160 –> 00:15:16,240
اتصالات زیادی می شود این نیز مشکلی است
404
00:15:16,240 –> 00:15:17,760
که باید در این
405
00:15:17,760 –> 00:15:19,600
بازی خاص به آن بپردازیم و من در مورد
406
00:15:19,600 –> 00:15:22,320
چند راه حل احتمالی صحبت خواهم کرد. مسئله دیگر این است
407
00:15:22,320 –> 00:15:24,959
که اشیاء در یک بازی می توانند بخشی از
408
00:15:24,959 –> 00:15:26,800
نوعی ساختار، به عنوان مثال یک
409
00:15:26,800 –> 00:15:29,519
شبکه یا یک لیست، بنابراین شما باید بتوانید
410
00:15:29,519 –> 00:15:31,360
اشیاء را به نحوی ساختاربندی کنید
411
00:15:31,360 –> 00:15:33,920
و محدودیتهایی در مورد نحوه و
412
00:15:33,920 –> 00:15:35,680
مکان قرارگیری آنها ایجاد کنید،
413
00:15:35,680 –> 00:15:38,079
همچنین باید ورودیهای پخش کننده را پردازش کنید،
414
00:15:38,079 –> 00:15:40,399
مانند فشار دادن کلید یا حرکات ماوس یا
415
00:15:40,399 –> 00:15:42,800
کلیک های ماوس بدون شکستن حلقه بازی
416
00:15:42,800 –> 00:15:44,240
و اطمینان از اینکه در جایی با
417
00:15:44,240 –> 00:15:45,519
شرایط مسابقه مواجه نمی شوید
418
00:15:45,519 –> 00:15:47,440
و در نهایت
419
00:15:47,440 –> 00:15:49,120
هنگام ایجاد یک موتور بازی،
420
00:15:49,120 –> 00:15:51,360
باید با زمان و نحوه
421
00:15:51,360 –> 00:15:53,600
تعامل آن با حلقه بازی به عنوان
422
00:15:53,600 –> 00:15:55,360
مثال ممکن است بخواهید یک سیستم زمان بندی ایجاد کنید
423
00:15:55,360 –> 00:15:57,199
که به شما امکان می دهد
424
00:15:57,199 –> 00:15:59,759
پس از یک تاخیر معین دستور خاصی را اجرا کنید و
425
00:15:59,759 –> 00:16:01,199
سپس تفاوت بین
426
00:16:01,199 –> 00:16:03,440
زمان در بازی با زمان در زندگی واقعی وجود
427
00:16:03,440 –> 00:16:05,600
دارد که شما همچنین باید آن را انجام دهید.
428
00:16:05,600 –> 00:16:08,079
به جنبه های زیادی فکر کنید متأسفانه من نمی
429
00:16:08,079 –> 00:16:11,040
توانم همه این موارد را پوشش
430
00:16:11,040 –> 00:16:12,880
دهم، در واقع احتمالاً می توانم یک
431
00:16:12,880 –> 00:16:16,079
سری کامل در مورد توسعه موتورهای بازی و
432
00:16:16,079 –> 00:16:18,320
معماری موتورهای بازی انجام
433
00:16:18,320 –> 00:16:20,000
دهم اگر این چیزی است که شما می خواهید
434
00:16:20,000 –> 00:16:22,079
در آینده به آن بپردازم. سری های ویدیویی را در نظرات به من اطلاع دهید
435
00:16:22,079 –> 00:16:24,160
، بنابراین اکنون کاری که من می خواهم انجام دهم این
436
00:16:24,160 –> 00:16:27,920
است که یک موتور بازی ساده ایجاد کنم و از
437
00:16:27,920 –> 00:16:30,560
تب 9 برای کمک به نوشتن سریعتر این کد استفاده می کنم.
438
00:16:30,560 –> 00:16:33,279
439
00:16:33,279 –> 00:16:35,680
440
00:16:35,680 –> 00:16:38,399
این برنامه از بیش از 30 زبان
441
00:16:38,399 –> 00:16:41,920
از جمله پایتون در 15 ایده از جمله در مقابل
442
00:16:41,920 –> 00:16:45,279
کد و pycharm tab پشتیبانی
443
00:16:45,279 –> 00:16:47,360
444
00:16:47,360 –> 00:16:49,839
می کند.
445
00:16:49,839 –> 00:16:51,839
s
446
00:16:51,839 –> 00:16:53,279
همچنین به این معنی است که می توانید از آن برای کار آفلاین استفاده کنید و
447
00:16:53,279 –> 00:16:55,920
در عین حال از حداکثر امنیت
448
00:16:55,920 –> 00:16:58,480
و حفظ حریم خصوصی استفاده کنید. روی 9 زبانه 9 که اخیراً برای تیم ها راه اندازی شده است،
449
00:16:58,480 –> 00:17:01,279
می آموزید که اولویت ها و الگوهای پروژه های تیم شما را یاد می گیرند
450
00:17:01,279 –> 00:17:03,519
451
00:17:03,519 –> 00:17:05,599
ک