برنامه نویسی و طراحی سایت

آموزش ساخت بازی مار با پایتون — ساده و رایگان + نمونه کد

آموزش ساخت بازی مار با پایتون — ساده و رایگان + نمونه کد

پایتون یکی از بهترین زبان‌های برنامه نویسی حال حاضر به حساب می‌آید و محبوبیت زیادی دارد و افراد بسیاری به دنبال یادگیری پایتون هستند. یکی از مهم‌ترین مراحل در مسیر یادگیری برنامه نویسی ، خصوصاً مسیر یادگیری پایتون، انجام پروژه‌های عملی است. یادگیری واقعی با تمرین حاصل می‌شود و مهارت برنامه نویسی را تنها می‌توان با انجام پروژه تقویت کرد. یکی از پروژه‌های رایجی که در آموزش پایتون و به ویژه در حوزه بازی‌سازی و آن هم در حیطه ساخت بازی با پایتون بسیار رایج است و محبوبیت دارد، ساخت بازی مار با پایتون به حساب می‌آید. در این مقاله از مجله تم آف به آموزش ساخت بازی مار با پایتون پرداخته شده است.

فهرست مطالب این نوشته
آموزش ساخت بازی مار با پایتون

۱. نصب Pygame

۲. ایجاد صفحه برای ساخت بازی مار با پایتون

۳. ایجاد مار در ساخت بازی مار با پایتون

۴. حرکت دادن مار در ساخت بازی مار با پایتون

فیلم های آموزش پایتون تم آف

۵. کدنویسی حالت اتمام بازی در صورت برخورد مار با دیواره ها

۶. قرار دادن غذا برای رشد مار در ساخت بازی مار با پایتون

۷. افزایش طول مار در ساخت بازی مار با پایتون

۸. نمایش امتیاز بازیکن در ساخت بازی مار با پایتون

سوالات رایج ساخت بازی مار با پایتون

ساخت بازی مار با پایتون چگونه انجام می‌شود؟

آیا من هم می‌توانم ساخت بازی مار با پایتون را انجام دهم؟

نصب Pygame‌ پایتون در ویندوز به چه صورت است؟

ماژول Pygame‌ در پایتون چیست؟

جمع‌بندی

faradars mobile

آموزش ساخت بازی مار با پایتون

ساخت بازی مار در این مقاله از ۸ گام مختلف تشکیل شده است. Pygame کتابخانه‌ای محبوب و قدرتمند برای ساخت بازی با پایتون به حساب می‌آید.

آموزش پروژه محور پایتون – ساخت بازی Snake
فیلم آموزش پروژه محور پایتون – ساخت بازی Snake در تم آف

کلیک کنید

در این مطلب هم از Pygame برای ساخت بازی مار با پایتون استفاده شده است. اولین کاری که باید برای ساخت بازی در پایتون با Pygame انجام شود، نصب این کتابخانه روی سیستم است.

۱. نصب Pygame

باید به این نکته توجه داشت که پیش از هر چیز باید نصب پایتون در ویندوز، مک یا لینوکس انجام شود. نصب PIP پایتون نیز در صورت نصب نبودن آن، پیش از نصب Pygame‌ ضروری است. برای انجام این کار می‌توان به سادگی از دستور زیر در خط فرمان استفاده کرد:

pip install pygame

پس از نصب مجموعه ماژول‌های Pygame با استفاده از PIP، فقط باید آن را ایمپورت کرد و به این ترتیب کار توسعه و ساخت بازی مار با پایتون شروع می‌شود. پیش از ادامه آموزش ساخت بازی مار با پایتون ، بهتر است به بررسی اجمالی آن دسته از توابع Pygame پرداخته شود که در این مقاله از آن‌ها استفاده شده است. این توابع Pygame به همراه شرح هر کدام در جدول زیر فهرست شده‌اند:

