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