پایتون, طراحی سایت و برنامه نویسی, مقالات

کد آماده بازی مار (snake) در پایتون

کد آماده بازی مار (snake) در پایتون

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

 

 

۱. نصب 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 در گام بعدی ساخت بازی مار با پایتون باید صفحه بازی را ایجاد کرد. این کار در بخش بعد انجام شده است.

 

 

import pygame
import random

pygame.init()


white = (255, 255, 255)
red = (255, 0, 0)
black = (0, 0, 0)


screen_width = 900
screen_height = 600
gameWindow = pygame.display.set_mode((screen_width, screen_height))


pygame.display.set_caption("Snake (آموزشگاه راهکار - 04135574231)")
pygame.display.update()
clock = pygame.time.Clock()
font = pygame.font.SysFont(None, 55)

def text_screen(text, color, x, y):
    screen_text = font.render(text, True, color)
    gameWindow.blit(screen_text, [x,y])


def plot_snake(gameWindow, color, snk_list, snake_size):
    for x,y in snk_list:
        pygame.draw.rect(gameWindow, color, [x, y, snake_size, snake_size])


def gameloop():
    exit_game = False
    game_over = False
    snake_x = 45
    snake_y = 55
    velocity_x = 0
    velocity_y = 0
    snk_list = []
    snk_length = 1

    food_x = random.randint(20, screen_width-20)
    food_y = random.randint(60, screen_height -20)
    score = 0
    init_velocity = 4
    snake_size = 30
    fps = 60 
    while not exit_game:
        if game_over:
            gameWindow.fill(white)
            text_screen("Game Over! Press Enter To Continue", red, 100, 250)

            for event in pygame.event.get():
                if event.type == pygame.QUIT:
                    exit_game = True

                if event.type == pygame.KEYDOWN:
                    if event.key == pygame.K_RETURN:
                        gameloop()

        else:

            for event in pygame.event.get():
                if event.type == pygame.QUIT:
                    exit_game = True

                if event.type == pygame.KEYDOWN:
                    if event.key == pygame.K_RIGHT:
                        velocity_x = init_velocity
                        velocity_y = 0

                    if event.key == pygame.K_LEFT:
                        velocity_x = - init_velocity
                        velocity_y = 0

                    if event.key == pygame.K_UP:
                        velocity_y = - init_velocity
                        velocity_x = 0

                    if event.key == pygame.K_DOWN:
                        velocity_y = init_velocity
                        velocity_x = 0

            snake_x = snake_x + velocity_x
            snake_y = snake_y + velocity_y

            if abs(snake_x - food_x)<10 and abs(snake_y - food_y)<10:
                score +=1
                food_x = random.randint(20, screen_width - 30)
                food_y = random.randint(60, screen_height - 30)
                snk_length +=5

            gameWindow.fill(white)
            text_screen("Score: " + str(score * 10), red, 5, 5)
            pygame.draw.rect(gameWindow, red, [food_x, food_y, snake_size, snake_size])
            pygame.draw.line(gameWindow, red, (0,40), (900,40),5)

            head = []
            head.append(snake_x)
            head.append(snake_y)
            snk_list.append(head)

            if len(snk_list)>snk_length:
                del snk_list[0]

            if head in snk_list[:-1]:
                game_over = True

            if snake_x<0 or snake_x>screen_width-20 or snake_y<50 or snake_y>screen_height-20:
                game_over = True
            plot_snake(gameWindow, black, snk_list, snake_size)
        pygame.display.update()
        clock.tick(fps)
    pygame.quit()
    quit()
gameloop()

جمع‌بندی

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

 

 

کد آماده بازی مار (snake) در پایتون کد آماده بازی مار (snake) در پایتون کد آماده بازی مار (snake) در پایتون

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

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