آموزش ساخت بازی مار با پایتون (Python) + ویدیو آموزش کامل

آموزش ساخت بازی مار با پایتون (Python) + ویدیو آموزش کامل

بروزرسانی : 2 ماه پیش

سورس کد آماده ی این بازی با زبان پایتون در گیتهاب و همچنین ویدیو آموزشی ساخت این بازی افزوده شد.

 

حتما قبلا شما هم بازی مار یا snake که یکی از معروفترین بازی های قدیمی در گوشی های نوکیا ساده بود را دیده اید و با آن بازی کرده اید. امروز قصد داریم با زبان برنامه نویسی پایتون ( python ) بازی سازی کنیم و باکدنویسی بازی معروف مار را پیاده سازی کنیم. 

علاوه بر اینکه سرگرمی خوبی هست خیلی از نکات آموزشی زبان برنامه نویسی پایتون درون این آموزش وجود دارد که به علاقه مندان به برنامه نویسی و مخصوصا پایتون به شدت توصیه میشود که این بازی را همراه با آموزش پیاده سازی کنید و برای یادگیری بیشتر مواردی را به آن اضافه کنید یا آنرا کمی تغییر دهید.

آموزش ساخت بازی مار با زبان برنامه نویسی پایتون
 
خب بیایید در ابتدا جزئیات این آموزش را بررسی کنیم :
  • زبان برنامه نویسی مورد استفاده : Python
  • تعداد خطوط کدنویسی شده : ۷۰ خط کد
  • محیط توسعه : visual studio code
  • مدرس : مهندس سام نیکزاد

خب بیایید آموزش را شروع کنیم ولی قبل از هرچیزی پیشنهاد میکنیم اگر حوصله ی مطالعه ی این مقاله ی آموزشی را ندارید بجای مطالعه ، ویدیو آموزشی که در زیر قرار داده ایم را تماشا کنید : 

 

 
 
خب بیایید آموزش را شروع کنیم. 
 

شروع ساخت بازی مار (snake) با پایتون

 
برای شروع ساخت بازی مار یا snake با زبان برنامه نویسی پایتون ابتدا محیط کدنویسی خود را باز کنید که اینجا ما از vscode استفاده کردیم. یک فایل جدید به اسم snake.py بسازید و شروع کنید داخل این فایل کدنویسی پایتون انجام بدهید.
در ابتدای کار ما نیاز به یک مکعب برای محیط بازی نیاز داریم همانگونه که در تصویر زیر میبینید مار باید درون یک محیط مکعبی شکل بازی بکند و زمانی که به دیواره های این مکعب برخورد میکند بازی تمام شود :‌
آموزش ساخت بازی snake با پایتون تصویر ۱

برای ترسیم این محیط از ماژول پرکاربرد در زبان برنامه نویسی پایتون که در بازی سازی با پایتون هم ممکن است بسیار به دردتون بخوره استفاده میکنیم که اسم ماژول curses هست با استفاده از curses میتوانید یک محیط مکعبی شکل به همراه border ترسیم کنید و مختصات آنرا بعنوان مرز به بازی معرفی کنید تا اولا غذاهایی که برای مار ایجاد میشود درون آن محیط باشد و علاوه براین هنگام برخورد مار به این مرزها بازی تمام شود.
از تکه کد زیر برای ترسیم این محیط استفاده میکنیم : 
# setup window
curses.initscr()
win = curses.newwin(20,60,0,0)
win.keypad(1)
curses.noecho()
curses.curs_set(0)
win.border(0)
win.nodelay(1)
بعد از ترسیم محیط بازی بصورت مکعب و کدنویسی ویژگی های آن مثل دریافت دکمه از کاربر و خاموش کردن echo و همچنین خاموش کردن تاثیر ماوس به ساختن ویژگی های غذا و مار میپردازیم.
 

پیاده سازی مار (snake) و غذا (food) در محیط بازی 

توجه کنید که ما در این بازی از هیچ ماژول گرافیکی یا مخصوص بازی استفاده نمیکنیم و به همین علت باید از کاراکترهای ساده برای ساختن مار و غذا کمک بگیریم.
در ابتدا مار را با استفاده از سه عدد کاراکتر که پشت سرهم قرار میگیرند میسازیم و سپس با استفاده از یک کاراکتر غذا را بصورت رندم روی صفحه نمایش میدهیم.
برای ساختن مار و غذا از کدهای زیر استفاده میکنیم که دو عدد متغیر هستند که مختصات x و y روی صفحه را بصورت توپل به آنها معرفی کردیم : 
# snake food 
snake = [(9,10),(9,9),(9,8)]
food = (10,20)