تابع شرح تابع
init()‎ راه‌اندازی اولیه تمام ماژول‌های ایمپورت شده پای‌گیم را انجام می‌دهد (تاپلی را بازمی‌گرداند که مشخص کننده موفقیت یا عدم موفقیت راه‌اندازی اولیه هر یکی از ماژول‌ها است).
display.set_mode()‎ برای ایجاد سطح (Surface)، یک تاپل یا لیست (با ترجیح تاپل) را به عنوان پارامتر خود دریافت می‌کند.
update()‎ صفحه را به‌روزرسانی می‌کند.
quit()‎ برای قطع راه‌اندازی همه چیز استفاده می‌شود.
set_caption()‎ متن عنوان در بالای صفحه نمایش را تنظیم می‌کند.
event.get()‎ لیستی از تمام رویدادها (Eventها) را بازمی‌گرداند.
Surface.fill()‎ سطح را با رنگی یکنواخت پُر می‌کند.
time.Clock()‎ به ردیابی زمان کمک می‌کند.
font.SysFont()‎ یک فونت Pygame را با استفاده از منابع فونت سیستم ایجاد خواهد کرد.

پس از نصب Pygame در گام بعدی ساخت بازی مار با پایتون باید صفحه بازی را ایجاد کرد. این کار در بخش بعد انجام شده است.

یک برنامه نویس نشسته پشت سیستم کامپیوتری در حال کدنویسی

۲. ایجاد صفحه برای ساخت بازی مار با پایتون

برای ایجاد صفحه با استفاده از Pygame، باید از تابع display.set_mode()‎ استفاده کرد. همچنین، لازم است متُدهای init()‎ و quit()‎ نیز برای راه‌اندازی اولیه و قطع اجرای (Uninitialize) همه چیز در آغاز و پایان کدها به کار گرفته شوند. متُد update()‎ برای به‌روزرسانی هر گونه تغییرات انجام شده در صفحه مورد استفاده قرار می‌گیرد.

یک متُد دیگر، یعنی flip()‎، هم وجود دارد که مشابه تابع update()‎ عمل می‌کند. تفاوتش این است که متُد update()‎ تنها تغییرات انجام شده را به‌روزرسانی می‌کند. البته، اگر هیچ پارامتری ارجاع داده نشده باشد، این متُد تمام صفحه را به‌روزرسانی خواهد کرد. اما، متُد flip()‎ همیشه کل صفحه را دوباره بارگذاری می کند.

import pygame
pygame.init()
dis=pygame.display.set_mode((400,300))
pygame.display.update()
pygame.quit()
quit()

خروجی کدهای فوق، صفحه‌ای خالی برای ساخت بازی مار با پایتون به صورت زیر است:

ایجاد صفحه برای ساخت بازی مار با پایتون

با اجرای کدهای بالا، صفحه بازی ظاهر خواهد شد اما این صفحه بلافاصله بسته می‌شود. برای رفع این مشکل، باید از یک حلقه بازی با While قبل از خروج از بازی استفاده کرد. این کار در کدهای زیر انجام شده است:

import pygame
pygame.init()
dis=pygame.display.set_mode((400,300))
pygame.display.update()
pygame.display.set_caption('Snake Game by Faradars')
game_over=False
while not game_over:
    for event in pygame.event.get():
        print(event)   #prints out all the actions that take place on the screen
 
pygame.quit()
quit()

با اجرای کدهای بالا، ملاحظه خواهد شد که صفحه ایجاد شده این بار بسته نمی‌شود و همچنین، تمام رخدادهایی (Event) را که روی آن اتفاق می‌افتند هم بازگردانده می‌شوند. این کار با استفاده از تابع event.get()‎ انجام شده است. همچنین در کدهای فوق با استفاده از تابع display.set_caption()‎، نام «Snake Game by Faradars» برای صفحه بازی انتخاب شده است. خروجی به صورت زیر خواهد بود:

Python Snake Game Project with Pygame 01

حالا صفحه‌ای برای بازی مار با پایتون ساخته شده است، اما وقتی قصد بستن صفحه با کلیک کردن دکمه ضربدر وجود داشته باشد، صفحه بسته نمی‌شود. این اتفاق به این دلیل رخ می‌دهد که کدهای لازم برای بستن صفحه هنگام کلیک خوردن دکمه ضربدر هنوز نوشته نشده‌اند. برای انجام این کار، رویدادی (Event) به نام «QUIT» در Pygame ارائه شده است که به صورت زیر باید از آن استفاده کرد:

import pygame
pygame.init()
dis=pygame.display.set_mode((400,300))
pygame.display.update()
pygame.display.set_caption('Snake game by Faradars')
game_over=False
while not game_over:
    for event in pygame.event.get():
        if event.type==pygame.QUIT:
            game_over=True
 
