در این مطلب، ویدئو PyGame State Machine – Python Game Dev Tutorial با زیرنویس فارسی را برای دانلود قرار داده ام. شما میتوانید با پرداخت 15 هزار تومان ، این ویدیو به علاوه تمامی فیلم های سایت را دانلود کنید.اکثر فیلم های سایت به زبان انگلیسی می باشند. این ویدئو دارای زیرنویس فارسی ترجمه شده توسط هوش مصنوعی می باشد که میتوانید نمونه ای از آن را در قسمت پایانی این مطلب مشاهده کنید.
مدت زمان فیلم: 00:15:02
تصاویر این ویدئو:
قسمتی از زیرنویس این فیلم:
00:00:00,160 –> 00:00:02,720
سلام به همه در این ویدیو، من قصد دارم
2
00:00:02,720 –> 00:00:05,520
یک ماشین حالت اولیه برای pygame ایجاد
3
00:00:05,520 –> 00:00:07,279
کنم، این یک راه ساده برای اضافه کردن کمی
4
00:00:07,279 –> 00:00:08,800
ساختار به کد بازی شما و
5
00:00:08,800 –> 00:00:10,559
جدا کردن عملکردها برای
6
00:00:10,559 –> 00:00:12,400
آسان کردن مدیریت
7
00:00:12,400 –> 00:00:14,000
برای این مثال است. برای
8
00:00:14,000 –> 00:00:15,920
گردآوری یک مثال ساده که نشان می دهد
9
00:00:15,920 –> 00:00:17,039
چگونه یک بازی را بارگیری کنیم
10
00:00:17,039 –> 00:00:18,880
و از طریق یک صفحه نمایش چلپ چلوپ در
11
00:00:18,880 –> 00:00:20,160
منوی اصلی صفحه
12
00:00:20,160 –> 00:00:22,320
بازی و صفحه بازی روی صفحه پیمایش
13
00:00:22,320 –> 00:00:24,080
کنیم که به ما امکان می دهد یک بازی جدید را شروع کنیم
14
00:00:24,080 –> 00:00:26,480
یا به منوی بازی بر روی صفحه نمایش من برگردیم.
15
00:00:26,480 –> 00:00:28,640
یک پروژه خالی در اینجا راه اندازی کردم، بنابراین
16
00:00:28,640 –> 00:00:32,080
ابتدا باید pygame را نصب
17
00:00:39,040 –> 00:00:40,719
کنم و فقط می خواهم چند فایل را تنظیم
18
00:00:40,719 –> 00:00:42,239
کنم که ساختار
19
00:00:42,239 –> 00:00:43,280
پروژه را مشخص کند،
20
00:00:43,280 –> 00:00:44,800
بنابراین نقطه ورودی
21
00:00:44,800 –> 00:00:48,480
بازی را یک فایل main.pi ایجاد می کنم
22
00:00:50,719 –> 00:00:52,559
و من یک فایل برای نگه داشتن شی بازی ما ایجاد
23
00:00:52,559 –> 00:00:54,399
می کنم، این چیزی است که
24
00:00:54,399 –> 00:00:58,239
وضعیت را برای ما مدیریت می
25
00:00:58,239 –> 00:01:00,239
26
00:01:00,239 –> 00:01:03,680
27
00:01:04,319 –> 00:01:05,920
کند.
28
00:01:05,920 –> 00:01:07,360
‘قرار است استفاده
29
00:01:07,360 –> 00:01:09,520
کنم بنابراین یک فایل برای حالت پایه اضافه می
30
00:01:09,520 –> 00:01:11,040
کنم که همه حالت ها fr را به ارث می برند om
31
00:01:11,040 –> 00:01:12,799
و خود ایالت ها
32
00:01:12,799 –> 00:01:14,880
منوی اصلی صفحه نمایش اسپلش گیم پلی و
33
00:01:14,880 –> 00:01:17,680
بازی روی صفحه
34
00:01:19,520 –> 00:01:21,280
که ساختار ما در جای خود است، بنابراین بیایید
35
00:01:21,280 –> 00:01:23,920
شروع به اضافه کردن چیزهایی
36
00:01:23,920 –> 00:01:25,360
کنیم که با نقطه ورودی شروع می
37
00:01:25,360 –> 00:01:27,200
کنیم زیرا این را کاملاً ساده نگه می داریم، بنابراین
38
00:01:27,200 –> 00:01:28,799
در نقطه pi اصلی خود را حفظ خواهیم کرد. فایلی را که میخواهیم
39
00:01:28,799 –> 00:01:29,680
وارد کنیم sys
40
00:01:29,680 –> 00:01:33,119
و pi بازی sys استفاده میشود تا
41
00:01:33,119 –> 00:01:34,880
مطمئن شویم بازی کاملاً بسته شده است
42
00:01:34,880 –> 00:01:36,479
و بدیهی است که بازی pi کتابخانه بازی ما است،
43
00:01:36,479 –> 00:01:39,119
سپس برای ایالتهایمان واردات اضافه میکنیم
44
00:01:39,119 –> 00:01:41,840
45
00:01:41,840 –> 00:01:43,840
که کلاسها هنوز وجود ندارند، اما ما
46
00:01:43,840 –> 00:01:46,000
به زودی آنها را اضافه خواهیم کرد و در نهایت میخواهیم
47
00:01:46,000 –> 00:01:47,439
از طریق شی بازی که بازی را
48
00:01:47,439 –> 00:01:50,399
اجرا میکند و وضعیت ما را مدیریت میکند،
49
00:01:50,399 –> 00:01:52,079
اکنون میخواهیم بازی خود را راهاندازی کنیم، بنابراین
50
00:01:52,079 –> 00:01:53,920
بازی پای را مقداردهی اولیه کنید و اندازه پنجره را
51
00:01:53,920 –> 00:01:56,640
برای استفاده
52
00:01:59,040 –> 00:02:00,799
در اینجا تنظیم کنید، ما به آن صفحه نمایش pygame دادهایم.
53
00:02:00,799 –> 00:02:02,799
برای استفاده از حالتهایی که تعریف کردهایم
54
00:02:02,799 –> 00:02:04,479
و حالت اولیه را به آن میدهیم صفحه نمایش اسپلش،
55
00:02:04,479 –> 00:02:05,439
56
00:02:05,439 –> 00:02:07,280
صفحه را روی فول اچدی تنظیم کردهام،
57
00:02:07,280 –> 00:02:09,520
زیرا به وضوح بازیهای سهگانه میسازم،
58
00:02:09,520 –> 00:02:11,120
سپس میتوانیم حالتهایی را که بازی ما خواهد داشت، تعریف کنیم،
59
00:02:11,120 –> 00:02:13,760
60
00:02:16,000 –> 00:02:17,920
این فقط یک دستور است. شامل تمام حالت های
61
00:02:17,920 –> 00:02:19,760
ممکن برای بازی خود را
62
00:02:19,760 –> 00:02:21,680
سپس یک نمونه از بازی خود ایجاد می کنیم
63
00:02:21,680 –> 00:02:24,560
و آن را در
64
00:02:25,840 –> 00:02:27,520
اینجا اجرا می کنیم و به آن صفحه نمایش pygame داده ایم
65
00:02:27,520 –> 00:02:29,280
تا از حالت هایی که تعریف کرده ایم استفاده کند و
66
00:02:29,280 –> 00:02:30,959
حالت اولیه را به آن داده ایم.
67
00:02:30,959 –> 00:02:32,000
68
00:02:32,000 –> 00:02:33,680
69
00:02:33,680 –> 00:02:35,599
که تا زمانی که بازی تمام شود، رشته را مسدود می کند،
70
00:02:35,599 –> 00:02:36,640
71
00:02:36,640 –> 00:02:38,319
بنابراین تنها کاری که ما باید انجام دهیم این است که
72
00:02:38,319 –> 00:02:42,000
از بازی پای خارج شده و از برنامه خارج
73
00:02:45,680 –> 00:02:47,360
شویم، اکنون ساختار اسکلت
74
00:02:47,360 –> 00:02:49,200
و نقطه ورودی خود را در جای خود داریم، بیایید ابتدا
75
00:02:49,200 –> 00:02:50,879
شی بازی خود را تنظیم
76
00:02:50,879 –> 00:02:52,080
کنیم. نیاز به ایجاد یک
77
00:02:52,080 –> 00:02:53,440
کلاس و ما نیاز داریم
78
00:02:53,440 –> 00:02:57,040
که توسط بازی به عنوان یک وابستگی وارد
79
00:02:58,159 –> 00:02:59,920
کنیم، سپس میتوانیم سازندهای برای این
80
00:02:59,920 –> 00:03:02,239
کلاس
81
00:03:02,480 –> 00:03:04,000
در اینجا اضافه کنیم، جایی که
82
00:03:04,000 –> 00:03:05,519
حالت اولیه بازی را
83
00:03:05,519 –> 00:03:07,680
همانطور که در نقطه ورودی دیدیم تنظیم میکنیم. بازی
84
00:03:07,680 –> 00:03:09,680
ما در حال گذراندن در بازی pi
85
00:03:09,680 –> 00:03:11,440
حالت های موجود ما و
86
00:03:11,440 –> 00:03:12,959
حالت اولیه بازی را نمایش می دهد،
87
00:03:12,959 –> 00:03:14,879
بنابراین اکنون می توانیم خصوصیات اولیه را
88
00:03:14,879 –> 00:03:18,640
برای این شی
89
00:03:18,640 –> 00:03:21,040
تنظیم کنیم، مقدار done را روی false قرار می دهیم وقتی
90
00:03:21,040 –> 00:03:22,879
این روی true تنظیم شود، بازی تمام می شود و
91
00:03:22,879 –> 00:03:24,799
92
00:03:24,799 –> 00:03:26,480
سپس می توانیم از برنامه خارج شویم صفحه نمایش را تنظیم می کنیم تا بتوانیم
93
00:03:26,480 –> 00:03:28,239
بعداً به آن دسترسی داشته باشیم زیرا ایالات
94
00:03:28,239 –> 00:03:30,319
ما برای به روز رسانی به آن نیاز دارند
95
00:03:30,319 –> 00:03:32,400
و سپس ساعت و فریم در ثانیه را داریم
96
00:03:32,400 –> 00:03:34,560
که برای تعیین سرعت رندر
97
00:03:34,560 –> 00:03:35,519
بازی استفاده
98
00:03:35,519 –> 00:03:37,360
می شود و سپس یک کپی از آن می گیریم. گذشته در
99
00:03:37,360 –> 00:03:39,040
حالت ها و نام حالت اولیه
100
00:03:39,040 –> 00:03:40,480
و ما
101
00:03:40,480 –> 00:03:42,159
102
00:03:42,159 –> 00:03:44,879
با استفاده از آن نام،
103
00:03:44,879 –> 00:03:46,400
104
00:03:46,400 –> 00:03:47,440
105
00:03:47,440 –> 00:03:51,200
آبجکت حالت اولیه
106
00:03:54,000 –> 00:03:55,519
را از حالت های موجود دریافت می کنیم. حلقه بازی برای
107
00:03:55,519 –> 00:03:57,360
رسیدگی به هر رویدادی که در وضعیت فعلی رخ داده است
108
00:03:57,360 –> 00:03:58,560
،
109
00:03:58,560 –> 00:04:00,239
مانند ترک بازی یا
110
00:04:00,239 –> 00:04:02,400
فشار دادن کلیدها، سپس ما یک
111
00:04:02,400 –> 00:04:02,879
112
00:04:02,879 –> 00:04:05,760
تابع
113
00:04:08,080 –> 00:04:09,840
حالت تلنگر اضافه می کنیم که اگر حالتی به عنوان انجام شده علامت گذاری شود، فراخوانی
114
00:04:09,840 –> 00:04:11,280
می شود و انتقال را مدیریت می کند.
115
00:04:11,280 –> 00:04:13,360
در حالت بعدی
116
00:04:13,360 –> 00:04:15,439
، مقادیر مربوطه را بهروزرسانی میکند،
117
00:04:15,439 –> 00:04:17,040
وضعیت جدید را تنظیم میکند و در امتداد هر
118
00:04:17,040 –> 00:04:18,399
مقدار ثابتی
119
00:04:18,399 –> 00:04:20,000
که ممکن است بخواهید برخی از دادهها بین حالتها باقی بماند، منتقل
120
00:04:20,000 –> 00:04:21,759
میکند، به عنوان مثال امتیاز یک بازیکن
121
00:04:21,759 –> 00:04:24,160
برای نمایش در بازی روی صفحه
122
00:04:24,160 –> 00:04:26,080
در نهایت آن را فراخوانی میکند. تابع راهاندازی
123
00:04:26,080 –> 00:04:28,320
در حالت این مقدار پایدار را تنظیم میکند
124
00:04:28,320 –> 00:04:30,080
و میتواند هر مقدار اولیهسازی را که
125
00:04:30,080 –> 00:04:30,720
ممکن است بخواهید
126
00:04:30,720 –> 00:04:32,800
زمانی که حالت فعال میشود مدیریت کند
127
00:04:32,800 –> 00:04:35,680
، تابع بهروزرسانی است
128
00:04:38,000 –> 00:04:39,280
که بررسی
129
00:04:39,280 –> 00:04:41,199
میکند اگر نیاز به انتقال به
130
00:04:41,199 –> 00:04:42,880
حالت جدید با استفاده از تابع حالت flip قبلی
131
00:04:42,880 –> 00:04:43,919
132
00:04:43,919 –> 00:04:45,360
و ما تابع به روز رسانی حالت را
133
00:04:45,360 –> 00:04:47,120
برای رسیدگی به مواردی مانند
134
00:04:47,120 –> 00:04:49,600
حرکات اسپرایت یا هر چیز دیگری که لازم است فراخوانی می
135
00:04:49,600 –> 00:04:51,280
کنیم، سپس تابع ترسیم را داریم که
136
00:04:51,280 –> 00:04:56,000
بسیار ساده است و
137
00:04:56,000 –> 00:04:57,680
به حالت می گوید که به
138
00:04:57,680 –> 00:04:59,440
صفحه ای که در مرجع ما می گذرد بکشد.
139
00:04:59,440 –> 00:05:00,240
قبل از
140
00:05:00,240 –> 00:05:02,479
این انجام شد بدون این هیچ چیز قابل مشاهده نخواهد بود و
141
00:05:02,479 –> 00:05:06,000
در نهایت ما تابع run
142
00:05:08,320 –> 00:05:10,479
را داریم این حلقه اصلی بازی ما است و
143
00:05:10,479 –> 00:05:13,440
تا زمانی که به بازی ما گفته شود که خارج شود اجرا می
144
00:05:13,440 –> 00:05:15,120
شود و در آن حلقه ما بازی
145
00:05:15,120 –> 00:05:17,120
را در زمان رسیدگی به هر رویدادی که بوده است به جلو پیش می بریم.
146
00:05:17,120 –> 00:05:18,800
raised وضعیت خود را بهروزرسانی کنید
147
00:05:18,800 –> 00:05:19,680
و خودش را ترسیم کنید
148
00:05:19,680 –> 00:05:22,639
و سپس نمایشگر بازی pi را بهروزرسانی کنید، اکنون
149
00:05:22,639 –> 00:05:24,000
که هسته بازی خود را
150
00:05:24,000 –> 00:05:25,680
در اختیار داریم، باید
151
00:05:25,680 –> 00:05:27,120
اجرای حالتها را شروع کنیم. چیزی برای
152
00:05:27,120 –> 00:05:28,560
نشان دادن در واقع
153
00:05:28,560 –> 00:05:30,320
اولین چیزی که لازم است این است که حالت پایه خود را تنظیم کنیم،
154
00:05:30,320 –> 00:05:31,600
155
00:05:31,600 –> 00:05:33,520
این کلاس پایه ای است که همه حالت
156
00:05:33,520 –> 00:05:34,880
ها از آن به ارث می برند، به
157
00:05:34,880 –> 00:05:36,400
این ترتیب می توانیم مجموعه ای از توابع را داشته
158
00:05:36,400 –> 00:05:38,000
باشیم که می توانیم در شی بازی خود که به
159
00:05:38,000 –> 00:05:39,759
تازگی ایجاد کرده ایم فراخوانی کنیم و بدانیم که همه
160
00:05:39,759 –> 00:05:41,680
توابع در جای خود هستند، بنابراین هیچ خطایی ایجاد نخواهد
161
00:05:41,680 –> 00:05:42,800
شد،
162
00:05:42,800 –> 00:05:44,320
اگر توابع در حالت واقعی پیادهسازی نشوند، فقط میگذرند،
163
00:05:44,320 –> 00:05:46,479
164
00:05:46,479 –> 00:05:48,240
همچنین ویژگیهای پایهای را
165
00:05:48,240 –> 00:05:51,360
که همه حالتها به آنها نیاز دارند مشخص میکند،
166
00:05:51,520 –> 00:05:53,039
بنابراین ابتدا وابستگی بازی pi خود را وارد میکنیم
167
00:05:53,039 –> 00:05:56,400
و یک دوباره کلاس
168
00:05:56,400 –> 00:06:00,080
سپس می توانیم سازنده را پیاده سازی کنیم،
169
00:06:00,960 –> 00:06:02,720
این ویژگی های مشترک را برای همه
170
00:06:02,720 –> 00:06:04,880
حالت ها تنظیم می کند، حتی اگر مقادیر آنها به طور کامل
171
00:06:04,880 –> 00:06:06,160
مقداردهی اولیه
172
00:06:06,160 –> 00:06:08,479
نشده باشد و خروج بر روی false تنظیم شود، زیرا
173
00:06:08,479 –> 00:06:10,080
نمی خواهیم وضعیت به محض باز شدن خارج
174
00:06:10,080 –> 00:06:10,800
شود
175
00:06:10,800 –> 00:06:12,800
و ما انجام نمی دهیم. اگر میخواهیم بازی متوقف
176
00:06:12,800 –> 00:06:14,319
شود، حالت بعدی را روی هیچ
177
00:06:14,319 –> 00:06:15,919
تنظیم میکنیم و مستطیل صفحه را روی
178
00:06:15,919 –> 00:06:18,240
سطح نمایشگر
179
00:06:18,240 –> 00:06:20,000
قرار میدهیم که اگر میخواهیم دادهها را بین
180
00:06:20,000 –> 00:06:22,639
حالتها منتقل کنیم و یک انگشت شست اولیه را تنظیم کنیم، مستطیل صفحه نمایش را روی حالت باقی میماند، استفاده میشود.
181
00:06:22,639 –> 00:06:24,319
فونت
182
00:06:24,319 –> 00:06:27,120
به جای آن از یک فونت سیستمی پیشفرض استفاده میکند،
183
00:06:27,120 –> 00:06:28,720
این راهی است برای استفاده از فونت یکسان
184
00:06:28,720 –> 00:06:30,000
در طول بازی، اگر
185
00:06:30,000 –> 00:06:30,960
فونتهای متفاوتی
186
00:06:30,960 –> 00:06:33,360
میخواهید، میتوانید آنها را در حالتهای مختلف تنظیم کنید، اکنون
187
00:06:33,360 –> 00:06:34,960
میتوانیم توابع مشترک را اضافه کنیم تا
188
00:06:34,960 –> 00:06:38,240
در تمام حالتهایی که چهار حالت داریم استفاده شود.
189
00:06:41,120 –> 00:06:43,600
راهاندازی توابع رایج
190
00:06:43,600 –> 00:06:45,199
فقط دادههای پایدار
191
00:06:45,199 –> 00:06:45,840
192
00:06:45,840 –> 00:06:47,520
را بهطور پیشفرض تنظیم میکند، هر عملکرد دیگری که
193
00:06:47,520 –> 00:06:49,520
در خود ایالتها به
194
00:06:49,520 –> 00:06:51,280
آن رسیدگی میشود، سپس رویدادی را برای مدیریت
195
00:06:51,280 –> 00:06:52,560
رویدادها برای یک وضعیت دریافت میکنیم
196
00:06:52,560 –> 00:06:54,720
و بهروزرسانی و ترسیم برای حالتی داریم که
197
00:06:54,720 –> 00:06:56,080
اینها فقط در پایه ارسال میشوند با
198
00:06:56,080 –> 00:06:57,520
عملکردی که در حالتهای جداگانه اضافه میشود
199
00:06:57,520 –> 00:06:59,120
200
00:06:59,120 –> 00:07:00,639
با کلاس پایه برای حالتها،
201
00:07:00,639 –> 00:07:02,160
میتوانیم اجرای حالتهای خود را شروع کنیم
202
00:07:02,160 –> 00:07:03,919
، بنابراین بیایید ابتدا با
203
00:07:03,919 –> 00:07:06,240
صفحه نمایش شروع
204
00:07:06,639 –> 00:07:09,039
کنیم، وابستگیهای خود را بازی pi
205
00:07:09,039 –> 00:07:12,240
و حالت پایهای را که به تازگی ایجاد
206
00:07:12,240 –> 00:07:13,759
کردهایم وارد میکنیم و میخواهیم کلاس splash screen خود را ایجاد می کنیم
207
00:07:13,759 –> 00:07:16,000
که در حالت پایه قرار می گیرد تا
208
00:07:16,000 –> 00:07:18,639
از
209
00:07:19,280 –> 00:07:20,479
آن به ارث ببریم، سپس باید
210
00:07:20,479 –> 00:07:24,080
سازنده را برای صفحه splash پیاده سازی
211
00:07:24,400 –> 00:07:26,639
کنیم، در اینجا ابتدا سازنده فوق العاده
212
00:07:26,639 –> 00:07:28,720
را صدا می کنیم. سازنده کلاس پایه ما ابتدا
213
00:07:28,720 –> 00:07:30,720
همانطور که قبلا دیدیم اجرا می شود،
214
00:07:30