آموزش ساخت بازی مار با پایتون
بازی مار یکی از بازی های ساده و سرگرم کننده است که میشه با کمی کدنویسی در پایتون ساخته بشه. این مقاله به شما یاد میده چطور این بازی رو مرحله به مرحله پیاده کنید. اگر این توضیحات بر ای شما کافی نیست؛ به آموزش پایتون بخش بازی مار مراجعه نمایید.
بازی مار چطور کار می کنه؟
در این بازی بازیکن باید یک مار رو هدایت کنه تا امتیاز جمع کنه. هر وقت مار یک “غذا” رو می خوره بزرگ تر می شه و امتیاز شما بالاتر می ره. اما مواظب باشید! اگر مار با دیواره یا خودش برخورد کنه بازی تموم می شه.
ابزار و کتابخانه های موردنیاز
برای ساخت این بازی با پایتون از کتابخانه ی 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() می تونید تصاویر مختلف رو در بازی بارگذاری کنید.