pygame.quit()
quit()

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

آموزش بازی سازی در پایتون با کتابخانه Pygame
فیلم آموزش بازی سازی در پایتون با کتابخانه Pygame در تم آف

کلیک کنید

۳. ایجاد مار در ساخت بازی مار با پایتون

برای ساخت مار ، ابتدا باید چند متغیر مربوط به رنگ را ایجاد و راه‌اندازی اولیه کرد؛ این متغیرها برای رنگ‌آمیزی مار، غذا، صفحه و سایر المان‌ها در بازی مورد استفاده قرار خواهند گرفت. قالب رنگی استفاده شده در Pygame قالب RGB یعنی «قرمز،سبز، آبی» است.

یک دستگاه نینتندو که یک مار از آن بیرون آمده است

در صورتی که تمام این رنگ‌ها صفر باشند، رنگ سیاه به دست خواهد آمد و اگر هر سه شاخص رنگ‌های قرمز، سبز و آبی مقدارشان ۲۵۵ باشد، رنگ سفید حاصل خواهد شد. مار ما در این آموزش ساخت بازی مار با پایتون به صورت مستطیلی خواهد بود. برای رسم مستطیل در Pygame، می‌توان از تابعی به نام draw.rect()‎ استفاده کرد. این تابع برای رسم مستطیل با رنگ و اندازه دلخواه به کار گرفته شده است.

import pygame
pygame.init()
dis=pygame.display.set_mode((400,300))
 
pygame.display.set_caption('Snake game by Faradars')
 
blue=(0,0,255)
red=(255,0,0)
 
game_over=False
while not game_over:
    for event in pygame.event.get():
        if event.type==pygame.QUIT:
            game_over=True
    pygame.draw.rect(dis,blue,[200,150,10,10])
    pygame.display.update()
pygame.quit()
quit()

خروجی کدهای فوق به صورت زیر است:

ایجاد مار در ساخت بازی مار با پایتون

همان‌طور که در تصویر خروجی فوق ملاحظه می‌شود، سر مار به صورت یک مربع آبی رنگ ساخته شده است. در گام بعدی باید مار را به حرکت در آورد.

آموزش پروژه محور پایتون – ساخت بازی Snake
فیلم آموزش پروژه محور پایتون – ساخت بازی Snake در تم آف

کلیک کنید

۴. حرکت دادن مار در ساخت بازی مار با پایتون

برای حرکت دادن مار، لازم است از رویدادهای کلید موجود در کلاس KEYDOWN ماژول‌های Pygame استفاده کرد. رویدادهایی که در اینجا از آن‌ها استفاده شده است، شامل موارد زیر می‌شوند:

  • K_UP
  • K_DOWN
  • K_LEFT
  • K_LEFT

رویدادهای فوق به ترتیب برای حرکت دادن مار در بازی به جهت‌های بالا، پایین، چپ و راست مورد استفاده قرار می‌گیرند. همچنین، صفحه نمایش در بازی با استفاده از متُد fill()‎ از رنگ پیش‌فرض یعنی مشکی به سفید تغییر رنگ داده شده است. متغیرهای جدیدی با نام‌های x1_change و y1_change نیز برای ذخیره مقادیر به‌روزرسانی شده مختصات x و y ایجاد شده‌اند:

import pygame
 
pygame.init()
 
white = (255, 255, 255)
black = (0, 0, 0)
red = (255, 0, 0)
 
dis = pygame.display.set_mode((800, 600))
pygame.display.set_caption('Snake Game by Faradars')
 
game_over = False
 
x1 = 300
y1 = 300
 
x1_change = 0       
y1_change = 0
 
clock = pygame.time.Clock()
 
while not game_over:
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            game_over = True
        if event.type == pygame.KEYDOWN:
            if event.key == pygame.K_LEFT:
                x1_change = -10
                y1_change = 0
            elif event.key == pygame.K_RIGHT:
                x1_change = 10
                y1_change = 0
            elif event.key == pygame.K_UP:
                y1_change = -10
                x1_change = 0
            elif event.key == pygame.K_DOWN:
                y1_change = 10
                x1_change = 0
 
    x1 += x1_change
    y1 += y1_change
    dis.fill(white)
    pygame.draw.rect(dis, black, [x1, y1, 10, 10])
 
    pygame.display.update()
 
    clock.tick(30)
 
