در این مطلب، ویدئو مسیریابی آسان در پایتون [تقریبا بدون ریاضی] با زیرنویس فارسی را برای دانلود قرار داده ام. شما میتوانید با پرداخت 15 هزار تومان ، این ویدیو به علاوه تمامی فیلم های سایت را دانلود کنید.اکثر فیلم های سایت به زبان انگلیسی می باشند. این ویدئو دارای زیرنویس فارسی ترجمه شده توسط هوش مصنوعی می باشد که میتوانید نمونه ای از آن را در قسمت پایانی این مطلب مشاهده کنید.
مدت زمان فیلم: 1:11:12
تصاویر این ویدئو:
قسمتی از زیرنویس این فیلم:
00:00:00,080 –> 00:00:02,159
سلام، در این آموزش ما
2
00:00:02,159 –> 00:00:04,319
قصد داریم این پروژه مسیریابی اساسی را ایجاد
3
00:00:04,319 –> 00:00:06,480
کنیم که در آن می توانیم
4
00:00:06,480 –> 00:00:08,720
در یک اتاق در یک اتاق حرکت کنیم و
5
00:00:08,720 –> 00:00:10,240
اتاقبا همیشه کوتاه ترین مسیر را بین
6
00:00:10,240 –> 00:00:13,040
این دو نقطه پیدا می
7
00:00:13,040 –> 00:00:15,519
8
00:00:15,519 –> 00:00:17,440
کند. نوعی بازی
9
00:00:17,440 –> 00:00:20,000
در حال حاضر مسیریابی شامل
10
00:00:20,000 –> 00:00:21,840
مقداری ریاضی است و می تواند نسبتاً
11
00:00:21,840 –> 00:00:24,320
پیچیده باشد، اما در واقع
12
00:00:24,320 –> 00:00:26,160
لازم نیست خودتان آن را انجام دهید زیرا
13
00:00:26,160 –> 00:00:28,480
پایتون ماژولی دارد که به طور کامل به اتصال مسیر اختصاص داده شده است،
14
00:00:28,480 –> 00:00:29,599
15
00:00:29,599 –> 00:00:31,439
بنابراین ما از آن استفاده می کنیم و
16
00:00:31,439 –> 00:00:33,520
اساساً ما این کار را انجام می دهیم. قصد ایجاد دو
17
00:00:33,520 –> 00:00:35,760
پروژه را داریم، اولی
18
00:00:35,760 –> 00:00:38,239
خود ماژول مسیریابی را معرفی می کند و این
19
00:00:38,239 –> 00:00:40,320
یکی نسبتاً کوتاه خواهد بود زیرا یک
20
00:00:40,320 –> 00:00:42,079
ماژول بسیار ساده است
21
00:00:42,079 –> 00:00:43,920
و برای قسمت دوم ما از
22
00:00:43,920 –> 00:00:45,760
ماژول مسیریابی برای ایجاد یک
23
00:00:45,760 –> 00:00:47,920
پروژه مفید واقعی استفاده می کنیم قبل از اینکه وارد پروژه شویم
24
00:00:47,920 –> 00:00:49,520
. کد من فکر می
25
00:00:49,520 –> 00:00:51,520
کنم برای پوشش برخی از نظریه های مسیریابی اولیه مفید خواهد بود
26
00:00:51,520 –> 00:00:54,079
و نگران نباشید
27
00:00:54,079 –> 00:00:54,960
28
00:00:54,960 –> 00:00:57,440
هر زمان که در مورد مسیریابی صحبت می کنیم کوتاه خواهد بود
29
00:00:57,440 –> 00:01:00,079
اساساً در مورد دو چیز
30
00:01:00,079 –> 00:01:02,800
شماره یک صحبت می کنیم که ما شبکه ای از نقاط داریم و
31
00:01:02,800 –> 00:01:04,720
برخی از این نقاط را می توان از روی آنها عبور داد
32
00:01:04,720 –> 00:01:06,479
و برخی را نمی توان
33
00:01:06,479 –> 00:01:09,280
به عنوان مثال یک شبکه می تواند شبیه این باشد
34
00:01:09,280 –> 00:01:11,439
که در آن یک یک میدان متحرک است و
35
00:01:11,439 –> 00:01:12,960
صفر یک دیوار است
36
00:01:12,960 –> 00:01:15,280
و داخل آن شبکه همچنین یک
37
00:01:15,280 –> 00:01:17,840
شروع و سلول هدف را تعریف می کنیم و بین
38
00:01:17,840 –> 00:01:19,680
آن دو نقطه سعی می
39
00:01:19,680 –> 00:01:21,200
کنیم کوتاه ترین مسیر را
40
00:01:21,200 –> 00:01:23,040
پیدا کنیم اکنون که کوتاه ترین مسیر
41
00:01:23,040 –> 00:01:25,360
قسمت دوم است و این نیز
42
00:01:25,360 –> 00:01:27,840
بخش واقعی دشوار است زیرا یافتن
43
00:01:27,840 –> 00:01:30,079
این کوتاه ترین مسیر به مقدار زیادی نیاز دارد
44
00:01:30,079 –> 00:01:31,200
. ریاضیات
45
00:01:31,200 –> 00:01:33,280
در واقع
46
00:01:33,280 –> 00:01:35,439
چندین رویکرد ریاضی متفاوت برای
47
00:01:35,439 –> 00:01:38,000
کشف این مسیر وجود دارد که معروفترین
48
00:01:38,000 –> 00:01:39,920
مدل ریاضی برای رسیدن به
49
00:01:39,920 –> 00:01:42,960
آن ستاره نامیده میشود، اما تعداد کمی
50
00:01:42,960 –> 00:01:44,880
دیگر وجود دارد و اگر میخواهید وارد
51
00:01:44,880 –> 00:01:49,600
ریاضی شوید، واقعاً میتوانید بسیار پیچیده می شود
52
00:01:49,759 –> 00:01:51,759
اما با آن می توانیم
53
00:01:51,759 –> 00:01:54,399
با ماژول مسیریابی شروع کنیم و اول از همه
54
00:01:54,399 –> 00:01:56,479
باید آن را نصب کنیم و این
55
00:01:56,479 –> 00:01:58,320
به روش معمول اتفاق می افتد،
56
00:01:58,320 –> 00:01:59,920
بنابراین یا در ترمینال یا در
57
00:01:59,920 –> 00:02:02,399
برق نوع پوسته pip install pathfinding
58
00:02:02,399 –> 00:02:04,479
و شما باید خوب بروید
59
00:02:04,479 –> 00:02:06,799
و با آن ما می توانیم یک
60
00:02:06,799 –> 00:02:09,280
پروژه مسیریابی بسیار ساده ایجاد کنیم و فقط برای
61
00:02:09,280 –> 00:02:11,280
مرجع این پروژه را
62
00:02:11,280 –> 00:02:13,760
از آموزش رسمی ماژول گرفته ام و
63
00:02:13,760 –> 00:02:16,480
لینک آن را در توضیحات قرار خواهم داد.
64
00:02:16,480 –> 00:02:19,200
و در اینجا من یک برگه کد کاملاً خالی دارم
65
00:02:19,200 –> 00:02:21,920
و اول از همه باید
66
00:02:21,920 –> 00:02:24,640
چند مورد را وارد کنم پس بیایید
67
00:02:24,640 –> 00:02:25,440
با
68
00:02:25,440 –> 00:02:27,440
مسیر import شروع
69
00:02:27,440 –> 00:02:28,879
کنیم ding را پیدا کنیم
70
00:02:28,879 –> 00:02:30,480
و اگر اکنون کد را اجرا
71
00:02:30,480 –> 00:02:32,480
کنم می توانم تمام شده را ببینم و
72
00:02:32,480 –> 00:02:35,840
پیغام خطا دریافت نمی کنیم. من می دانم که
73
00:02:35,840 –> 00:02:38,239
این ماژول در اینجا نصب شده است و
74
00:02:38,239 –> 00:02:40,080
همه چیز خوب است اگر پیغام خطا دریافت کردید
75
00:02:40,080 –> 00:02:42,400
در اینجا مشکلی پیش آمده است،
76
00:02:42,400 –> 00:02:45,120
بنابراین بررسی کنید که با این حال برای این ماژول ما
77
00:02:45,120 –> 00:02:47,519
در واقع نمی خواهیم همه چیز را وارد کنیم،
78
00:02:47,519 –> 00:02:50,319
بنابراین اجازه دهید فعلاً این را کمی تغییر دهیم.
79
00:02:50,319 –> 00:02:53,200
pathfinding من می خواهم یک
80
00:02:53,200 –> 00:02:55,840
چیز بسیار خاص را وارد کنم و چیزی که می خواهم وارد کنم
81
00:02:55,840 –> 00:03:00,560
pathfinding dot core dot grid است
82
00:03:00,560 –> 00:03:03,200
و از اینجا می خواهم کلاسی
83
00:03:03,200 –> 00:03:05,200
به نام grid را وارد
84
00:03:05,200 –> 00:03:07,040
کنم و در اینجا مطمئن شوم که حرف اول
85
00:03:07,040 –> 00:03:09,360
باید بزرگ باشد. t
86
00:03:09,360 –> 00:03:10,560
بسیار مهم است
87
00:03:10,560 –> 00:03:13,280
و این کلاس به خوبی
88
00:03:13,280 –> 00:03:15,280
شبکه ما را ایجاد می کند، بنابراین
89
00:03:15,280 –> 00:03:17,519
بیایید فوراً از آن استفاده کنیم
90
00:03:17,519 –> 00:03:20,080
و برای این شبکه ما در واقع به نوعی نقشه نیاز داریم
91
00:03:20,080 –> 00:03:23,519
و در مورد من
92
00:03:23,519 –> 00:03:25,200
قبلاً یک نقشه ایجاد کرده ام که
93
00:03:25,200 –> 00:03:27,920
ماتریس نامیده می شود و به این صورت است
94
00:03:27,920 –> 00:03:29,760
اکنون هر بار که یک در این
95
00:03:29,760 –> 00:03:30,720
زمینه
96
00:03:30,720 –> 00:03:33,120
داریم، میتوانیم روی سلول حرکت کنیم، اما نمیتوانیم
97
00:03:33,120 –> 00:03:34,879
روی یک صفر حرکت کنیم
98
00:03:34,879 –> 00:03:36,879
و بعداً نقشهای بسیار
99
00:03:36,879 –> 00:03:39,200
پیچیدهتر خواهیم داشت در حال حاضر این فقط
100
00:03:39,200 –> 00:03:41,360
برای مثال است و اکنون که داریم
101
00:03:41,360 –> 00:03:42,239
آن را
102
00:03:42,239 –> 00:03:44,799
داریم. باید در واقع یک شبکه ایجاد کنم و
103
00:03:44,799 –> 00:03:46,400
اجازه دهید من در واقع یک نظر در اینجا ایجاد کنم تا
104
00:03:46,400 –> 00:03:49,599
این را نشان دهم، بنابراین یک شبکه ایجاد کنید و
105
00:03:49,599 –> 00:03:51,440
این شبکه در متغیری ذخیره می شود
106
00:03:51,440 –> 00:03:53,920
که من آن را grid می نامم و
107
00:03:53,920 –> 00:03:56,400
برای این کار از شبکه استفاده می کنیم.
108
00:03:56,400 –> 00:04:00,159
کلاس بنابراین یکی که ما به معنای واقعی کلمه
109
00:04:00,159 –> 00:04:02,080
این یکی را اینجا وارد کرده ایم
110
00:04:02,080 –> 00:04:04,400
و این شبکه به یک آرگومان با نام نیاز دارد
111
00:04:04,400 –> 00:04:06,720
و این پارامتر ماتریس نامیده می شود
112
00:04:06,720 –> 00:04:08,000
113
00:04:08,000 –> 00:04:10,400
و در مورد ما قبلاً یک ماتریس داریم
114
00:04:10,400 –> 00:04:12,640
که من آن را ماتریس نامیده ام
115
00:04:12,640 –> 00:04:14,239
بنابراین به معنای واقعی کلمه تمام کاری که ما انجام می دهیم انجام می دهیم. آیا ما
116
00:04:14,239 –> 00:04:15,920
این یک ساعت را وارد می کنیم؟ به عنوان آرگومان نامگذاری شده
117
00:04:15,920 –> 00:04:18,000
برای پارامتری که ماتریس هم
118
00:04:18,000 –> 00:04:19,600
نامیده می شود،
119
00:04:19,600 –> 00:04:21,358
اکنون که
120
00:04:21,358 –> 00:04:23,759
ما باید یک سلول شروع و یک سلول پایانی تعریف کنیم
121
00:04:23,759 –> 00:04:25,919
تا شماره دو
122
00:04:25,919 –> 00:04:29,280
ایجاد شود، سلول شروع و پایان
123
00:04:29,280 –> 00:04:30,400
است
124
00:04:30,400 –> 00:04:32,160
و این نیز در یک متغیر ذخیره می
125
00:04:32,160 –> 00:04:35,280
شود. یک سلول شروع می خواهم و من
126
00:04:35,280 –> 00:04:37,120
یک سلول پایانی می خواهم
127
00:04:37,120 –> 00:04:39,520
و در اینجا باید انتخاب کنیم
128
00:04:39,520 –> 00:04:41,440
زیرا اساساً
129
00:04:41,440 –> 00:04:44,240
باید یکی از این سلول ها را انتخاب
130
00:04:44,240 –> 00:04:46,960
کنیم و یک نقطه شروع را به خوبی تعریف کنیم و می توانیم
131
00:04:46,960 –> 00:04:48,880
به معنای واقعی کلمه هر سلولی را انتخاب کنیم که بتوانیم روی آن راه برویم
132
00:04:48,880 –> 00:04:51,680
تا بتوانیم این یکی را در اینجا انتخاب کنید، اما
133
00:04:51,680 –> 00:04:53,919
ما میتوانیم به معنای واقعی کلمه هر سلول دیگری را انتخاب کنیم
134
00:04:53,919 –> 00:04:56,320
و نحوه ایجاد آن این است که ابتدا باید
135
00:04:56,320 –> 00:04:58,960
شبکه خود را دوباره دریافت کنیم، بنابراین شبکهای که به
136
00:04:58,960 –> 00:05:00,479
تازگی ایجاد
137
00:05:00,479 –> 00:05:04,320
کردهایم و روی آن باید یک گره ایجاد کنیم
138
00:05:04,320 –> 00:05:07,520
و در این گره داریم. برای تعریف یک
139
00:05:07,520 –> 00:05:10,800
سلول x و یک y و در مورد من
140
00:05:10,800 –> 00:05:14,479
فقط با 0 و 0 برویم. بنابراین
141
00:05:14,479 –> 00:05:15,680
در حال حاضر
142
00:05:15,680 –> 00:05:18,960
این 0 و 0 در اینجا
143
00:05:18,960 –> 00:05:20,000
144
00:05:20,000 –> 00:05:21,280
145
00:05:21,280 –> 00:05:22,720
سلول بالا سمت چپ
146
00:05:22,720 –> 00:05:26,320
در شبکه ما خواهد بود و سپس برای سلول n
147
00:05:26,320 –> 00:05:28,800
بیایید همین کار را انجام دهیم به جز اکنون i
148
00:05:28,800 –> 00:05:30,639
می خواهم سلول متفاوتی بگیرم، فرض کنید
149
00:05:30,639 –> 00:05:33,919
در مورد من، من پنج و دو می خواهم و
150
00:05:33,919 –> 00:05:36,960
حدس می زنم فقط برای واضح بودن در اینجا، این
151
00:05:36,960 –> 00:05:39,919
پنج 0 1 2
152
00:05:39,919 –> 00:05:40,720
3
153
00:05:40,720 –> 00:05:45,600
4 و 5 خواهد بود. بنابراین ما در این ستون در اینجا هستیم
154
00:05:45,600 –> 00:05:47,759
و سپس این 2
155
00:05:47,759 –> 00:05:49,440
156
00:05:49,440 –> 00:05:52,960
0 1 و دو خواهد شد، بنابراین ما اساساً
157
00:05:52,960 –> 00:05:55,919
سلول پایین سمت راست را هدف قرار می دهیم
158
00:05:55,919 –> 00:05:57,840
و آن به معنای واقعی کلمه تمام چیزی است که در
159
00:05:57,840 –> 00:06:00,479
حال حاضر نیاز داریم که
160
00:06:00,479 –> 00:06:02,720
می توانیم به مرحله بعدی برویم که
161
00:06:02,720 –> 00:06:04,720
شماره سه خواهد بود و این
162
00:06:04,720 –> 00:06:09,280
برای ایجاد یک یاب با سبک حرکتی
163
00:06:09,280 –> 00:06:10,720
است،
164
00:06:10,720 –> 00:06:12,400
اکنون یک یاب اساساً
165
00:06:12,400 –> 00:06:14,080
مدل ریاضی است که ما را به دست می آورد. از
166
00:06:14,080 –> 00:06:16,479
اینجا تا اینجا تا اینجا
167
00:06:16,479 –> 00:06:18,840
و این چیز دیگری است که ما باید
168
00:06:18,840 –> 00:06:20,720
وارد کنیم، بنابراین
169
00:06:20,720 –> 00:06:25,880
تمام راه را در بالا از مسیریابی
170
00:06:26,720 –> 00:06:30,960
نقطه یاب نقطه در مورد من یک
171
00:06:30,960 –> 00:06:33,520
ستاره می خواهم یک کلاسور ستاره را وارد کنم
172
00:06:33,520 –> 00:06:34,639
173
00:06:34,639 –> 00:06:35,840
174
00:06:35,840 –> 00:06:36,800
و
175
00:06:36,800 –> 00:06:39,120
برای این کلاس در اینجا واقعا مراقب باشید.
176
00:06:39,120 –> 00:06:41,360
نامگذاری و حروف بزرگ
177
00:06:41,360 –> 00:06:44,000
می تواند بسیار دشوار باشد، اما این
178
00:06:44,000 –> 00:06:45,120
یاب از
179
00:06:45,120 –> 00:06:48,080
مدل ریاضی خاصی که ستاره نامیده می شود استفاده می کند،
180
00:06:48,080 –> 00:06:49,919
بنابراین این یک نوع ریاضی برای رساندن ما
181
00:06:49,919 –> 00:06:51,759
از نقطه a به نقطه b است
182
00:06:51,759 –> 00:06:54,160
و تعداد کمی دیگر وجود دارد. اگر
183
00:06:54,160 –> 00:06:55,919
مستندات را بررسی کنید می توانید تمام موارد مرتبط را پیدا کنید
184
00:06:55,919 –> 00:06:57,599
evant ones
185
00:06:57,599 –> 00:06:59,759
و حالا که ما میتوانیم چیزی
186
00:06:59,759 –> 00:07:02,080
بسازیم که Finder نامیده میشود
187
00:07:02,080 –> 00:07:03,520
و این یکی نیز باید در یک متغیر ذخیره شود
188
00:07:03,520 –> 00:07:04,639
189
00:07:04,639 –> 00:07:07,680
و این نمونهای
190
00:07:07,680 –> 00:07:09,599
از کلاس خواهد بود
191
00:07:09,599 –> 00:07:13,039
و این تمام چیزی است که نیاز داریم، تقریباً
192
00:07:13,039 –> 00:07:14,960
در مرحله بعدی هستیم.
193
00:07:14,960 –> 00:07:17,440
بیایید این عدد چهار را صدا کنیم، باید
194
00:07:17,440 –> 00:07:21,360
از Finder استفاده کنیم تا مسیر را پیدا
195
00:07:21,360 –> 00:07:24,080
کنیم، تنها کاری که باید انجام دهیم این است که یاب خود را بدست آوریم
196
00:07:24,080 –> 00:07:26,080
و سپس متد find underscore را فراخوانی کنیم
197
00:07:26,080 –> 00:07:28,160
198
00:07:28,160 –> 00:07:30,080
و در اینجا باید در سه
199
00:07:30,080 –> 00:07:33,199
آرگومان مختلف سلول شروع را به
200
00:07:33,199 –> 00:07:34,400
سلول پایان منتقل کنیم.
201
00:07:34,400 –> 00:07:36,720
و شبکه
202
00:07:36,720 –> 00:07:39,599
به طوری که تمام اطلاعاتی است که ما
203
00:07:39,599 –> 00:07:42,479
قبلاً تعریف کردهایم
204
00:07:42,479 –> 00:07:44,560
، واقعاً وقتی
205
00:07:44,560 –> 00:07:46,800
آن را به دست آوردید خیلی بد نیست، بنابراین امیدوارم
206
00:07:46,800 –> 00:07:50,400
منطقی باشد و اکنون این روش در اینجا
207
00:07:50,400 –> 00:07:52,400
دو چیز را برمیگرداند
208
00:07:52,400 –> 00:07:54,400
و اجازه دهید هر دو را متوقف کنیم. در متغیر
209
00:07:54,400 –> 00:07:56,160
اول از همه مسیر
210
00:07:56,160 –> 00:07:57,039
211
00:07:57,039 –> 00:07:59,120
را برمی گرداند و دوم به بالا می رود آنچه
212
00:07:59,120 –> 00:08:00,720
را اجرا
213
00:08:00,720 –> 00:08:03,599
و اجرا می گویند در اصل به این معنی است که چند چرخه
214
00:08:03,599 –> 00:08:05,599
یا چند سلول باید طی
215
00:08:05,599 –> 00:08:07,919
کنیم تا به انتهای مسیر برسیم.
216
00:08:07,919 –> 00:08:09,919
گاهی اوقات مفید اما در متر در بسیاری از
217
00:08:09,919 –> 00:08:13,039
موارد، شما واقعاً به آن نیاز ندارید
218
00:08:13,039 –> 00:08:15,840
و خب، ما مسیر خود را داریم، بنابراین کاری که اکنون
219
00:08:15,840 –> 00:08:19,440
میتوانیم انجام دهیم این است که نتیجه را چاپ
220
00:08:19,440 –> 00:08:20,639
221
00:08:20,639 –> 00:08:21,919
کنیم، بنابراین بیایید مسیر خود را چاپ کنیم
222
00:08:21,919 –> 00:08:24,160
و اگر کد را اجرا کنیم،
223
00:08:24,160 –> 00:08:25,680
224
00:08:25,680 –> 00:08:27,680
میتوانیم دو تا ساخت را ببینیم
225
00:08:27,680 –> 00:08:29,919
و اجازه دهید در واقع مرور کنید و ببینید
226
00:08:29,919 –> 00:08:31,280
227
00:08:31,280 –> 00:08:32,880
در اینجا در شبکه ما چه اتفاقی میافتد، از
228
00:08:32,880 –> 00:08:35,760
سلول صفر و صفر شروع میکنیم که
229
00:08:35,760 –> 00:08:37,039
این نقطه است،
230
00:08:37,039 –> 00:08:39,200
سپس یک جلوتر به سمت راست
231
00:08:39,200 –> 00:08:41,519
میرویم، بنابراین به این نقطه میرسیم که این
232
00:08:41,519 –> 00:08:44,480
یکی پوشیده شده است، سپس به دو و صفر میرویم.
233
00:08:44,480 –> 00:08:46,720
پس این یکی است سپس به سه می رویم
234
00:08:46,720 –> 00:08:49,120
و صفر آن این یکی است سپس به چهار می رویم
235
00:08:49,120 –> 00:08:51,760
و صفر این یکی سپس پنج و
236
00:08:51,760 –> 00:08:54,240
صفر این یکی است و سپس
237
00:08:54,240 –> 00:08:56,959
به سمت پایین می رویم بنابراین پنج و یک و سپس پنج
238
00:08:56,959 –> 00:09:00,080
و دو و آن دو خانه آخر هستند
239
00:09:00,080 –> 00:09:01,680
و
240
00:09:01,680 –> 00:09:04,080
این کوتاهترین مسیری است که میتوانیم طی کنیم
241
00:09:04,080 –> 00:09:05,680
یا حدس میزنم حداقل یکی از کوتاهترین
242
00:09:05,680 –> 00:09:07,440
مسیرهایی است که چند کوتاهترین مسیر ممکن
243
00:09:07,440 –> 00:09:09,760
در اینجا وجود دارد،
244
00:09:09,760 –> 00:09:12,320
بنابراین اجازه دهید دوباره این را به حداقل برسانم
245
00:09:12,320 –> 00:09:15,040
و حدس میزنم فقط برای تکمیل،
246
00:09:15,040 –> 00:09:18,720
چیزی که میتوانیم چاپ کنیم، اجرا است
247
00:09:18,720 –> 00:09:23,040
و این به ما 17 می رسید. بنابراین این
248
00:09:23,040 –> 00:09:26,880
یاب از بین رفت h این ماتریس 17 بار برای یافتن
249
00:09:26,880 –> 00:09:28,560
این مسیر در
250
00:09:28,560 –> 00:09:30,640
اینجا مناسب ترین
251
00:09:30,640 –> 00:09:33,360
اطلاعات نیست، واقعاً خیلی به ما مربوط نمی شود،
252
00:09:33,360 –> 00:09:34,720
253
00:09:34,720 –> 00:09:35,839
اگرچه
254
00:09:35,839 –> 00:09:38,959
یک چیز مرتبط را به شما می گوید و
255
00:09:38,959 –> 00:09:41,360
آن این است که مسیریابی واقعاً
256
00:09:41,360 –> 00:09:43,680
سخت افزاری است بنابراین آنچه می
257
00:09:43,680 –> 00:09:46,000
خواهید بدانید از این است که شما باید
258
00:09:46,000 –> 00:09:48,800
تا حد امکان کمتر از مسیریابی
259
00:09:48,800 –> 00:09:50,880
استفاده کنید زیرا اگر بیش از حد از
260
00:09:50,880 –> 00:09:52,399
آن استفاده کنید، عملکرد
261
00:09:52,399 –> 00:09:55,360
بازی شما به طور قابل توجهی کاهش می یابد، بنابراین به
262
00:09:55,360 –> 00:09:57,040
خاطر داشته باشید که در پروژه واقعی بیشتر در مورد آن صحبت خواهم کرد.
263
00:09:57,040 –> 00:09:58,320
264
00:09:58,320 –> 00:10:00,320
265
00:10:00,320 –> 00:10:02,480
اکنون یک راهیابی بسیار ابتدایی وجود دارد
266
00:10:02,480 –> 00:10:05,040
که میتوانیم یک چیز دیگر اضافه کنیم، زیرا
267
00:10:05,040 –> 00:10:06,560
در حال حاضر
268
00:10:06,560 –> 00:10:09,440
حرکت مورب نداریم، بنابراین تنها
269
00:10:09,440 –> 00:10:12,000
کاری که میتوانیم در این یاب ستارهای انجام دهیم این است که به
270
00:10:12,000 –> 00:10:13,600
راست چپ
271
00:10:13,600 –> 00:10:15,440
و بالا و پایین حرکت کنیم
272
00:10:15,440 –> 00:10:16,959
که در بازی گاهی اوقات اینطور نیست.
273
00:10:16,959 –> 00:10:19,279
به خصوص واقع گرایانه است زیرا
274
00:10:19,279 –> 00:10:21,600
ممکن است بتوانید به سمت راست بالا یا
275
00:10:21,600 –> 00:10:24,000
پایین چپ و غیره حرکت کنید، بنابراین چگونه می
276
00:10:24,000 –> 00:10:26,480
توانیم این جهات مختلف را اضافه کنیم
277
00:10:26,480 –> 00:10:29,600
و اضافه کردن این امر به نوعی
278
00:10:29,600 –> 00:10:32,399
دست و پا گیر است، اگرچه خیلی سخت
279
00:10:32,399 –> 00:10:34,480
نیست. اساساً یک چیز نوشتنی است که
280
00:10:34,480 –> 00:10:37,519
اساساً در این کلاس asta یاب
281
00:10:37,519 –> 00:10:40,399
باید یک آرگومان اضافه کنیم و به
282
00:10:40,399 –> 00:10:43,839
آن حرکت خط خطی مورب می گویند.
283
00:10:43,839 –> 00:10:44,959
284
00:10:44,959 –> 00:10:47,200
اکنون مشکل این است که استدلالی که
285
00:10:47,200 –> 00:10:49,120
باید به آن وارد شویم باید کلاس دیگری باشد
286
00:10:49,120 –> 00:10:51,200
که همچنین باید
287
00:10:51,200 –> 00:10:54,480
از مسیریابی وارد کنیم. ماژول آن را از
288
00:10:54,480 –> 00:10:56,079
pathfinding
289
00:10:56,079 –> 00:10:57,440
dot core
290
00:10:57,440 –> 00:10:59,760
dot
291
00:10:59,760 –> 00:11:02,240
حرکت مورب فراخوانی میکنیم، از این جا میخواهیم حرکت مورب را وارد کنیم
292
00:11:02,240 –> 00:11:04,240
293
00:11:04,240 –> 00:11:05,680
294
00:11:05,680 –> 00:11:07,760
و حالا کاری که میخواهیم انجام
295
00:11:07,760 –> 00:11:10,560
دهیم میتوانیم در این کلاس در اینجا عبور کنیم، بنابراین
296
00:11:10,560 –> 00:11:13,040
حرکت مورب و سپس
297
00:11:13,040 –> 00:11:15,040
همه راهها را
298
00:11:15,040 –> 00:11:17,360
نقطهگذاری کنیم، بنابراین همیشه میخواهیم حرکت مورب را مجاز کنیم.
299
00:11:17,360 –> 00:11:18,399
300
00:11:18,399 –> 00:11:20,800
و خب این تمام چیزی است که ما نیاز داریم،
301
00:11:20,800 –> 00:11:22,720
اگرچه این قسمت در اینجا به نظر من
302
00:11:22,720 –> 00:11:24,640
کمی دست و پا گیر است، اما فکر می کنم خیلی
303
00:11:24,640 –> 00:11:26,720
بد نیست اما اکنون همه اینها را دوباره اجرا کردم،
304
00:11:26,720 –> 00:11:29,600
305
00:11:29,600 –> 00:11:32,640
مسیر کمی متفاوت می گیریم، بنابراین با صفر و صفر شروع می کنیم
306
00:11:32,640 –> 00:11:34,800
یک و صفر
307
00:11:34,800 –> 00:11:37,920
دو و صفر سه و صفر اما
308
00:11:37,920 –> 00:11:41,440
اکنون به چهار و یک و پنج و دو می رویم
309
00:11:41,440 –> 00:11:46,079
پس این اساساً مسیر ما است
310
00:11:46,079 –> 00:11:48,079
و حدس می زنم این یکی کمی سریعتر
311
00:11:48,079 –> 00:11:50,160
از مسیری است که قبلا داشتیم
312
00:11:50,160 –> 00:11:53,040
و خوب اکنون ما حرکت مورب
313
00:11:53,040 –> 00:11:54,959
داشته باشید، در واقع آنقدرها هم بد نبود،
314
00:11:54,959 –> 00:11:57,680
بنابراین این یک نشانه بسیار خوب است
315
00:11:57,680 –> 00:12:00,560
و با این کار، ما پروژه اصلی خود را داریم،
316
00:12:00,560 –> 00:12:03,440
بنابراین اکنون تنها کاری که باید انجام دهید این است
317
00:12:03,440 –> 00:12:05,680
که همه اینها را در نوعی
318
00:12:05,680 –> 00:12:07,760
پروژه در هر کجا که می خواهید اجرا کنید. در
319
00:12:07,760 –> 00:12:10,079
مورد من این بازی پای خواهد بود اما
320
00:12:10,079 –> 00:12:11,839
به معنای واقعی کلمه می تواند هر چیز دیگری باشد، بنابراین
321
00:12:11,839 –> 00:12:14,000
حدس می زنم با آن اجازه دهید در
322
00:12:14,000 –> 00:12:16,399
مورد پروژه واقعی صحبت کنیم که اکنون
323
00:12:16,399 –> 00:12:18,560
برای این پروژه بسیار جالب تر به نظر می رسد،
324
00:12:18,560 –> 00:12:21,200
سعی می کنم آن را
325
00:12:21,200 –> 00:12:23,120
تا حد امکان ساده کنم. ما میتوانیم روی
326
00:12:23,120 –> 00:12:26,079
بخش مسیریابی تمرکز کنیم و این
327
00:12:26,079 –> 00:12:28,160
در نحوه تنظیم سطح
328
00:12:28,160 –> 00:12:30,079
یا اتاقی که در حال حاضر میتوانید ببینید قابل توجه است،
329
00:12:30,079 –> 00:12:32,639
اساساً کل این اتاق فقط یک
330
00:12:32,639 –> 00:12:33,600
تصویر است
331
00:12:33,600 –> 00:12:35,279
و این تصویر از کاشیهای جداگانه تشکیل شده است
332
00:12:35,279 –> 00:12:38,240
که هر کاشی 32
333
00:12:38,240 –> 00:12:41,040
در 32 است. پیکسلها پهن و بالا هستند و سپس
334
00:12:41,040 –> 00:12:43,839
برای شبکه، اساساً در اطراف بازی کردم و
335
00:12:43,839 –> 00:12:46,160
هر جا که کاشیای با دیوار داریم، صفر را قرار میدهم و هر کجا کاشیای با کف داشته باشیم، صفر را قرار میدهم، اما هر جا که
336
00:12:46,160 –> 00:12:48,800
کاشیهایی
337
00:12:48,800 –> 00:12:50,079
با کف داشته باشیم
338
00:12:50,079 –> 00:12:51,920
، به خودی خود شبکه و
339
00:12:51,920 –> 00:12:54,240
هنر پسزمینه کاملاً مشخص هستند.
340
00:12:54,240 –> 00:12:56,480
اکنون اتفاقاً آنها یکسان به نظر می رسند و
341
00:12:56,480 –> 00:12:59,600
این باعث می شود پروژه کاملاً غیر قابل انعطاف
342
00:12:59,600 –> 00:13:02,000
343
00:13:02,000 –> 00:13:04,480
344
00:13:04,480 –> 00:13:06,079
345
00:13:06,079 –> 00:13:08,160
346
00:13:08,160 –> 00:13:10,480
جزئیات بسیار بیشتر
347
00:13:10,480 –> 00:13:12,560
اما در این مورد من سعی میکنم این
348
00:13:12,560 –> 00:13:14,720
پروژه را تا حد امکان ساده نگه دارم، اما تمام
349
00:13:14,720 –> 00:13:16,959
قسمتهای دیگر مسیریابی کاملاً کاربردی هستند،
350
00:13:16,959 –> 00:13:19,200
بنابراین میتوانید از آنها در
351
00:13:19,200 –> 00:13:21,680
اساساً در هر نوع بازی استفاده کنید،
352
00:13:21,680 –> 00:13:23,200
اکنون یک چیز دیگر قبل از اینکه وارد
353
00:13:23,200 –> 00:13:25,360
کد واقعی شویم و این تنظیمات پوشه ما
354
00:13:25,360 –> 00:13:28,079
در حال حاضر است، من یک پوشه
355
00:13:28,079 –> 00:13:30,399
با کد و تمام آثار هنری دارم که
356
00:13:30,399 –> 00:13:32,800
اساساً به این معنی است که یک فایل پایتون دارم،
357
00:13:32,800 –> 00:13:35,040
سپس تصویر پسزمینه و سپس یک
358
00:13:35,040 –> 00:13:37,200
تصویر اتاقبا و سپس یک تصویر دیگر برای
359
00:13:37,200 –> 00:13:39,920
جعبه انتخاب، چیزی که من واقعاً نیستم. مطمئن هستم که
360
00:13:39,920 –> 00:13:42,399
چگونه آن را نامگذاری کنیم، اما با آن همه چیزهایی
361
00:13:42,399 –> 00:13:45,360
که نیاز داریم داریم، بنابراین بیایید مستقیماً به پروژه واقعی خود بپریم
362
00:13:45,360 –> 00:13:46,639
363
00:13:46,639 –> 00:13:48,959
و اینطور به نظر می رسد من
364
00:13:48,959 –> 00:13:51,440
در حال حاضر یک راه اندازی بسیار ابتدایی دارم، بنابراین
365
00:13:51,440 –> 00:13:53,199
اساساً چیزی که در آن دارم در اینجا یک
366
00:13:53,199 –> 00:13:56,160
ورودی اولیه از pygame است، سپس تنظیمات اولیه
367
00:13:56,160 –> 00:13:59,279
بازی پای و سپس حلقه بازی ما و من
368
00:13:59,279 –> 00:14:01,360
به سادگی تمام
369
00:14:01,360 –> 00:14:03,519
مواردی را که در اختیار داریم ترسیم و به روز می کنم، اگر شما نمی دانید
370
00:14:03,519 –> 00:14:05,680
که چه معنایی دارد،
371
00:14:05,680 –> 00:14:07,680
مقدمه من برای pygame را بررسی کنید. برای پرداختن
372
00:14:07,680 –> 00:14:09,440
به همه اینها با
373
00:14:09,440 –> 00:14:12,560
جزئیات زیاد و علاوه بر این، من
374
00:14:12,560 –> 00:14:14,320
قبلاً همه چیزهایی را که
375
00:14:14,320 –> 00:14:16,560
برای یافتن مسیر نیاز داریم وارد کرده ام، بنابراین این
376
00:14:16,560 –> 00:14:18,240
مواردی است که چند دقیقه پیش دیدید،
377
00:14:18,240 –> 00:14:19,360
378
00:14:19,360 –> 00:14:22,000
بنابراین همه چیز درست است. می توانم
379
00:14:22,000 –> 00:14:24,399
چند مورد را به این موضوع اضافه کنم و اجازه دهید
380
00:14:24,399 –> 00:14:26,079
بخش دیگری را در اینجا اضافه کنم، بگذارید آن
381
00:14:26,079 –> 00:14:27,279
را تنظیم بازی بنامیم
382
00:14:27,279 –> 00:14:28,959
383
00:14:28,959 –> 00:14:30,959
و سپس در اینجا به دو چیز نیاز داریم اول
384
00:14:30,959 –> 00:14:33,360
از همه ما به پس زمینه نیاز داریم و من
385
00:14:33,360 –> 00:14:36,320
این سطح خط زیر خط bg و به معنای واقعی کلمه
386
00:14:36,320 –> 00:14:38,800
تمام آنچه برای این مورد نیاز داریم می نامم. تصویر pygame
387
00:14:38,800 –> 00:14:40,639
388
00:14:40,639 –> 00:14:42,240
dot بارگذاری نقطه است
389
00:14:42,240 –> 00:14:43,120
و
390
00:14:43,120 –> 00:14:47,320
من به این یکی map.png می گویم
391
00:14:47,680 –> 00:14:48,959
و مثل همیشه
392
00:14:48,959 –> 00:14:51,120
فراموش نکنید که
393
00:14:51,120 –> 00:14:53,199
این مورد را تبدیل کنید تا بازی ما کمی بهتر اجرا شود
394
00:14:53,199 –> 00:14:56,000
و اکنون تنها کاری که باید در
395
00:14:56,000 –> 00:14:57,199
حلقه بازی خود انجام دهیم
396
00:14:57,199 –> 00:15:00,639
، می خواهم صفحه نمایش خود را دریافت کنم. و این
397
00:15:00,639 –> 00:15:04,480
تصویر پس زمینه را خونریزی کنید تا ب سرویس زیر خط g
398
00:15:04,480 –> 00:15:06,880
و بالا سمت چپ باید در موقعیت 0
399
00:15:06,880 –> 00:15:08,079
و 0 باشد.
400
00:15:08,079 –> 00:15:10,560
بنابراین اگر همه اینها را اجرا کنم
401
00:15:10,560 –> 00:15:14,240
میتوانیم تصویر پسزمینه اصلی خود را ببینیم
402
00:15:14,240 –> 00:15:15,839
و این به معنای واقعی کلمه فقط یک تصویر است که
403
00:15:15,839 –> 00:15:18,160
هیچ چیز جالبی ندارد،
404
00:15:18,160 –> 00:15:21,120
بنابراین خوب اجازه دهید این را ببندیم و با
405
00:15:21,120 –> 00:15:22,079
آن
406
00:15:22,079 –> 00:15:24,399
میتوانیم شروع به ایجاد شبکه خود برای
407
00:15:24,399 –> 00:15:27,680
مسیریابی کنید و برای این شبکه دوباره
408
00:15:27,680 –> 00:15:30,320
ما به یک ماتریس نیاز داریم که
409
00:15:30,320 –> 00:15:33,040
این
410
00:15:33,040 –> 00:15:36,000
یکی کمی بزرگتر
411
00:15:36,000 –> 00:15:38,839
به نظر می رسد در واقع اینگونه به نظر می رسد
412
00:15:38,839 –> 00:15:40,639
413
00:15:40,639 –> 00:15:43,600
و خوب این چیز کمی
414
00:15:43,600 –> 00:15:46,480
بزرگتر است اما اگر به این نگاه کنید
415
00:15:46,480 –> 00:15:48,240
کمی دقیقتر
416
00:15:48,240 –> 00:15:50,240
به عنوان مثال
417
00:15:50,240 –> 00:15:52,320
در اینجا
418
00:15:52,320 –> 00:15:54,639
میتوانید دیوار حمام را در سمت چپ
419
00:15:54,639 –> 00:15:58,079
ببینید و در اینجا میتوانید دیوار
420
00:15:58,079 –> 00:16:00,800
سمت راست حمام را ببینید
421
00:16:00,800 –> 00:16:03,440
یا اگر به بالای آن نگاه
422
00:16:03,440 –> 00:16:06,560
کنید، میتوانید قسمت میز آشپزخانه را ببینید.
423
00:16:06,560 –> 00:16:08,399
نمیتوانید از
424
00:16:08,399 –> 00:16:11,680
اینجا حرکت کنید، میتوانید یک دیوار آشپزخانه را ببینید
425
00:16:11,680 –> 00:16:14,000
و فکر میکنم اگر واقعاً آن را بکشید، دیدن
426
00:16:14,000 –> 00:16:16,320
آن کمی آسانتر میشود، بنابراین
427
00:16:16,320 –> 00:16:17,920
در اینجا ما یک ستون داریم،
428
00:16:17,920 –> 00:16:20,160
ستون دیگری داریم و اینجا ما دیوار دیگری داریم،
429
00:16:20,160 –> 00:16:21,759
430
00:16:21,759 –> 00:16:23,519
بنابراین این اساسا چگونه کل
431
00:16:23,519 –> 00:16:25,440
روابط عمومی است oject کار میکند،
432
00:16:25,440 –> 00:16:27,199
من یک هنر پسزمینه دارم و علاوه
433
00:16:27,199 –> 00:16:29,040
بر هنر پسزمینه، یک
434
00:16:29,040 –> 00:16:31,360
شبکه مسیریابی واقعی دارم و اتفاقاً این
435
00:16:31,360 –> 00:16:33,199
دو مختصات یکسانی دارند، اما این
436
00:16:33,199 –> 00:16:34,959
تنها ارتباطی است که دارند، میتوانم
437
00:16:34,959 –> 00:16:37,040
هر یک از این نقاط را کاملاً تغییر دهم تا
438
00:16:37,040 –> 00:16:38,560
به یک انواع مختلف راهاندازی مسیریابی،
439
00:16:38,560 –> 00:16:39,519
440
00:16:39,519 –> 00:16:41,839
بنابراین امیدوارم که منطقی باشد،
441
00:16:41,839 –> 00:16:43,680
اما این چیز کاملاً
442
00:16:43,680 –> 00:16:45,759
کاربردی است، بنابراین اجازه دهید آن را به حداقل برسانم و
443
00:16:45,759 –> 00:16:47,600
دیگر لازم نیست نگران آن باشیم
444
00:16:47,600 –> 00:16:51,360
و اکنون با آن میتوانیم واقعاً شروع به
445
00:16:51,360 –> 00:16:54,480
ایجاد مسیریابی اولیه خود کنیم و من من
446
00:16:54,480 –> 00:16:56,959
این را در دو کلاس سازماندهی می
447
00:16:56,959 –> 00:16:59,120
کنیم و با اولین کلاس شروع می کنیم
448
00:16:59,120 –> 00:17:02,000
که مسیر یاب را نامیده ام
449
00:17:02,000 –> 00:17:04,400
وراثت وجود ندارد اما ما
450
00:17:04,400 –> 00:17:06,799
به یک متد init
451
00:17:06,799 –> 00:17:09,439
نیاز داریم و برای متد واحد به dunder
452
00:17:09,439 –> 00:17:12,160
init مانند همیشه نیاز داریم به خود و برای این کار.
453
00:17:12,160 –> 00:17:15,119
یکی من می خواهم یک ماتریس داشته باشم
454
00:17:15,119 –> 00:17:17,439
و سپس در داخل آن اجازه دهید یک
455
00:17:17,439 –> 00:17:20,400
نظر برای تنظیمات اولیه اضافه کنم و در اینجا
456
00:17:20,400 –> 00:17:23,039
اول از همه می خواهم ماتریس نقطه ای خود را داشته باشم
457
00:17:23,039 –> 00:17:24,240
458
00:17:24,240 –> 00:17:28,640
و فقط ماتریس را به تنهایی ذخیره
459
00:17:28,640 –> 00:17:31,360
کنم و در یک ثانیه قرار است فقط
460
00:17:31,360 –> 00:17:33,360
این ماتریس در اینجا باشد که ما می خواهیم
461
00:17:33,360 –> 00:17:36,559
در آنجا منتقل کنیم، هنوز یک
462
00:17:36,559 –> 00:17:39,039
شبکه نیست، بنابراین ما کلاس شبکه را ایجاد
463
00:17:39,039 –> 00:17:40,320
464
00:17:40,320 –> 00:17:41,760
نمی کنیم و در یک ثانیه خواهید دید که چرا
465
00:17:41,760 –> 00:17:44,960
این اطلاعات به خودی خود
466
00:17:44,960 –> 00:17:46,320
مفید است، اساساً در آنجا وجود دارد. برای قرار دادن
467
00:17:46,320 –> 00:17:48,400
نشانگر ماوس، اما فعلاً زیاد نگران آن نباشید،
468
00:17:48,400 –> 00:17:49,840
469
00:17:49,840 –> 00:17:52,240
علاوه بر این، من همچنین میخواهم
470
00:17:52,240 –> 00:17:55,200
شبکه واقعی را ایجاد کنم، بنابراین self.grid
471
00:17:55,200 –> 00:17:58,000
کلاس شبکه خواهد بود و در اینجا
472
00:17:58,000 –> 00:18:01,280
ماتریس اکنون ماتریس خواهد بود.
473
00:18:01,280 –> 00:18:04,400
علاوه بر آن، من می خواهم
474
00:18:04,400 –> 00:18:06,559
یک تصویر دیگر را برای این کلاس وارد کنم و اجازه دهید
475
00:18:06,559 –> 00:18:08,640
این یک سطح انتخابی را صدا کنیم
476
00:18:08,640 –> 00:18:10,000
477
00:18:10,000 –> 00:18:11,600
و برای این یکی تنها چیزی که می خواهم
478
00:18:11,600 –> 00:18:14,320
pygame.image.load است
479
00:18:14,320 –> 00:18:16,160
و این یکی را
480
00:18:16,160 –> 00:18:19,039
selection.png می نامند
481
00:18:19,039 –> 00:18:22,400
و برای این یکی نیاز به تبدیل آلفا داریم.
482
00:18:22,400 –> 00:18:24,880
زیرا مقداری آلفا دارد
483
00:18:24,880 –> 00:18:26,720
و این به معنای واقعی کلمه فقط تصویر انتخابی است
484
00:18:26,720 –> 00:18:28,880
که باید نشان دهیم
485
00:18:28,880 –> 00:18:30,320
مکان نما ماوس در آن قرار دارد
486
00:18:30,320 –> 00:18:32,480
و اجازه دهید در واقع با ایجاد یک
487
00:18:32,480 –> 00:18:34,880
نمونه از این کلاس درست در تنظیمات بازی خود شروع کنیم،
488
00:18:34,880 –> 00:18:37,840
بنابراین در اینجا می خواهم یک مسیر ایجاد کنم.
489
00:18:37,840 –> 00:18:41,919
یاب و این فقط مسیر یاب و است
490
00:18:41,919 –> 00:18:43,440
یکی از آرگومانهایی که در اینجا میخواهیم به آن
491
00:18:43,440 –> 00:18:45,760
منتقل کنیم، ماتریس است،
492
00:18:45,760 –> 00:18:48,559
بنابراین این ماتریس در اینجا است که ما فقط
493
00:18:48,559 –> 00:18:50,880
به آنجا منتقل میکنیم و هیچ چیز دیگری،
494
00:18:50,880 –> 00:18:53,039
بنابراین وقتی میخواهیم این کد را
495
00:18:53,039 –> 00:18:55,600
اجرا کنیم، همه چیز اجرا میشود اما هنوز
496
00:18:55,600 –> 00:18:57,600
چیزی از مسیر یاب نمیبینیم. زیرا
497
00:18:57,600 –> 00:18:59,520
ما از این کلاس به هیچ
498
00:18:59,520 –> 00:19:02,000
وجه استفاده نمی کنیم اما اکنون این
499
00:19:02,000 –> 00:19:04,240
تغییر می کند زیرا من به
500
00:19:04,240 –> 00:19:07,679
این کلاس یک روش به روز رسانی می دهم که به خود نیاز دارد
501
00:19:07,679 –> 00:19:10,400
و به هیچ چیز دیگری نیاز ندارد
502
00:19:10,400 –> 00:19:12,480
و اولین کاری که می خواهم در اینجا انجام دهم این
503
00:19:12,480 –> 00:19:14,960
است که کجا را نشان دهم. ماوس به این صورت است که
504
00:19:14,960 –> 00:19:17,039
بازیکن واقعاً می داند چه سلولی
505
00:19:17,039 –> 00:19:18,400
قرار است انتخاب شود
506
00:19:18,400 –> 00:19:22,840
و این را بگذاریم آن را سلول فعال خود نقطه ترسیم
507
00:19:22,840 –> 00:19:25,440
508
00:19:25,440 –> 00:19:28,720
کنیم، بنابراین ما باید این روش را اکنون ایجاد کنیم، بنابراین
509
00:19:28,720 –> 00:19:29,679
510
00:19:29,679 –> 00:19:30,960
511
00:19:30,960 –> 00:19:32,240
سلول فعال
512
00:19:32,240 –> 00:19:35,840
را طبق معمول خود را بکشیم اما هیچ چیز دیگری
513
00:19:35,840 –> 00:19:38,400
و اکنون در اینجا هستیم مشکلی داریم
514
00:19:38,400 –> 00:19:41,440
که در حال حاضر ما یک موقعیت ماوس
515
00:19:41,440 –> 00:19:43,039
داریم تا بتوانیم مختصات x و y
516
00:19:43,039 –> 00:19:45,280
ماوس خود را بگوییم
517
00:19:45,280 –> 00:19:47,200
اما این اطلاعاتی نیست که
518
00:19:47,200 –> 00:19:48,880
ما به آن نیاز داشته باشیم زیرا
519
00:19:48,880 –> 00:19:51,039
اطلاعاتی که
520
00:19:51,039 –> 00:19:54,320
میخواهیم شاخصی برای ردیف و برای ستونی
521
00:19:54,320 –> 00:19:55,280
522
00:19:55,280 –> 00:19:57,600
که در آن از این سلولها، ماوس ما به این شکل
523
00:19:57,600 –> 00:19:59,120
خواهد
524
00:19:59,120 –> 00:20:01,360
بود، مثلاً اگر
525
00:20:01,360 –> 00:20:03,120
تا آخر اینجا در سلول باشیم،
526
00:20:03,120 –> 00:20:05,760
میخواهم مختصات 0 و
527
00:20:05,760 –> 00:20:06,880
صفر را
528
00:20:06,880 –> 00:20:09,760
داشته باشیم یا اگر در یکی درست کنار آن هستیم،
529
00:20:09,760 –> 00:20:12,799
این یکی باید صفر و یک باشد. بنابراین سطر
530
00:20:12,799 –> 00:20:14,960
صفر و ستون یک
531
00:20:14,960 –> 00:20:16,640
و این
532
00:20:16,640 –> 00:20:18,240
اطلاعات را باید از موقعیت ماوس دریافت
533
00:20:18,240 –> 00:20:20,480
کنیم که مثلاً می تواند
534
00:20:20,480 –> 00:20:21,280
10
535
00:20:21,280 –> 00:20:24,000
و 35 باشد
536
00:20:24,000 –> 00:20:26,080
و حدس می زنم راه بهتری برای نشان دادن
537
00:20:26,080 –> 00:20:27,919
این موضوع به من اجازه دهید در واقع این کار را مستقیم
538
00:20:27,919 –> 00:20:30,880
در بازی انجام دهم که ممکن است منطقی تر باشد.
539
00:20:30,880 –> 00:20:34,400
در حال حاضر من موقعیت ماوس خود را دارم و موقعیت ماوس خود
540
00:20:34,400 –> 00:20:35,679
را با موقعیت زیرخط pygame.mouse.get دریافت می کنم
541
00:20:35,679 –> 00:20:38,240
542
00:20:38,240 –> 00:20:40,880
543
00:20:40,880 –> 00:20:44,880
و بیایید موقعیت ماوس خود را چاپ کنیم
544
00:20:44,880 –> 00:20:46,720
و فراموش نکنید که در واقع این
545
00:20:46,720 –> 00:20:49,120
روش به روز رسانی را در حلقه بازی خود فراخوانی کنید
546
00:20:49,120 –> 00:20:50,320
تا
547
00:20:50,320 –> 00:20:52,480
مسیر یاب
548
00:20:52,480 –> 00:20:54,000
549
00:20:54,000 –> 00:20:57,039
سلول فعال را ترسیم کنید. حالا
550
00:20:57,039 –> 00:20:58,559
و اگر من این را اجرا
551
00:20:58,559 –> 00:21:00,640
کنم اکنون در بازی می توانید ماوس من را ببینید
552
00:21:00,640 –> 00:21:02,640
و اگر من در اطراف حرکت کنم می توانید
553
00:21:02,640 –> 00:21:05,440
موقعیت مکان نما ماوس را در بازی ما ببینید
554
00:21:05,440 –> 00:21:07,520
و اگر تمام راه را به
555
00:21:07,520 –> 00:21:11,600
سمت چپ بالا حرکت کنم می توانید در نقطه ای ببینید 0 و 0
556
00:21:11,600 –> 00:21:14,000
اگر دقیقا پیکسل درست را در
557
00:21:14,000 –> 00:21:14,960
آنجا بزنم ما اکنون می رویم
558
00:21:14,960 –> 00:21:17,440
این موقعیت مفید است اما من باید
559
00:21:17,440 –> 00:21:19,919
آن را تبدیل کنم زیرا این سلول بالا
560
00:21:19,919 –> 00:21:22,720
در حال حاضر 0 و 0 خواهد بود. اما
561
00:21:22,720 –> 00:21:24,159
موقعیت ماوس من چیزی
562
00:21:24,159 –> 00:21:26,320
شبیه به 16 و 19 خواهد بود برای مثال می توانید
563
00:21:26,320 –> 00:21:28,480
آن را در پایین ببینید. سمت چپ و این عدد
564
00:21:28,480 –> 00:21:30,559
را باید به 0 و 0 تبدیل کنم زیرا
565
00:21:30,559 –> 00:21:32,559
این یک سلول خواهد بود
566
00:21:32,559 –> 00:21:34,640
و سپس اگر یک ماوس یک فیلد
567
00:21:34,640 –> 00:21:36,880
به سمت راست باشد، اکنون 50 و
568
00:21:36,880 –> 00:21:38,080
14
569
00:21:38,080 –> 00:21:41,600
خواهد بود، باید 1 و 0 باشد. بنابراین ما
570
00:21:41,600 –> 00:21:44,880
در ستون 1 و ردیف 0 هستیم.
571
00:21:44,880 –> 00:21:47,760
و این باید برای کل فیلد قابل اعمال باشد،
572
00:21:47,760 –> 00:21:49,919
بنابراین ما
573
00:21:49,919 –> 00:21:51,600
موقعیت ماوس خود را به موقعیتی در داخل یک
574
00:21:51,600 –> 00:21:54,720
سیستم مختصات به ویژه
575
00:21:54,720 –> 00:21:56,840
یک فیلد در داخل این
576
00:21:56,840 –> 00:22:00,080
سیستم مختصات تبدیل می کنیم و خوشبختانه این همه آن چیزی نیست.
577
00:22:00,080 –> 00:22:01,679
مشکل است
578
00:22:01,679 –> 00:22:03,039
بنابراین
579
00:22:03,039 –> 00:22:05,360
واقعاً تنها کاری که باید انجام دهیم این است که
580
00:22:05,360 –> 00:22:06,799
باید یک ردیف
581
00:22:06,799 –> 00:22:08,799
و یک ستون داشته باشیم
582
00:22:08,799 –> 00:22:10,640
و این می تواند تمرین بسیار جالبی باشد
583
00:22:10,640 –> 00:22:12,960
، بنابراین سعی کنید خودتان این مشکل را
584
00:22:12,960 –> 00:22:15,440
بفهمید که می خواهید
585
00:22:15,440 –> 00:22:17,360
موقعیت ماوس خود را با x و y تبدیل کنید که
586
00:22:17,360 –> 00:22:18,960
می تواند هر کدام باشد. عدد
587
00:22:18,960 –> 00:22:21,840
در یک سیستم مختصات با یک کاشی
588
00:22:21,840 –> 00:22:24,240
si ze از 32 و 32
589
00:22:24,240 –> 00:22:26,799
به طوری که برای مثال 16 و 16 برای x و
590
00:22:26,799 –> 00:22:29,200
y برای سطر و ستون 0 و 0 می شود
591
00:22:29,200 –> 00:22:32,559
اما چیزی شبیه 50 و
592
00:22:32,559 –> 00:22:34,720
10 برای سطر در ستون 1 و 0 خواهد بود
593
00:22:34,720 –> 00:22:37,720
594
00:22:40,480 –> 00:22:42,240
و این واقعاً چیزهایی
595
00:22:42,240 –> 00:22:45,679
که واقعاً به راحتی می توان بیش از حد فکر کرد، اما
596
00:22:45,679 –> 00:22:48,640
راه حل در واقع به طرز شگفت انگیزی آسان است،
597
00:22:48,640 –> 00:22:50,240
بنابراین اساساً
598
00:22:50,240 –> 00:22:52,240
این بیشترین موقعیت در اینجا
599
00:22:52,240 –> 00:22:55,039
یک x و یک y را برمی گرداند،
600
00:22:55,039 –> 00:22:58,240
بنابراین فعلاً من فقط می خواهم ردیفی
601
00:22:58,240 –> 00:23:02,159
را که 1 یا موقعیت y ما خواهد بود
602
00:23:02,159 –> 00:23:04,320
را بدست بیاورم. کاری که من میخواهم انجام دهم این است که
603
00:23:04,320 –> 00:23:07,039
تقسیم کف را به دست بیاورم و آن را بر 32 تقسیم کنم که
604
00:23:07,039 –> 00:23:10,640
32 اندازه کاشی ما است
605
00:23:10,640 –> 00:23:12,480
و در واقع یک مثال انجام
606
00:23:12,480 –> 00:23:14,400
میدهیم، فرض کنید برای موقعیت ماوس خود
607
00:23:14,400 –> 00:23:17,280
موقعیت 50 را
608
00:23:17,280 –> 00:23:19,280
داریم و سپس تقسیم کف را اعمال میکنیم.
609
00:23:19,280 –> 00:23:22,240
و این را بر 32 تقسیم کنید.
610
00:23:22,240 –> 00:23:25,200
حالا اگر بخواهیم این را فقط بر 32 تقسیم
611
00:23:25,200 –> 00:23:27,400
کنیم، چیزی شبیه به 1.56 بدست می آوریم،
612
00:23:27,400 –> 00:23:29,120
613
00:23:29,120 –> 00:23:31,520
اما از آنجایی که ما در حال انجام یک تقسیم طبقه
614
00:23:31,520 –> 00:23:35,200
هستیم، نتیجه ما 1 خواهد بود. بنابراین
615
00:23:35,200 –> 00:23:36,640
همه این اطلاعات
616
00:23:36,640 –> 00:23:39,919
ناپدید می شوند. و ما با یکی باقی میمانیم
617
00:23:39,919 –> 00:23:42,880
و این یکی در واقع تمام چیزی است که ما هستیم
618
00:23:42,880 –> 00:23:45,679
بنابراین این ردیف ما خواهد بود
619
00:23:45,679 –> 00:23:46,960
620
00:23:46,960 –> 00:23:49,039
و اگر از یک عدد متفاوت استفاده کنیم،
621
00:23:49,039 –> 00:23:51,360
فرض کنیم اگر از 16 استفاده کنیم
622
00:23:51,360 –> 00:23:53,279
623
00:23:53,279 –> 00:23:56,559
و در تقسیم طبقه بر 32 دوباره اعمال
624
00:23:56,559 –> 00:23:59,760
کنیم، این ما را به 0.5 می رساند،
625
00:23:59,760 –> 00:24:01,279
اما دوباره از آنجایی که ما یک طبقه را انجام می دهیم.
626
00:24:01,279 –> 00:24:03,360
تقسیم هر چیزی بعد از
627
00:24:03,360 –> 00:24:06,880
دوره ناپدید می شود، بنابراین این
628
00:24:06,880 –> 00:24:09,360
0.5 ناپدید می شود و ما با یک صفر می مانیم،
629
00:24:09,360 –> 00:24:12,480
بنابراین می دانیم که در موقعیت 16
630
00:24:12,480 –> 00:24:15,440
روی ردیف صفر قرار می گیریم، بنابراین
631
00:24:15,440 –> 00:24:17,279
این دقیقاً به ما می دهد
632
00:24:17,279 –> 00:24:19,360
نقطه مختصات درستی که به آن
633
00:24:19,360 –> 00:24:20,480
نیاز داریم،
634
00:24:20,480 –> 00:24:23,360
اما اکنون میتوانیم همه اینها را کپی کنیم
635
00:24:23,360 –> 00:24:25,360
و همان مورد را روی ستون اعمال کنیم، با این
636
00:24:25,360 –> 00:24:26,640
تفاوت که اکنون
637
00:24:26,640 –> 00:24:29,360
به موقعیت x نیاز داریم و نه موقعیت y و
638
00:24:29,360 –> 00:24:31,679
با آن ردیف و ستون خود را داریم،
639
00:24:31,679 –> 00:24:33,919
بنابراین اکنون ما می توانید از آن اطلاعات برای
640
00:24:33,919 –> 00:24:36,480
ایجاد یک مستطیل با موقعیت x و y استفاده
641
00:24:36,480 –> 00:24:39,440
کنید، این به صورت pygame dot
642
00:24:39,440 –> 00:24:40,480
rect خواهد بود
643
00:24:40,480 –> 00:24:43,039
و در اینجا ما به یک
644
00:24:43,039 –> 00:24:46,400
تاپل با سمت چپ و بالا
645
00:24:46,400 –> 00:24:49,279
و سپس تاپل دیگری با عرض
646
00:24:49,279 –> 00:24:51,279
و ارتفاع و عرض و
647
00:24:51,279 –> 00:24:53,120
ارتفاع هر دو بسیار ساده خواهند بود
648
00:24:53,120 –> 00:24:55,200
به دلیل اینکه هر دو 32 هستند
649
00:24:55,200 –> 00:24:57,840
اکنون سمت چپ و بالا کمی
650
00:24:57,840 –> 00:24:59,600
پیچیده تر هستند و راستش را بخواهید چندان پیچیده نیست،
651
00:24:59,600 –> 00:25:00,480
652
00:25:00,480 –> 00:25:03,200
بنابراین برای سمت چپ می خواهم ستون خود را بدست بیاورم
653
00:25:03,200 –> 00:25:05,679
و آن را در 32 ضرب کنم
654
00:25:05,679 –> 00:25:08,640
و سپس برای بالای من می خواهم ردیف خود را بدست بیاورم.
655
00:25:08,640 –> 00:25:12,400
و این را در 32 ضرب کنید و به این ترتیب
656
00:25:12,400 –> 00:25:14,640
ما داریم سیستم مختصات خود را به یک
657
00:25:14,640 –> 00:25:17,440
موقعیت خاص روی نقشه خود تبدیل می کنیم، با این تفاوت که این
658
00:25:17,440 –> 00:25:19,039
یکی اکنون همیشه در یک
659
00:25:19,039 –> 00:25:20,799
موقعیت خاص خواهد بود، بنابراین به نظر می رسد که ما یک شبکه را دنبال می کنیم
660
00:25:20,799 –> 00:25:24,080
و اکنون چه کاری می توانیم انجام دهیم.
661
00:25:24,080 –> 00:25:26,480
ما میتوانیم سطح صفحه
662
00:25:26,480 –> 00:25:30,400
و بلیت خود را دریافت
663
00:25:30,400 –> 00:25:31,760
664
00:25:31,760 –> 00:25:33,679
کنیم و سطح انتخاب نقطهای خود را داریم و مستطیل خود را داریم
665
00:25:33,679 –> 00:25:36,159
و اکنون بیایید سعی کنیم همه اینها را اجرا کنیم
666
00:25:36,159 –> 00:25:38,720
و اکنون چیز انتخابی خود را
667
00:25:38,720 –> 00:25:40,320
داریم،
668
00:25:40,320 –> 00:25:43,200
بنابراین این مستطیل سبز در اینجا هر
669
00:25:43,200 –> 00:25:45,760
سلولی است که انتخاب کردهایم و این در حال
670
00:25:45,760 –> 00:25:48,799
حاضر به خوبی شبکه را دنبال می کند،
671
00:25:48,799 –> 00:25:51,200
اما در حال حاضر یک نقطه ضعف وجود دارد
672
00:25:51,200 –> 00:25:53,520
که این سلول سبز حتی
673
00:25:53,520 –> 00:25:55,360
روی یک دیوار یا
674
00:25:55,360 –> 00:25:56,720
یکی از این کاشی ها نمایش داده می شود که
675
00:25:56,720 –> 00:25:58,400
قرار نیست روی آن حرکت کنیم
676
00:25:58,400 –> 00:26:00,640
و این را می خواهم تغییر دهم
677
00:26:00,640 –> 00:26:03,840
، فقط می خواهم این کد را اجرا کنم. در اینجا
678
00:26:03,840 –> 00:26:05,919
اگر این خبر می دهد
679
00:26:05,919 –> 00:26:08,320
ation در بالای سلولی است که می توانیم
680
00:26:08,320 –> 00:26:09,440
روی آن حرکت کنیم
681
00:26:09,440 –> 00:26:10,880
و من حدس می زنم این نیز می تواند تمرین بسیار
682
00:26:10,880 –> 00:26:13,279
خوبی باشد، بنابراین سعی کنید
683
00:26:13,279 –> 00:26:15,840
نحوه تغییر همه این موارد را در اینجا به گونه ای تغییر دهید
684
00:26:15,840 –> 00:26:18,400
که فقط در
685
00:26:18,400 –> 00:26:20,799
صورتی که در ماتریس خود روی یک ماتریس قرار داشته باشیم، این کد نمایش داده شود.
686
00:26:20,799 –> 00:26:24,520
687
00:26:28,720 –> 00:26:31,039
اولین چیزی که ما به آن نیاز داریم این است
688
00:26:31,039 –> 00:26:33,919
که اطلاعات موجود در ماتریس روی
689
00:26:33,919 –> 00:26:36,000
چه سلولی هستیم، بنابراین اگر
690
00:26:36,000 –> 00:26:38,000
روی یک یا 0 هستیم.
691
00:26:38,000 –> 00:26:39,840
و برای
692
00:26:39,840 –> 00:26:41,600
آن متغیر دیگری ایجاد
693
00:26:41,600 –> 00:26:44,559
می کنم که آن را مقدار سلول فعلی
694
00:26:44,559 –> 00:26:45,679
695
00:26:45,679 –> 00:26:47,600
و این اطلاعات می نامم. ما می توانیم از
696
00:26:47,600 –> 00:26:51,440
ماتریسی که قبلاً در کلاس خود داریم بدست آوریم
697
00:26:51,440 –> 00:26:53,360
و به معنای واقعی کلمه تمام چیزی که نیاز داریم
698
00:26:53,360 –> 00:26:55,760
self.matrix است
699
00:26:55,760 –> 00:26:58,000
و در اینجا ابتدا به
700
00:26:58,000 –> 00:26:59,200
اندیس سطر
701
00:26:59,200 –> 00:27:01,760
و داخل آن به نمایه ستون نیاز داریم
702
00:27:01,760 –> 00:27:04,720
703
00:27:04,720 –> 00:27:08,080
بنابراین اگر ماتریس را باز کنم
704
00:27:08,080 –> 00:27:10,080
دوباره سطر در اینجا به معنای واقعی
705
00:27:10,080 –> 00:27:12,000
کلمه با ایندکس کردن
706
00:27:12,000 –> 00:27:13,279
کدام یک از
707
00:27:13,279 –> 00:27:16,159
این سطرها یا لیست های چاهی که قرار است به آن
708
00:27:16,159 –> 00:27:18,799
نگاه کنیم، انتخاب می کند و سپس ستون
709
00:27:18,799 –> 00:27:21,600
به داخل هر یک از آن ها نگاه می کند و می بیند
710
00:27:21,600 –> 00:27:22,559
که کدام
711
00:27:22,559 –> 00:27:24,399
عدد را در داخل آن انتخاب می
712
00:27:24,399 –> 00:27:27,760
کنیم. لیست بسیار ساده در واقع
713
00:27:27,760 –> 00:27:29,440
و خوب اکنون
714
00:27:29,440 –> 00:27:30,799
تنها کاری که باید انجام دهیم این
715
00:27:30,799 –> 00:27:32,000
است
716
00:27:32,000 –> 00:27:34,559
اگر مقدار سلول فعلی ما
717
00:27:34,559 –> 00:27:35,690
برابر با یک
718
00:27:35,690 –> 00:27:36,799
[Music]
719
00:27:36,799 –> 00:27:38,799
باشد، میخواهیم
720
00:27:38,799 –> 00:27:40,320
آن دو خط را اجرا کنیم
721
00:27:40,320 –> 00:27:42,240
و اگر
722
00:27:42,240 –> 00:27:44,159
اینطور نیست، نمیخواهیم کاری انجام دهیم
723
00:27:44,159 –> 00:27:46,640
و حالا اگر همه اینها را اجرا
724
00:27:46,640 –> 00:27:48,640
کنم، هنوز میتوانم رنگ سبز خود را ببینم. مستطیل اما
725
00:27:48,640 –> 00:27:51,760
حالا اگر از روی دیوار بروم ناپدید می شود
726
00:27:51,760 –> 00:27:54,240
و اگر دوباره روی زمین بروم دوباره
727
00:27:54,240 –> 00:27:56,880
ظاهر می شود بنابراین به این ترتیب یک
728
00:27:56,880 –> 00:27:59,520
جعبه انتخاب داریم تا بازیکن بتواند
729
00:27:59,520 –> 00:28:01,679
بگوید قرار است کجا حرکت کنیم،
730
00:28:01,679 –> 00:28:03,679
بنابراین این قسمت
731
00:28:03,679 –> 00:28:05,600
در واقع آنقدر بد نبود.
732
00:28:05,600 –> 00:28:08,720
خیلی خوب است، بنابراین اکنون می توانم این روش را
733
00:28:08,720 –> 00:28:11,520
در اینجا به حداقل برسانم و دیگر نگران آن نباشم و
734
00:28:11,520 –> 00:28:13,919
اکنون با آن می توانیم در واقع شروع به
735
00:28:13,919 –> 00:28:17,279
صحبت در مورد خود مسیریابی کنیم
736
00:28:17,279 –> 00:28:19,840
و این شامل
737
00:28:19,840 –> 00:28:21,440
چند مرحله دیگر می شود،
738
00:28:21,440 –> 00:28:23,919
اما در ابتدایی ترین مفهوم اینجا چیزی است
739
00:28:23,919 –> 00:28:26,320
که می خواهیم انجام دهیم. انجام دهید در
740
00:28:26,320 –> 00:28:27,279
کلاس
741
00:28:27,279 –> 00:28:29,679
742
00:28:29,679 –> 00:28:31,600
pathfinder خود، ماژول مسیریابی را برای یافتن
743
00:28:31,600 –> 00:28:34,159
موقعیت شروع و یک موقعیت پایانی، عملکردی اضافه
744
00:28:34,159 –> 00:28:35,440
می کنیم و سپس یک
745
00:28:35,440 –> 00:28:36,880
ویژگی داشته باشیم که اکنون
746
00:28:36,880 –> 00:28:38,399
آن اطلاعات را
747
00:28:38,399 –> 00:28:39,919
در بالای آن
748
00:28:39,919 –> 00:28:41,600
چیزی که می خواهیم ذخیره کنیم. برای ایجاد یک O کامل
749
00:28:41,600 –> 00:28:43,440
کلاسی که roomba نامیده می شود
750
00:28:43,440 –> 00:28:45,840
و این نوار اتاق اساساً
751
00:28:45,840 –> 00:28:48,480
به کلاس pathfinder نگاه می کند و می بیند
752
00:28:48,480 –> 00:28:50,880
که آیا اطلاعات مسیر وجود دارد یا خیر
753
00:28:50,880 –> 00:28:52,240
و به محض اینکه یک اطلاعات مسیر وجود دارد،
754
00:28:52,240 –> 00:28:54,399
اکنون آن مسیر را دنبال می کند که
755
00:28:54,399 –> 00:28:55,279
756
00:28:55,279 –> 00:28:57,039
چگونه آن مسیریابی به
757
00:28:57,039 –> 00:28:58,960
طور خاص کار می کند. در یک ثانیه به آن نگاه می
758
00:28:58,960 –> 00:29:01,279
کنیم، اجازه دهید این کار را گام به گام انجام دهیم،
759
00:29:01,279 –> 00:29:03,600
بنابراین فعلا اجازه دهید
760
00:29:03,600 –> 00:29:05,760
مسیریابی را در این پروژه واقعی کار کنیم و
761
00:29:05,760 –> 00:29:07,440
سپس می توانیم روی حرکت
762
00:29:07,440 –> 00:29:09,919
واقعی شخصیت یا اتاقبا
763
00:29:09,919 –> 00:29:12,240
کار کنیم، بنابراین در اینجا به کد و
764
00:29:12,240 –> 00:29:14,559
اولین کاری که میخواهم انجام دهم این است که در روش init ما
765
00:29:14,559 –> 00:29:17,120
میخواهم بخش دیگری
766
00:29:17,120 –> 00:29:19,200
برای مسیریابی اضافه کنم
767
00:29:19,200 –> 00:29:21,200
و در اینجا ویژگی دیگری ایجاد
768
00:29:21,200 –> 00:29:23,440
کنم که فقط مسیر خواهد بود
769
00:29:23,440 –> 00:29:25,520
و این یک لیست خالی خواهد بود
770
00:29:25,520 –> 00:29:26,960
و اکنون
771
00:29:26,960 –> 00:29:29,919
در داخل این کلاس می خواهم
772
00:29:29,919 –> 00:29:32,240
متد دیگری را تعریف کنم که آن را
773
00:29:32,240 –> 00:29:34,720
ایجاد مسیر می نامم
774
00:29:34,720 –> 00:29:38,080
و این به خود نیاز دارد و نه چیز دیگری
775
00:29:38,080 –> 00:29:39,279
و در اینجا
776
00:29:39,279 –> 00:29:40,399
باید
777
00:29:40,399 –> 00:29:43,360
سه چیز اصلی را که ابتدا به سلول شروع نیاز
778
00:29:43,360 –> 00:29:44,399
779
00:29:44,399 –> 00:29:47,520
داریم و سپس به یک سلول نیاز داریم. سلول n
780
00:29:47,520 –> 00:29:49,600
و سپس ما باید مسیر خود را از
781
00:29:49,600 –> 00:29:50,799
همه اینها
782
00:29:50,799 –> 00:29:52,960
783
00:29:52,960 –> 00:29:55,039
بگیریم و حدس میزنم بیایید یکی یکی دنبال آنها برویم،
784
00:29:55,039 –> 00:29:56,559
حالا اول از
785
00:29:56,559 –> 00:29:59,520
همه میخواهم یک شروع x
786
00:29:59,520 –> 00:30:01,120
و یک سلول شروع
787
00:30:01,120 –> 00:30:02,000
y
788
00:30:02,000 –> 00:30:03,520
789
00:30:03,520 –> 00:30:06,720
بگیرم و بعد از مدتی که اتاقمان را آماده
790
00:30:06,720 –> 00:30:08,720
کردیم، میرویم برای دادن روشی
791
00:30:08,720 –> 00:30:10,159
به اتاقبا برای انجام همه این کارها،
792
00:30:10,159 –> 00:30:11,919
اما در حال حاضر من فقط میخواهم با
793
00:30:11,919 –> 00:30:14,159
یکی و یکی از آنها استفاده کنم تا سمت چپ بالای سلولهای متحرک ما،
794
00:30:14,159 –> 00:30:15,760
795
00:30:15,760 –> 00:30:18,000
اما بعداً این یکی
796
00:30:18,000 –> 00:30:21,200
بسیار انعطافپذیرتر میشود و زمانی که آن را داشته باشیم
797
00:30:21,200 –> 00:30:23,440
من میخواهم گره شروع واقعی خود را دریافت کنم،
798
00:30:23,440 –> 00:30:26,240
بنابراین این گره
799
00:30:26,240 –> 00:30:28,240
نقطه شبکه خود نقطهای خواهد بود
800
00:30:28,240 –> 00:30:29,919
801
00:30:29,919 –> 00:30:32,799
و در اینجا میخواهم در شروع x و شروع y خود را پاس کنم،
802
00:30:32,799 –> 00:30:35,360
803
00:30:35,360 –> 00:30:36,960
بنابراین
804
00:30:36,960 –> 00:30:38,480
این دقیقاً همان کاری است که
805
00:30:38,480 –> 00:30:40,799
قبلاً برای به دست آوردن موقعیت شروع انجام دادهایم.
806
00:30:40,799 –> 00:30:43,760
و اکنون برای موقعیت پایانی میخواهیم
807
00:30:43,760 –> 00:30:46,399
موقعیت موس خود را دوباره پیدا کنیم و برای
808
00:30:46,399 –> 00:30:48,880
رسیدن به آن، میتوانم دوباره این
809
00:30:48,880 –> 00:30:50,399
خطوط کد
810
00:30:50,399 –> 00:30:52,320
را کپی کنم و این قسمت را کوچک کنم
811
00:30:52,320 –> 00:30:55,120
و اکنون سلولی را داریم که در
812
00:30:55,120 –> 00:30:57,279
حال حاضر با ماوس انتخاب میکنیم
813
00:30:57,279 –> 00:31:00,000
و برای ثبات حدس میزنم بیایید
814
00:31:00,000 –> 00:31:01,600
این را صدا بزنید و
815
00:31:01,600 –> 00:31:02,880
زیر y
816
00:31:02,880 –> 00:31:05,200
و و
817
00:31:05,200 –> 00:31:08,000
زیر خط x و اجازه دهید آنها را بعد از آن حرکت دهیم
818
00:31:08,000 –> 00:31:09,120
همدیگر
819
00:31:09,120 –> 00:31:10,480
و به این ترتیب خواندن آن
820
00:31:10,480 –> 00:31:12,399
کمی واضحتر خواهد بود،
821
00:31:12,399 –> 00:31:14,559
اگرچه یک قسمت
822
00:31:14,559 –> 00:31:17,200
در حال حاضر کمی مرا آزار میدهد که فقط میخواهم آنها را جابهجا
823
00:31:17,200 –> 00:31:19,279
824
00:31:19,279 –> 00:31:22,799
کنم تا پایان x اول و آخر
825
00:31:22,799 –> 00:31:25,279
y دوم شود و همه چیز خوب است که ما
826
00:31:25,279 –> 00:31:27,600
یک انتهای x و یک انتهای y
827
00:31:27,600 –> 00:31:28,320
828
00:31:28,320 –> 00:31:29,679
داشته باشیم، بنابراین اکنون
829
00:31:29,679 –> 00:31:32,880
میتوانیم یک نت پایانی مناسب ایجاد کنیم، بنابراین
830
00:31:32,880 –> 00:31:35,200
گره نقطهای شبکه خود نقطهای دوباره
831
00:31:35,200 –> 00:31:37,600
و این بار دوباره و
832
00:31:37,600 –> 00:31:39,679
x و و
833
00:31:39,679 –> 00:31:40,880
y
834
00:31:40,880 –> 00:31:44,320
و اکنون شروع و پایان داریم،
835
00:31:44,320 –> 00:31:46,399
بنابراین اکنون با
836
00:31:46,399 –> 00:31:49,200
آن می تواند مسیر واقعی را ایجاد کند و این
837
00:31:49,200 –> 00:31:51,679
قسمت را واقعاً به شما توصیه می
838
00:31:51,679 –> 00:31:53,120
کنم که خودتان را امتحان کنید،
839
00:31:53,120 –> 00:31:56,320
بنابراین دوباره پروژه قبلی را باز کنید و
840
00:31:56,320 –> 00:31:58,480
سعی کنید این نوع چیزها
841
00:31:58,480 –> 00:32:01,200
را خودتان پیاده کنید که یک یاب ایجاد کنید و
842
00:32:01,200 –> 00:32:03,919
از این یاب مسیری را ایجاد
843
00:32:03,919 –> 00:32:07,440
کنید که تازه می خواهید بروید. برای چاپ
844
00:32:10,640 –> 00:32:13,120
فعلاً خوب است، بنابراین اول از همه باید
845
00:32:13,120 –> 00:32:14,480
یک یاب ایجاد کنیم
846
00:32:14,480 –> 00:32:17,519
و این یاب یک ستاره
847
00:32:17,519 –> 00:32:20,720
یاب خواهد بود و در اینجا میخواهم حرکت مورب من
848
00:32:20,720 –> 00:32:22,720
849
00:32:22,720 –> 00:32:27,120
همیشه یک نقطه حرکت مورب باشد،
850
00:32:27,120 –> 00:32:29,440
بنابراین اتاقبا ما میتواند حرکت در
851
00:32:29,440 –> 00:32:31,039
جهت مورب
852
00:32:31,039 –> 00:32:33,360
n هنگامی که ما آن اطلاعات را به دست آوردیم، میخواهم
853
00:32:33,360 –> 00:32:35,039
854
00:32:35,039 –> 00:32:38,000
مسیر زیرخط نقطه یاب را اجرا کنم
855
00:32:38,000 –> 00:32:40,559
و در اینجا من شروع خود را دارم،
856
00:32:40,559 –> 00:32:44,080
پایان خود را دارم و شبکهام را دارم
857
00:32:44,080 –> 00:32:47,679
و گرید خود شبکه نقطهای است
858
00:32:47,679 –> 00:32:50,559
و همه اینها اساساً همان کاری است که
859
00:32:50,559 –> 00:32:52,240
ما در ابتدا انجام دادهایم. پروژه ساده شده با
860
00:32:52,240 –> 00:32:54,559
این تفاوت که اکنون ما در واقع از
861
00:32:54,559 –> 00:32:56,640
آن در یک پروژه واقعی استفاده می کنیم،
862
00:32:56,640 –> 00:32:58,559
اکنون این یاب در
863
00:32:58,559 –> 00:33:00,880
اینجا مسیر و اجراها را برمی گرداند
864
00:33:00,880 –> 00:33:02,960
و در مورد من فقط به مسیر اهمیت می دهم
865
00:33:02,960 –> 00:33:05,840
و می خواهم این مسیر را به عنوان مسیر خود نقطه تنظیم کنم
866
00:33:05,840 –> 00:33:08,080
867
00:33:08,080 –> 00:33:10,000
و سپس برای اجراها، من فقط
868
00:33:10,000 –> 00:33:12,240
از یک خط زیر استفاده می کنم تا نشان
869
00:33:12,240 –> 00:33:13,760
دهم که واقعاً برایم مهم نیست که چه اتفاقی برای این اطلاعات می افتد،
870
00:33:13,760 –> 00:33:15,039
871
00:33:15,039 –> 00:33:17,279
اما اساساً هر چیزی که قرار است
872
00:33:17,279 –> 00:33:19,840
با این روش در
873
00:33:19,840 –> 00:33:23,279
اینجا برگردانده شود، در این self.path ذخیره می شود
874
00:33:23,279 –> 00:33:26,799
و اکنون کاری که ما می توانیم انجام دهیم این
875
00:33:26,799 –> 00:33:30,720
است که مسیر خود نقطه خود را چاپ کنیم، با این
876
00:33:30,720 –> 00:33:33,600
تفاوت که اکنون به
877
00:33:33,600 –> 00:33:35,519
نوعی مشکل داریم زیرا روشی
878
00:33:35,519 –> 00:33:39,360
داریم، اما واقعاً نمی دانیم چه زمانی آن را اجرا کنیم
879
00:33:39,360 –> 00:33:41,279
و یک چیز بزرگ وجود دارد که باید
880
00:33:41,279 –> 00:33:43,519
کاملاً از آن اجتناب کنید، زیرا از نظر
881
00:33:43,519 –> 00:33:47,120
فنی می توانید خودتان را اجرا کنید.
882
00:33:47,120 –> 00:33:50,240
مسیر را در اینجا ایجاد کنید و اگر w باید این کار را انجام
883
00:33:50,240 –> 00:33:52,640
دهیم که در هر فریم از بازی خود یک مسیر جدید دریافت می
884
00:33:52,640 –> 00:33:55,600
کنیم و در
885
00:33:55,600 –> 00:33:58,480
حال حاضر 60 فریم در بازی خود داریم
886
00:33:58,480 –> 00:33:59,840
، مشکل این است که
887
00:33:59,840 –> 00:34:01,840
این نوع مسیریابی واقعاً
888
00:34:01,840 –> 00:34:04,480
سخت افزاری است بنابراین اگر واقعاً
889
00:34:04,480 –> 00:34:06,880
این را امتحان کنیم نرخ فریم ما کاهش می
890
00:34:06,880 –> 00:34:09,199
یابد. واقعاً واقعاً سخت است،
891
00:34:09,199 –> 00:34:10,800
اساساً هیچ رایانه ای نمی تواند
892
00:34:10,800 –> 00:34:12,879
غالباً این مسیریابی را اجرا
893
00:34:12,879 –> 00:34:16,480
کند، بنابراین اجازه دهید این کار را انجام ندهیم و یک
894
00:34:16,480 –> 00:34:18,960
ایده بسیار بهتر این است که هر بار که روی
895
00:34:18,960 –> 00:34:21,440
دکمه ماوس کلیک می کنیم، این روش را اجرا می کنیم
896
00:34:21,440 –> 00:34:23,679
و برای انجام آن، این
897
00:34:23,679 –> 00:34:25,679
را بررسی می کنیم. اینجا حلقه
898
00:34:25,679 –> 00:34:26,719
899
00:34:26,719 –> 00:34:30,000
بزنید و واقعاً کاری که من میخواهم انجام دهم این است که اگر
900
00:34:30,000 –> 00:34:32,800
نوع نقطه رویداد
901
00:34:32,800 –> 00:34:34,480
برابر با
902
00:34:34,480 –> 00:34:36,399
pygame dot
903
00:34:36,399 –> 00:34:39,119
دکمه ماوس
904
00:34:39,119 –> 00:34:41,760
باشد، میخواهم مسیر یاب خود را دریافت کنم
905
00:34:41,760 –> 00:34:44,960
و مسیر ایجاد خود را اجرا کنم،
906
00:34:44,960 –> 00:34:47,280
بنابراین ما فقط میخواهیم
907
00:34:47,280 –> 00:34:49,040
هر زمان که بازیکن یک مسیر ایجاد کنیم. روی
908
00:34:49,040 –> 00:34:50,000
دکمهای کلیک میکند
909
00:34:50,000 –> 00:34:51,918
که بسیار معقولتر و
910
00:34:51,918 –> 00:34:54,560
کارآمدتر است و من حدس میزنم که با آن
911
00:34:54,560 –> 00:34:56,239
دیگر از این حلقه استفاده
912
00:34:56,239 –> 00:34:58,480
نخواهیم کرد، بنابراین میتوانم آن را به حداقل برسانم
913
00:34:58,480 –> 00:35:00,960
و اکنون در این کد
914
00:35:00,960 –> 00:35:03,520
بیایید آن را امتحان کنیم و اگر روی جایی کلیک
915
00:35:03,520 –> 00:35:05,200
کردم، یک مسیر دریافت میکنیم.
916
00:35:05,200 –> 00:35:08,320
پس ما می دانیم w مسیریابی به خوبی کار
917
00:35:08,320 –> 00:35:10,960
می کند، مشکل اکنون اگر دوباره کلیک کنم،
918
00:35:10,960 –> 00:35:12,000
919
00:35:12,000 –> 00:35:14,480
فقط
920
00:35:14,480 –> 00:35:17,280
یک لیست خالی می
921
00:35:17,280 –> 00:35:19,760
گیریم، اساساً وقتی همه اینها را اجرا می
922
00:35:19,760 –> 00:35:20,720
923
00:35:20,720 –> 00:35:23,040
کنیم، گره شروع ما در همان موقعیت پایانی