همانطور که می بینید، دستور for ابتدا از طریق x سپس درون حلقه for داخلی، از طریق y حلقه می زند و برای پوشش عکس چمن بر روی بعد صفحه نمایش x و y ایجاد شده توسط حلقه های for رسم می کند. چند خط بعدی فقط قلعه ها یا castle ها را روی صفحه ترسیم می کند. اگر برنامه را اکنون اجرا کنید، باید چیزی شبیه به این خروجی را دریافت کنید:
حالا منظره و شکل بازی کمی دلپذیر شد در ادامه به مراحل بعدی ساخت بازی با پایتون می پردازیم.
مرحله سوم: حرکت قهرمان بازی با صفحه کلید
در این مرحله باید برخی عناصر بازی برای واقعی کردن آن را اضافه کنید، مانند این که قهرمان بازی یا همان خرگوش به فرمان صفحه کلید پاسخ دهد. برای انجام این کار، ابتدا یک روش خوب برای پیگیری اینکه کدام کلیدها در یک لحظه معین فشرده می شوند را پیاده سازی می کنید. شما می توانید این کار را به سادگی با ایجاد آرایه ای از حالت های کلیدی که وضعیت هر کلیدی را که می خواهید برای بازی استفاده کنید، نگه دارد. کد زیر را به game.py در انتهای بخش شماره 2 (پس از تنظیم ارتفاع و عرض صفحه) اضافه کنید:
در این مرحله باید برخی عناصر بازی برای واقعی کردن آن را اضافه کنید، مانند این که قهرمان بازی یا همان خرگوش به فرمان صفحه کلید پاسخ دهد. برای انجام این کار، ابتدا یک روش خوب برای پیگیری اینکه کدام کلیدها در یک لحظه معین فشرده می شوند را پیاده سازی می کنید. شما می توانید این کار را به سادگی با ایجاد آرایه ای از حالت های کلیدی که وضعیت هر کلیدی را که می خواهید برای بازی استفاده کنید، نگه دارد. کد زیر را به game.py در انتهای بخش شماره 2 (پس از تنظیم ارتفاع و عرض صفحه) اضافه کنید:
keys = [False, False, False, False]
playerpos=[100,100]
playerpos=[100,100]
کد بالا آرایه ای از کلیدهای فشرده شده را به ترتیب کلید جهت بالا، چپ، پایین و راست ثبت می کند و متغیر playerpos هم مکان بازیکن یا همان خرگوش را مشخص می کند. از آنجا که در بازی، خرگوش به موقعیت های مختلف حرکت می کند، داشتن متغیری که شامل موقعیت خرگوش باشد و سپس به سادگی خرگوش را به آن موقعیت منتقل کند، آسان تر است. اکنون باید کد موجود برای ترسیم خرگوش را برای استفاده از متغیر جدید playerpos تغییر دهید. خط زیر را در قسمت شماره 6 تغییر دهید:
screen.blit(player, (100,100))
screen.blit(player, (100,100))
به جای این دستور بالا، دستور زیر را قرار دهید.
screen.blit(player, playerpos)
در مرحله بعد، آرایه کلیدها را بر اساس فشردن کلیدها به روز کنید. PyGame با افزودن توابع event.key تشخیص فشارهای کلید را آسان می کند. در انتهای بخش شماره 8، بلافاصله پس از بررسی بلاک event.type == pygame.QUIT، این کد را (در همان سطح تورفتگی pygame.QUIT if block پس از دستور exit(0)) قرار دهید:
screen.blit(player, playerpos)
در مرحله بعد، آرایه کلیدها را بر اساس فشردن کلیدها به روز کنید. PyGame با افزودن توابع event.key تشخیص فشارهای کلید را آسان می کند. در انتهای بخش شماره 8، بلافاصله پس از بررسی بلاک event.type == pygame.QUIT، این کد را (در همان سطح تورفتگی pygame.QUIT if block پس از دستور exit(0)) قرار دهید:
شاید فکر کنید این کدها در ساخت بازی با پایتون پیچیده هستند اما اگر آن ها را به عبارات if تقسیم کنید، چندان پیچیده نیست. ابتدا بررسی کنید که آیا کلید فشار داده شده، آزاد شده است یا خیر؟ سپس بررسی می کنید که کدام کلید فشرده یا آزاد می شود، و اگر کلید فشرده یا آزاد شده، یکی از کلیدهایی است که از آن استفاده می کنید، متغیر کلیدها را متناسب با آن به روز می کنید. در نهایت، شما باید متغیر playerpos را در پاسخ به فشارهای کلید به روز کنید. کد زیر را به پایان game.py اضافه کنید (با یک سطح تورفتگی، آن را در همان سطح حلقه for قرار دهید):
این کد به سادگی بررسی می کند که کدام یک از کلیدها فشرده می شوند و از موقعیت x یا y خرگوش (بسته به کلید فشرده شده) اضافه یا کم می کند تا بازیکن حرکت کند. بازی را اجرا کنید و باید بتوانید با جهت های کیبرد خرگوش را حرکت دهید.
Forwarded from هشتگ تبلیغ تخصصی
🚀 دوره آموزشی علـــــم داده (Data Science)
🔥 نیاز روز بــــازار کــــار ایــــــران و خـــارج
🏙 مناسب برای تمام رشتهها
🖥 آموزش با نرم افزارها و زبــانهای R، Python و SQL Server
🌟 با گواهینامه مورد تایید وزارت علوم و معتبر
🔬 آموزش #آنلاین و با موردکاویهای واقعی و پروژه
🚧 در خــــانه بمانید و آمـــــوزش ببینید
🔗 مشاهده جزئیات دوره و مشاوره رایگان:
https://tihe.ac.ir/data-science-course/
🔥 نیاز روز بــــازار کــــار ایــــــران و خـــارج
🏙 مناسب برای تمام رشتهها
🖥 آموزش با نرم افزارها و زبــانهای R، Python و SQL Server
🌟 با گواهینامه مورد تایید وزارت علوم و معتبر
🔬 آموزش #آنلاین و با موردکاویهای واقعی و پروژه
🚧 در خــــانه بمانید و آمـــــوزش ببینید
🔗 مشاهده جزئیات دوره و مشاوره رایگان:
https://tihe.ac.ir/data-science-course/
This media is not supported in your browser
VIEW IN TELEGRAM
مرحله چهارم: چرخش خرگوش
خوب تا الان خرگوش می تواند با فشار دادن کلیدها حرکت کند، اما اگر بتوان از ماوس برای چرخاندن خرگوش به جهت مورد نظر استفاده کرد، عالی خواهد بود. برای اجرای این عمل نیاز به محاسبات مثلثاتی داریم. به تصویر زیر توجه کنید:
خوب تا الان خرگوش می تواند با فشار دادن کلیدها حرکت کند، اما اگر بتوان از ماوس برای چرخاندن خرگوش به جهت مورد نظر استفاده کرد، عالی خواهد بود. برای اجرای این عمل نیاز به محاسبات مثلثاتی داریم. به تصویر زیر توجه کنید:
در تصویر بالا، اگر مختصات (5،3) موقعیت خرگوش و مختصات (2،4) موقعیت فعلی ماوس باشد، می توان با اعمال تابع مثلثاتی atan2 به تفاوت در زاویه چرخش (z) را پیدا کنید. پس با فاصله بین دو نقطه و تابع tan به سادگی خرگوش بازی در جهت ماوس خواهد چرخید.
اگر کمی در مورد این قسمت گیج شده اید، نگران نباشید و ادامه دهید بازی سازی نیاز به درک کامل از ریاضیات دارد به همین دلیل است که باید در کلاس ریاضی حواستان جمع باشد. البته این راهکار را همیشه در برنامه نویسی بازی استفاده خواهید کرد. اکنون باید این مفهوم را در ساخت بازی با پایتون به کار بگیرید. برای انجام این کار، می توانید از تابع PyGame Surface.rotate (degree) استفاده کنید. به خاطر داشته باشید که مقدار Z در رادیان است. تابع atan2 در کتابخانه ریاضی پایتون وجود دارد؛ بنابراین ابتدا کد زیر را به انتهای بخش شماره 1 اضافه کنید:
import math
سپس، آخرین خط در بخش 6 (خط player.blit) را با کد زیر جایگزین کنید:
اگر کمی در مورد این قسمت گیج شده اید، نگران نباشید و ادامه دهید بازی سازی نیاز به درک کامل از ریاضیات دارد به همین دلیل است که باید در کلاس ریاضی حواستان جمع باشد. البته این راهکار را همیشه در برنامه نویسی بازی استفاده خواهید کرد. اکنون باید این مفهوم را در ساخت بازی با پایتون به کار بگیرید. برای انجام این کار، می توانید از تابع PyGame Surface.rotate (degree) استفاده کنید. به خاطر داشته باشید که مقدار Z در رادیان است. تابع atan2 در کتابخانه ریاضی پایتون وجود دارد؛ بنابراین ابتدا کد زیر را به انتهای بخش شماره 1 اضافه کنید:
import math
سپس، آخرین خط در بخش 6 (خط player.blit) را با کد زیر جایگزین کنید:
بیایید ساختار اساسی کد بالا را مرور کنیم. ابتدا موقعیت ماوس و خرگوش را دریافت می کنید. سپس آن ها را وارد تابع atan2 می کنید. پس از آن، زاویه دریافتی از تابع atan2 را از رادیان به درجه تبدیل می کنید (رادیان را تقریباً در 57.29 یا 360/2π ضرب کنید). از آنجا که خرگوش چرخانده می شود، موقعیت آن تغییر می کند. بنابراین اکنون موقعیت جدید خرگوش را محاسبه کرده و خرگوش را روی صفحه نمایش ترسیم می کنیم.
حال بازی را دوباره اجرا کنید. اگر فقط از کلیدهای جهت کیبورد استفاده می کنید بازی باید دقیقاً مانند قبل رفتار کند. اما اگر ماوس خود را حرکت دهید، خرگوش نیز می چرخد.
حال بازی را دوباره اجرا کنید. اگر فقط از کلیدهای جهت کیبورد استفاده می کنید بازی باید دقیقاً مانند قبل رفتار کند. اما اگر ماوس خود را حرکت دهید، خرگوش نیز می چرخد.