pygame.quit()
quit()

خروجی کدهای فوق به صورت زیر است:

حرکت دادن مار در ساخت بازی مار با پایتون

در ادامه این مقاله به پیاده‌سازی وضعیت «Game Over» یا اتمام بازی (بازنده شدن) در ساخت بازی مار با پایتون پرداخته شده است. اما پیش از آن، دوره‌های آموزش پایتون تم آف به علاقه‌مندان معرفی شده‌اند تا آشنایی لازم با منابع تمرینی بیش‌تر برای ادامه یادگیری و تقویت مهارت به دست آید.

فیلم های آموزش پایتون تم آف

فیلم های آموزش برنامه نویسی پایتون تم آف

ساخت بازی مار با پایتون تنها یکی از پروژه‌های اولیه‌ای است که برای تمرین برنامه نویسی پایتون انجام می‌شود. این پروژه تنها مخصوص علاقه‌مندان به بازی‌سازی نیست و همه افرادی که مشغول یادگیری برنامه نویسی پایتون هستند می‌توانند از این پروژه برای تقویت مهارت خود استفاده کنند. در پلتفرم تم آف دوره‌های آموزش پایتون در قالب یک مجموعه گردآوری شده‌اند که علاقه‌مندان به برنامه نویسی پایتون می‌توانند برای شروع یادگیری از دوره‌های مقدماتی آن استفاده کنند. همچنین، چندین دوره آموزشی پروژه‌محور نیز در این مجموعه برای ادامه یادگیری و تقویت مهارت برنامه نویسی پایتون در دسترس قرار دارند. در تصویر فوق تنها برخی از دوره‌های آموزشی مجموعه آموزش پایتون تم آف ملاحظه می‌شوند.

  • برای دسترسی به همه آموزش های پایتون تم آف + اینجا کلیک کنید.

۵. کدنویسی حالت اتمام بازی در صورت برخورد مار با دیواره ها

در بازی مار، اگر بازیکن به دیواره‌های صفحه برخورد کند، بازنده خواهد شد. جهت پیاده‌سازی این حالت با پایتون در این مقاله آموزشی از یک گزاره if استفاده شده است. در این if بررسی می‌شود که محدوده‌های مختصات x و y برای مار از مختصات صفحه بازی کوچک‌تر باشند.

آموزش بازی سازی در پایتون با کتابخانه Pygame
فیلم آموزش بازی سازی در پایتون با کتابخانه Pygame در تم آف

کلیک کنید

همچنین، باید این مورد را هم مد نظر قرار داد که کدهای منبع (Hardcodeها) در اینجا حذف شده‌اند و به جای آن‌ها از چند متغیر استفاده شده است تا در صورت نیاز به ایجاد تغییراتی در بازی، بتوان این تغییرات را به آسانی در کدها انجام داد.

  • مقاله پیشنهادی از مجله تم آف برای مطالعه: دستورات شرطی در پایتون — به زبان ساده
import pygame
import time
pygame.init()
 
white = (255, 255, 255)
black = (0, 0, 0)
red = (255, 0, 0)
 
dis_width = 800
dis_height  = 600
dis = pygame.display.set_mode((dis_width, dis_width))
pygame.display.set_caption('Snake Game by Faradars')
 
game_over = False
 
x1 = dis_width/2
y1 = dis_height/2
 
snake_block=10
 
x1_change = 0
y1_change = 0
 
clock = pygame.time.Clock()
snake_speed=30
 
font_style = pygame.font.SysFont(None, 50)
 
def message(msg,color):
    mesg = font_style.render(msg, True, color)
    dis.blit(mesg, [dis_width/2, dis_height/2])
 
while not game_over:
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            game_over = True
        if event.type == pygame.KEYDOWN:
            if event.key == pygame.K_LEFT:
                x1_change = -snake_block
                y1_change = 0
            elif event.key == pygame.K_RIGHT:
                x1_change = snake_block
                y1_change = 0
            elif event.key == pygame.K_UP:
                y1_change = -snake_block
                x1_change = 0
            elif event.key == pygame.K_DOWN:
                y1_change = snake_block
                x1_change = 0
 
    if x1 >= dis_width or x1 = dis_height or y1 

