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

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

بازی مار چطور کار می کنه؟

در این بازی بازیکن باید یک مار رو هدایت کنه تا امتیاز جمع کنه. هر وقت مار یک “غذا” رو می خوره بزرگ تر می شه و امتیاز شما بالاتر می ره. اما مواظب باشید! اگر مار با دیواره یا خودش برخورد کنه بازی تموم می شه.

ابزار و کتابخانه های موردنیاز

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

نصب Pygame

قبل از شروع باید کتابخانه ی Pygame رو نصب کنید. این کار رو با استفاده از دستور زیر انجام بدید :

bash

Copy code

pip install pygame

مراحل ساخت بازی مار

ایجاد صفحه بازی

اول از همه باید صفحه ای که بازی توش انجام می شه رو تعریف کنیم.

python

Copy code

import pygame

import random

 

# تنظیمات اولیه

pygame.init()

width, height = ۶۰۰, ۴۰۰

screen = pygame.display.set_mode((width, height))

pygame.display.set_caption(‘بازی مار با پایتون’)

در این کد صفحه ای به ابعاد ۶۰۰x۴۰۰ پیکسل ایجاد کردیم و عنوان بازی رو هم گذاشتیم.

تعریف رنگ ها و سرعت بازی

برای اینکه بازی رنگارنگ تر بشه چند رنگ مختلف تعریف می کنیم :

python

Copy code

white = (۲۵۵, ۲۵۵, ۲۵۵)

black = (۰, ۰, ۰)

red = (۲۱۳, ۵۰, ۸۰)

green = (۰, ۲۵۵, ۰)

blue = (۵۰, ۱۵۳, ۲۱۳)

و حالا سرعت بازی رو تنظیم می کنیم :

python

Copy code

clock = pygame.time.Clock()

snake_speed = ۱۵

توجه : عدد ۱۵ سرعت اولیه بازی رو تنظیم می کنه. می تونید بسته به مهارت خودتون این عدد رو تغییر بدید.

تعریف مار و غذا

در این بخش متغیرهایی برای تعیین طول مار و مختصات ابتدایی مار و غذا تعریف می کنیم.

python

Copy code

snake_block = ۱۰

snake_list = []

snake_length = ۱

snake_block اندازه ی هر بلوک بدن مار رو تعیین می کنه. snake_list لیستی هست که موقعیت بدن مار رو در خودش ذخیره می کنه و snake_length طول مار رو نگه می داره.

نمایش مار

برای اینکه مار روی صفحه نمایش داده بشه تابعی تعریف می کنیم که مختصات بدن مار رو در snake_list رسم می کنه.

python

Copy code

def draw_snake(snake_block, snake_list) :

 for x in snake_list :

  pygame.draw.rect(screen, black, [x[۰], x[۱], snake_block, snake_block])

در این تابع با استفاده از pygame.draw.rect مستطیل هایی برای هر قسمت از بدن مار رسم می کنیم.

ایجاد غذای مار

غذا در بازی ما به صورت تصادفی ظاهر می شه. برای این کار تابع random.randint مختصات جدیدی برای غذا تعیین می کنه :

python

Copy code

food_x = round(random.randrange(۰, width – snake_block) / ۱۰.۰) * ۱۰.۰

food_y = round(random.randrange(۰, height – snake_block) / ۱۰.۰) * ۱۰.۰

اضافه کردن کنترل های حرکت مار

با استفاده از کلیدهای جهت روی کیبورد می تونید مار رو حرکت بدید. به این ترتیب کد زیر رو اضافه کنید تا حرکت مار کنترل بشه.

python

Copy code

x۱, y۱ = width // ۲, height // ۲

x۱_change, y۱_change = ۰, ۰

 

for event in pygame.event.get() :

 if event.type == pygame.KEYDOWN :

  if event.key == pygame.K_LEFT :

   x۱_change = -snake_block

   y۱_change = ۰

  elif event.key == pygame.K_RIGHT :

   x۱_change = snake_block

   y۱_change = ۰

  elif event.key == pygame.K_UP :

   y۱_change = -snake_block

   x۱_change = ۰

  elif event.key == pygame.K_DOWN :

   y۱_change = snake_block

   x۱_change = ۰

در اینجا هر کلید جهت تغییرات x و y رو تنظیم می کنه به طوری که مار در جهت موردنظر حرکت کنه.

اضافه کردن امتیاز

حالا باید به ازای هر غذایی که مار می خوره به طولش اضافه بشه و امتیاز بگیره.

python

Copy code

if x۱ == food_x and y۱ == food_y :

 food_x = round(random.randrange(۰, width – snake_block) / ۱۰.۰) * ۱۰.۰

 food_y = round(random.randrange(۰, height – snake_block) / ۱۰.۰) * ۱۰.۰

 snake_length += ۱

پایان بازی

در صورتی که مار با دیواره ها یا خودش برخورد کنه بازی باید متوقف بشه. با اضافه کردن کد زیر این شرط ها رو بررسی می کنیم :

python

Copy code

if x۱ >= width or x۱ < ۰ or y۱ >= height or y۱ < ۰ :

 game_over = True

 

for block in snake_list[ : -۱] :

 if block == [x۱, y۱] :

  game_over = True

جمع بندی

این بازی ساده و سرگرم کننده رو می تونید با تغییراتی مثل اضافه کردن رنگ های بیشتر یا بالا بردن سرعت هیجان انگیزتر کنید. امیدوارم از این آموزش لذت برده باشید و تجربیاتتون رو با ما به اشتراک بذارید!

پرسش های متداول

۱. چطور سرعت بازی رو تغییر بدم؟
کافیه مقدار snake_speed رو به عدد بالاتری تغییر بدید تا بازی سریع تر بشه.

۲. چطور می تونم صفحه ی بازی رو بزرگ تر کنم؟
اندازه ی width و height رو در کد اول تغییر بدید تا صفحه ی بازی بزرگ تر بشه.

۳. آیا می تونم از تصاویری به جای اشکال استفاده کنم؟
بله با استفاده از pygame.image.load() می تونید تصاویر مختلف رو در بازی بارگذاری کنید.

دکمه بازگشت به بالا