پس snake یا مار بازی ما با پایتون در ابتدا در نقطه ی y=9 و x=10 ظاهر میشود و چون قصد داریم در شروع به سمت راست حرکت کند پس دو کاراکتر بعدی را با کم کردن مقدار x و ثابت نگه داشتن y تعریف میکنیم. در این صورت برای کاراکتر بعدی که وسط مار هست یک واحد از x کم میکنیم و برای دم مار دو واحد از x کم میکنیم که مختصات مار را تشکیل میدهند.

آموزش ساخت بازی snake با زبان python

بعد از تعریف اولین موقعیت مکانی مار و غذای ان در صفحه باید آنها را روی صفحه ترسیم کنیم ولی از آنجایی که مار دائما در حال حرکت است ترسیم مار را باید درون یک حلقه ی بینهایت while قرار دهیم ولی غذا را همینطوری بیرون از حلقه میتوانیم پیاده سازی کنیم.

 

پیاده سازی منطق یا logic بازی مار با زبان پایتون

در واقع برای پیاده سازی بازی پایتون ما باید موارد زیر را ابتدا در نظر بگیریم تا بتوانیم با ذهنیت خوب کدنویسی کنیم و اشتباه یا باگی موقع کدنویسی رخ ندهد. بازی سازی با پایتون یکی از تفریحاتی هست که به یادگیری سریع پایتون کمک میکند : 

 

  • ما باید یک حلقه ی بینهایت while داشته باشیم تا درون آن مار حرکت کند البته تا زمانی که دکمه ی Esc توسط کاربر فشار داده نشود یا بازی به شکست نخورد.
  • دکمه های up down right left کیبورد را برای تعیین جهت حرکت مار باید تعریف کنیم
  • اگر سر مار با غذا برخورد کرد باید آن غذا از صفحه پاک شود و بصورت رندم در جای دیگری غذای جدیدی نمایش داده شود
  • زمانی که غذا خورده میشود باید امتیاز ما افزایش پیدا کند

لیست بالا الگوریتم کلی بازی مار با زبان پایتون هست که فقط کمی کدنویسی نیاز دارد. 

کدهای الگوریتم های بالا بطور خلاصه به شکل زیر میباشد ولی اگر در درک کدهای زیر دچار مشکل هستید حتما ویدیو آموزشی که در بالا قرار دادیم را تماشا کنید :‌

while key != ESC:
    win.addstr(0,10,' score is :'+str(score)+' ')
    win.timeout(150 - (len(snake)//5+len(snake)//10)%120)
    win.addstr(0,25,' speed = '+str(150 - (len(snake)//5+len(snake)//10)%120)+' ')

    prev_key = key 
    event = win.getch()
    key = event if event != -1 else prev_key

    if key not in [curses.KEY_LEFT,curses.KEY_RIGHT,curses.KEY_DOWN,curses.KEY_UP,ESC]:
        key = prev_key

    y= snake[0][0]
    x= snake[0][1]

    if key == curses.KEY_DOWN:
        y += 1
    if key == curses.KEY_UP:
        y -= 1   
    if key == curses.KEY_RIGHT:
        x += 1 
    if key == curses.KEY_LEFT:
        x -= 1 
    snake.insert(0,(y,x))

    if y == 0 : break
    if y == 19 : break
    if x == 0 : break
    if x == 59 : break
    if snake[0]  in snake[1:]:break

    if snake[0] == food:
        score += 1 
        food = ()
        while food == ():
            food = (randint(1,17),randint(1,57))
            if food in snake : food = ()
            win.addch(food[0],food[1],'*')
    else:
        last = snake.pop()
        win.addch(last[0],last[1],' ')
    
    win.addch(snake[0][0],snake[0][1],'#')

curses.endwin()
print(f'final score : {score}')

 

و در پایان سورس کد کامل این بازی در گیتهاب قرار گرفته و کافی است دانلود و با python اجرا کنید تا نتیجه ی نهایی بازی مار با پایتون را ببینید : 

https://github.com/nikzad-avasam/snake-by-python/blob/main/snake.py

 

.

لینک کوتاه این مقاله : https://avasam.ir/post/381
این سیستم برپایه ی علاقه مندی شما یک دوره ی مناسب به شما پیشنهاد میدهد
مرا بسوی بهترین دوره ی آموزشی که برای من مناسب است هدایت کن 🤖
برای استفاده ی دیگران و حمایت از ما در جامعه های زیر به اشتراک بگذارید

.:: نظرهای کاربران ::.
مهمان / 5 ماه پیش

خیلی باحال بود که با این همه کد کم میشه یه بازی مثل مار رو ساخت دمت گرم استاد

محسن / 2 سال پیش

برای یادگیری پایتون خیلی عالیه ممنون از زحمات شما 

دوره ی آموزش پروژه محور ساخت کافه بازار دوره ی آموزش پروژه محور ساخت فروشگاه دیجیکالا آموزش لاراول دوره ی آموزش ویو جی اس