در صورت برخورد مار به دیواره‌های صفحه، بازی تمام می‌شود و خروجی به صورت زیر خواهد بود:

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

حالا باید عملکرد مربوط به رشد مار و پیشرفت بازی (سخت‌تر شدن بازی) را توسعه داد. در بازی مار کلاسیک، با هدایت مار به سمت غذا و خوردن آن، طول مار افزایش می‌یابد. در بخش‌های بعدی آموزش ساخت بازی مار با پایتون به کدنویسی کارکردهای مربوط به غذا و رشد مار پرداخته شده است.

نمای نزدیک یک لپ تاپ با تم زرد و آبی

۶. قرار دادن غذا برای رشد مار در ساخت بازی مار با پایتون

در این بخش از آموزش ساخت بازی مار با پایتون ، غذا برای مار در صفحه بازی اضافه می‌شود و وقتی که مار غذا را می‌خورد، پیامی با عنوان «Yummy!!‎» (یعنی به‌به!!) در ترمینال نمایش داده خواهد شد. علاوه بر این، تغییر کوچک دیگری هم اعمال شده است که در آن گزینه‌هایی برای خروج از بازی یا شروع مجدد بازی در زمان بازنده شدن بازیکن لحاظ شده‌اند:

import pygame
import time
import random
 
pygame.init()
 
white = (255, 255, 255)
black = (0, 0, 0)
red = (255, 0, 0)
blue = (0, 0, 255)
 
dis_width = 800
dis_height = 600
 
dis = pygame.display.set_mode((dis_width, dis_height))
pygame.display.set_caption('Snake Game by Faradars')
 
clock = pygame.time.Clock()
 
snake_block = 10
snake_speed = 30
 
font_style = pygame.font.SysFont(None, 30)
 
 
def message(msg, color):
    mesg = font_style.render(msg, True, color)
    dis.blit(mesg, [dis_width/3, dis_height/3])
 
 
def gameLoop():  # creating a function
    game_over = False
    game_close = False
 
    x1 = dis_width / 2
    y1 = dis_height / 2
 
    x1_change = 0
    y1_change = 0
 
    foodx = round(random.randrange(0, dis_width - snake_block) / 10.0) * 10.0
    foody = round(random.randrange(0, dis_width - snake_block) / 10.0) * 10.0
 
    while not game_over:
 
        while game_close == True:
            dis.fill(white)
            message("You Lost! Press Q-Quit or C-Play Again", red)
            pygame.display.update()
 
            for event in pygame.event.get():
                if event.type == pygame.KEYDOWN:
                    if event.key == pygame.K_q:
                        game_over = True
                        game_close = False
                    if event.key == pygame.K_c:
                        gameLoop()
 
        for event in pygame.event.get():
            if event.type == pygame.QUIT:
                game_over = True
            if event.type == pygame.KEYDOWN:
                if event.key == pygame.K_LEFT:
                    x1_change = -snake_block
                    y1_change = 0
                elif event.key == pygame.K_RIGHT:
                    x1_change = snake_block
                    y1_change = 0
                elif event.key == pygame.K_UP:
                    y1_change = -snake_block
                    x1_change = 0
                elif event.key == pygame.K_DOWN:
                    y1_change = snake_block
                    x1_change = 0
 
        if x1 >= dis_width or x1 = dis_height or y1 

تصویر خروجی به صورت زیر است:

اضافه کردن غذا برای رشد مار در ساخت بازی مار با پایتون

همچنین در هنگام بازی و با خوردن غذا به وسیله مار، خروجی ترمینال چیزی شبیه به تصویر زیر خواهد بود:

اضافه کردن غذا برای رشد مار در ساخت بازی مار با پایتون

حال پس از اضافه کردن المان غذا در ساخت بازی مار با پایتون ، نوبت به پیاده‌سازی قابلیت افزایش طول مار با خوردن غذا فرا رسیده است. کدهای مربوط به این کارکرد در بخش بعدی ارائه شده‌اند.

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

کلیک کنید

۷. افزایش طول مار در ساخت بازی مار با پایتون

کدهایی که در ادامه این بخش از آموزش ساخت بازی مار با پایتون آمده‌اند، برای افزایش اندازه مار در زمانی هستند که مار غذا می‌خورد. علاوه بر این، اگر مار با بدن خودش برخورد کند، بازی تمام می‌شود و کاربر پیامی حاوی متن زیر را دریافت خواهد کرد:

  • You Lost! Press Q-Quit or C-Play Again (یعنی: شما باختید، برای خروج کلید Q و برای شروع دوباره، کلید C را بزنید)

