بیشتر بچهها برنامهنویسی را برای ساختن بازی شروع میکنند، ولی بیشتر آموزشها با تعریف متغیر و نوع داده شروع میشوند و همانجا انگیزه از بین میرود. این مقاله برعکس است: از همان اول بازی میسازیم و مفاهیم را وسط ساختن یاد میگیریم.
سه بازی از ساده به سخت: یک مسابقهی سوال و جواب، یک بازی با لاکپشت که با کیبورد کنترل میشود، و قدم اول بازیسازی واقعی با کتابخانهی pygame. دو بازی اول به هیچ نصب اضافهای نیاز ندارند.
قبل از شروع
- پایتون ۳ را از python.org نصب کنید. برای نوجوانان، محیط Thonny سادهترین شروع است.
- اگر هنوز با print و input و if آشنا نیستید، اول تمرینهای پایتون کلاس هفتم را حل کنید؛ یک یا دو جلسه بیشتر طول نمیکشد.
- کدها را خودتان تایپ کنید، کپی نکنید. تایپ کردن و گرفتن خطا بخشی از یاد گرفتن است.
بازی ۱: مسابقهی سوال و جواب
چه یاد میگیرید: لیست، حلقه، شرط و نگه داشتن امتیاز.
questions = [
("What is 7 x 8?", "56"),
("Capital of Iran?", "tehran"),
("How many legs does a spider have?", "8"),
]
score = 0
for question, answer in questions:
reply = input(question + " ")
if reply.strip().lower() == answer:
print("Correct!")
score = score + 1
else:
print("Wrong. The answer was", answer)
print("Your score:", score, "out of", len(questions))
سوالها در یک لیست ذخیره شدهاند و حلقه یکییکی آنها را میپرسد. strip فاصلههای اضافه را پاک میکند و lower جواب را کوچک میکند تا Tehran و tehran هر دو درست حساب شوند.
چالش شما: ده سوال از درسهای مدرسه اضافه کنید و در آخر بر اساس امتیاز پیام متفاوتی چاپ کنید؛ مثلاً اگر همه را درست جواب داد بنویسد «قهرمان!».
بازی ۲: لاکپشت گرسنه
چه یاد میگیرید: گرافیک، کنترل با کیبورد، تابع و عدد تصادفی.
یک لاکپشت که با کلیدهای جهت حرکت میکند و باید به غذایی برسد که هر بار جای تصادفی ظاهر میشود. ماژول turtle همراه خود پایتون نصب است.
import turtle
import random
screen = turtle.Screen()
screen.title("Hungry Turtle")
player = turtle.Turtle()
player.shape("turtle")
player.color("green")
player.penup()
food = turtle.Turtle()
food.shape("circle")
food.color("red")
food.penup()
food.goto(random.randint(-200, 200), random.randint(-200, 200))
score = 0
def check_food():
global score
if player.distance(food) < 20:
score = score + 1
print("Score:", score)
food.goto(random.randint(-200, 200), random.randint(-200, 200))
def up():
player.setheading(90)
player.forward(20)
check_food()
def down():
player.setheading(270)
player.forward(20)
check_food()
def left():
player.setheading(180)
player.forward(20)
check_food()
def right():
player.setheading(0)
player.forward(20)
check_food()
screen.onkey(up, "Up")
screen.onkey(down, "Down")
screen.onkey(left, "Left")
screen.onkey(right, "Right")
screen.listen()
turtle.done()
هر کلید جهت به یک تابع وصل شده است. تابع check_food فاصلهی لاکپشت تا غذا را میسنجد و اگر کمتر از ۲۰ بود، امتیاز میدهد و غذا را جای دیگری میبرد. بعد از اجرا، روی پنجرهی بازی کلیک کنید تا کلیدها کار کنند.
چالش شما: یک دشمن دوم اضافه کنید که اگر لاکپشت به آن خورد بازی تمام شود، یا کاری کنید لاکپشت با هر غذا کمی سریعتر شود.
بازی ۳: قدم اول با pygame
چه یاد میگیرید: حلقهی بازی، رویدادها و رسم کردن در هر فریم؛ همان ساختاری که بازیهای واقعی دارند.
pygame محبوبترین کتابخانهی بازیسازی دوبعدی با پایتون است. اول نصبش کنید:
pip install pygame
برنامهی زیر یک پنجره باز میکند که در آن یک سکوی زرد با کلیدهای چپ و راست حرکت میکند:
import pygame
pygame.init()
screen = pygame.display.set_mode((600, 400))
pygame.display.set_caption("My First Game")
clock = pygame.time.Clock()
x = 275
running = True
while running:
for event in pygame.event.get():
if event.type == pygame.QUIT:
running = False
keys = pygame.key.get_pressed()
if keys[pygame.K_LEFT] and x > 0:
x = x - 6
if keys[pygame.K_RIGHT] and x < 550:
x = x + 6
screen.fill((20, 20, 50))
pygame.draw.rect(screen, (255, 200, 0), (x, 360, 50, 15))
pygame.display.flip()
clock.tick(60)
pygame.quit()
مهمترین مفهوم اینجا حلقهی بازی است: برنامه در هر ثانیه ۶۰ بار سه کار را تکرار میکند: رویدادها را میخواند (مثل بستن پنجره)، وضعیت را بهروز میکند (جای سکو) و صفحه را از نو میکشد. همهی بازیهای کامپیوتری، از ساده تا پیچیده، روی همین ساختار ساخته شدهاند.
چالش شما: یک توپ اضافه کنید که از بالا بیفتد و اگر سکو آن را گرفت امتیاز بگیرید. این قدم اول ساختن بازی «گرفتن» است.
بعد از این سه بازی
- بازی خودتان را طراحی کنید: ایده را روی کاغذ بکشید و به قدمهای کوچک بشکنید؛ اول شخصیت حرکت کند، بعد دشمن، بعد امتیاز.
- صدا و تصویر اضافه کنید: pygame میتواند عکس و صدا را بارگذاری کند.
- بازی را به دوستانتان بدهید تا امتحان کنند. بازخورد دیگران بهترین راه بهتر کردن بازی است.
سوالات رایج
«برای ساخت بازی، پایتون بهتر است یا اسکرچ؟»
برای کودکان زیر ۱۰ سال اسکرچ؛ ساخت بازی با آن سریعتر است و خطای تایپی ندارد. برای نوجوانان پایتون، چون سقف پیشرفتش خیلی بالاتر است. مقایسهی کامل اسکرچ و پایتون را ببینید.
«با پایتون میشود بازیهای حرفهای ساخت؟»
بازیهای دوبعدی و مستقل بله. بازیهای سهبعدی بزرگ معمولاً با موتورهایی مثل Unity یا Unreal و زبانهای دیگر ساخته میشوند، ولی منطق برنامهنویسی که در پایتون یاد میگیرید، همانجا هم به کار میآید.
«برای بازیسازی باید ریاضی قوی باشم؟»
برای شروع نه. مختصات و جمع و تفریق کافی است. هر چه بازی پیچیدهتر شود، ریاضی بیشتری لازم میشود و خیلی از بچهها ریاضی را اولین بار با بازیسازی دوست دارند.
جمعبندی
بازیسازی بهترین دلیل برای یاد گرفتن برنامهنویسی است: هر مفهوم تازه، یک قابلیت تازه برای بازی شماست. با همین سه بازی، لیست، حلقه، شرط، تابع، گرافیک و حلقهی بازی را تمرین کردهاید.
اگر میخواهید این مسیر را با مربی، پروژههای بیشتر و بازخورد روی کدتان ادامه دهید، دورهی پایتون کودکان و نوجوانان داناورس از اولین دستور تا ساخت بازی و شکلهای گرافیکی را پروژهمحور پیش میبرد. برای والدین هم راهنمای آموزش پایتون برای کودکان توضیح میدهد چطور کمک کنند.