طول مار اساساً در داخل یک لیست پایتون قرار گرفته و اندازه اولیه‌ای که در کدهای زیر تعیین شده، یک بلوک است:

import pygame
import time
import random
 
pygame.init()
 
white = (255, 255, 255)
yellow = (255, 255, 102)
black = (0, 0, 0)
red = (213, 50, 80)
green = (0, 255, 0)
blue = (50, 153, 213)
 
dis_width = 600
dis_height = 400
 
dis = pygame.display.set_mode((dis_width, dis_height))
pygame.display.set_caption('Snake Game by Faradars')
 
clock = pygame.time.Clock()
 
snake_block = 10
snake_speed = 15
 
font_style = pygame.font.SysFont("bahnschrift", 25)
score_font = pygame.font.SysFont("comicsansms", 35)
 
def our_snake(snake_block, snake_list):
    for x in snake_list:
        pygame.draw.rect(dis, black, [x[0], x[1], snake_block, snake_block])
 
 
def message(msg, color):
    mesg = font_style.render(msg, True, color)
    dis.blit(mesg, [dis_width / 6, dis_height / 3])
 
 
def gameLoop():
    game_over = False
    game_close = False
 
    x1 = dis_width / 2
    y1 = dis_height / 2
 
    x1_change = 0
    y1_change = 0
 
    snake_List = []
    Length_of_snake = 1
 
    foodx = round(random.randrange(0, dis_width - snake_block) / 10.0) * 10.0
    foody = round(random.randrange(0, dis_height - snake_block) / 10.0) * 10.0
 
    while not game_over:
 
        while game_close == True:
            dis.fill(blue)
            message("You Lost! Press C-Play Again or Q-Quit", red)
 
            pygame.display.update()
 
            for event in pygame.event.get():
                if event.type == pygame.KEYDOWN:
                    if event.key == pygame.K_q:
                        game_over = True
                        game_close = False
                    if event.key == pygame.K_c:
                        gameLoop()
 
        for event in pygame.event.get():
            if event.type == pygame.QUIT:
                game_over = True
            if event.type == pygame.KEYDOWN:
                if event.key == pygame.K_LEFT:
                    x1_change = -snake_block
                    y1_change = 0
                elif event.key == pygame.K_RIGHT:
                    x1_change = snake_block
                    y1_change = 0
                elif event.key == pygame.K_UP:
                    y1_change = -snake_block
                    x1_change = 0
                elif event.key == pygame.K_DOWN:
                    y1_change = snake_block
                    x1_change = 0
 
        if x1 >= dis_width or x1 = dis_height or y1  Length_of_snake:
            del snake_List[0]
 
        for x in snake_List[:-1]:
            if x == snake_Head:
                game_close = True
 
        our_snake(snake_block, snake_List)
 
 
        pygame.display.update()
 
        if x1 == foodx and y1 == foody:
            foodx = round(random.randrange(0, dis_width - snake_block) / 10.0) * 10.0
            foody = round(random.randrange(0, dis_height - snake_block) / 10.0) * 10.0
            Length_of_snake += 1
 
        clock.tick(snake_speed)
 
    pygame.quit()
    quit()
 
gameLoop()

برای درک بهتر خروجی آنچه در کدهای فوق انجام شده در ادامه به صورت تصویر متحرک نشان داده شده است:

افزایش طول مار در ساخت بازی مار با پایتون

در ادامه به گام هشتم و آخرین گام ساخت بازی مار با پایتون یعنی پیاده‌سازی عملکرد نمایش امتیاز بازیکن روی صفحه بازی پرداخته شده است.

تصویر یک مار در صفحه یک موبایل و یک مار در اطراف موبایل

۸. نمایش امتیاز بازیکن در ساخت بازی مار با پایتون

آخرین اما نه کم اهمیت‌ترین گام در ساخت بازی مار با پایتون ، نمایش امتیاز بازیکن در صفحه است. برای انجام این کار، باید یک تابع جدید مثلاً با نام «Your_score» ایجاد شود. این تابع طول مار منهای یک را نمایش خواهد داد؛ علت اینکه به مقدار یک از طول مار کم می‌شود این است که طول اولیه مار در هنگام شروع بازی یک است.

import pygame
import time
import random
 
pygame.init()
 
white = (255, 255, 255)
yellow = (255, 255, 102)
black = (0, 0, 0)
red = (213, 50, 80)
green = (0, 255, 0)
blue = (50, 153, 213)
 
dis_width = 600
dis_height = 400
 
dis = pygame.display.set_mode((dis_width, dis_height))
pygame.display.set_caption('Snake Game by Faradars')
 
clock = pygame.time.Clock()
 
snake_block = 10
snake_speed = 15
 
font_style = pygame.font.SysFont("bahnschrift", 25)
score_font = pygame.font.SysFont("comicsansms", 35)
 
 
def Your_score(score):
    value = score_font.render("Your Score: " + str(score), True, yellow)
    dis.blit(value, [0, 0])
 
 
 
def our_snake(snake_block, snake_list):
    for x in snake_list:
        pygame.draw.rect(dis, black, [x[0], x[1], snake_block, snake_block])
 
 
def message(msg, color):
    mesg = font_style.render(msg, True, color)
    dis.blit(mesg, [dis_width / 6, dis_height / 3])
 
 
def gameLoop():
    game_over = False
    game_close = False
 
    x1 = dis_width / 2
    y1 = dis_height / 2
 
    x1_change = 0
    y1_change = 0
 
    snake_List = []
    Length_of_snake = 1
 
    foodx = round(random.randrange(0, dis_width - snake_block) / 10.0) * 10.0
    foody = round(random.randrange(0, dis_height - snake_block) / 10.0) * 10.0
 
    while not game_over:
 
        while game_close == True:
            dis.fill(blue)
            message("You Lost! Press C-Play Again or Q-Quit", red)
            Your_score(Length_of_snake - 1)
            pygame.display.update()
 
            for event in pygame.event.get():
                if event.type == pygame.KEYDOWN:
                    if event.key == pygame.K_q:
                        game_over = True
                        game_close = False
                    if event.key == pygame.K_c:
                        gameLoop()
 
        for event in pygame.event.get():
            if event.type == pygame.QUIT:
                game_over = True
            if event.type == pygame.KEYDOWN:
                if event.key == pygame.K_LEFT:
                    x1_change = -snake_block
                    y1_change = 0
                elif event.key == pygame.K_RIGHT:
                    x1_change = snake_block
                    y1_change = 0
                elif event.key == pygame.K_UP:
                    y1_change = -snake_block
                    x1_change = 0
                elif event.key == pygame.K_DOWN:
                    y1_change = snake_block
                    x1_change = 0
 
        if x1 >= dis_width or x1 = dis_height or y1  Length_of_snake:
            del snake_List[0]
 
        for x in snake_List[:-1]:
            if x == snake_Head:
                game_close = True
 
        our_snake(snake_block, snake_List)
        Your_score(Length_of_snake - 1)
 
        pygame.display.update()
 
        if x1 == foodx and y1 == foody:
            foodx = round(random.randrange(0, dis_width - snake_block) / 10.0) * 10.0
            foody = round(random.randrange(0, dis_height - snake_block) / 10.0) * 10.0
            Length_of_snake += 1
 
        clock.tick(snake_speed)
 
    pygame.quit()
    quit()
 
gameLoop()

تصویر خروجی پیاده‌سازی عملکرد نمایش امتیاز بازیکن روی صفحه در ادامه آمده است:

نمایش امتیاز بازیکن در ساخت بازی مار با پایتون

به این ترتیب به انتهای آموزش ساخت بازی مار با پایتون رسیده‌ایم. امید است این مقاله آموزشی واضح و قابل فهم بوده باشد. در انتها به برخی از سوالات رایج پیرامون ساخت بازی مار در پایتون پاسخ داده شده است.

آموزش پروژه محور اندروید استودیو – ساخت بازی Snake
فیلم آموزش پروژه محور اندروید استودیو – ساخت بازی Snake در تم آف

کلیک کنید

سوالات رایج ساخت بازی مار با پایتون

در این بخش با هدف راهنمایی افرادی که به دنبال یادگیری نحوه ساخت بازی مار با پایتون هستند، به ارائه پاسخ به برخی از سوالات رایج پیرامون این موضوع پرداخته شده است.

ساخت بازی مار با پایتون چگونه انجام می‌شود؟

به‌طور کلی مراحل ساخت یک بازی مار ساده با پایتون را می‌توان به ۸ گام مختلف دسته‌بندی کرد. ابتدا باید مجموعه ماژول‌های مخصوص بازی برای پایتون یعنی Pygame را نصب کرد. سپس صفحه بازی ایجاد می‌شود و بعد هم باید مار را ساخت. در ادامه نیز حرکت دادن مار پیاده‌سازی می شود. پس از آن هم لازم است کدهای مربوط به اتمام بازی در صورت برخورد مار با دیواره صفحه نوشته شوند. سپس غذا برای پیشرفت بازی و بزرگ‌تر شدن مار اضافه می‌شود. در انتها هم باید ساز و کار افزودن طول مار با خوردن غذا و در نهایت، کدنویسی نمایش امتیاز را انجام داد.

آیا من هم می‌توانم ساخت بازی مار با پایتون را انجام دهم؟

بازی مار یکی از محبوب‌ترین بازی‌های Arcade در تمام دوران به حساب می‌آید. ساخت بازی مار با پایتون به عنوان یک چالش در حین یادگیری برنامه نویسی پایتون و آموزش ساخت بازی در پایتون با Pygame انجام می‌شود. تلاش برای پیاده‌سازی این پروژه تمرینی می‌تواند تا حد زیادی به یادگیری پایتون و تقویت مهارت برنامه نویسی با این زبان کمک کند و افراد می‌توانند از منابع آموزشی مرتبط برای یادگیری نحوه ساخت بازی مار با پایتون کمک بگیرند.

آموزش پروژه محور پایتون – ساخت بازی Snake
فیلم آموزش پروژه محور پایتون – ساخت بازی Snake در تم آف

کلیک کنید

نصب Pygame‌ پایتون در ویندوز به چه صورت است؟

نصب Pygame‌ در پایتون را می‌توان به چهار گام تقسیم کرد. در مرحله اول بررسی می‌شود که خود پایتون حتماً روی سیستم نصب شده باشد. سپس باید بررسی کرد که PIP هم نصب باشد. در مرحله سوم نوبت به نصب Pygame فرا می‌رسد. در آخر هم باید بررسی کرد که آیا Pygame به درستی کار می‌کند یا خیر؟

ماژول Pygame‌ در پایتون چیست؟

کتابخانه Pygame مجموعه‌ای از ماژول‌های پایتون به حساب می‌آید که برای ساخت بازی‌های کامپیوتری مورد استفاده قرار می‌گیرد. Pygame قابلیت‌های عملکردی افزوده‌ای را برای ساخت بازی با پایتون به کتابخانه بی‌نظیر SDL اضافه می‌کند. Pygame برای برنامه نویسان این امکان را فراهم می‌سازد تا بتوانند بازی‌هایی را با قابلیت‌های جامع بسازند. Pygame‌ به میزان زیادی جابجاپذیر است و می‌توان آن را تقریباً روی هر پلتفرم و سیستم عاملی اجرا کرد.

آموزش بازی سازی در پایتون با کتابخانه Pygame
فیلم آموزش بازی سازی در پایتون با کتابخانه Pygame در تم آف

کلیک کنید

جمع‌بندی

در یادگیری پایتون باید اطمینان حاصل کرد که تا جای امکان تمرین‌ها و پروژه‌های عملی انجام شوند تا بتوان تجربه لازم را کسب کرد و مهارت برنامه نویسی پایتون را در سطح یک فرد حرفه‌ای و متخصص به دست آورد. به همین دلیل در این مقاله از مجله تم آف آموزش ساخت بازی مار با پایتون ارائه شده است. استفاده از این مقاله خصوصاً برای افرادی مناسب است که قصد فعالیت در زمینه ساخت بازی با پایتون را دارند. در صورتی که سوالی پیرامون این مقاله وجود دارد، مخاطبان می‌توانند آن را از طریق بخش نظرها درمیان بگذارند. در آینده مقاله‌های آموزشی پروژه‌محور بیش‌تری برای پایتون و سایر زبان‌های برنامه نویسی در مجله تم آف ارائه خواهند شد.

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.