بازی snake در c++

حتما با بازی معروف snake یا بازی مار آشنا هستید. در این آموزش بهتون یاد میدم که چطور بازی snake در سی پلاس پلاس رو پیاده سازی کنید.

مگه میشه با c++ بازی پیاده سازی کرد؟

اگه تا الان سی پلاس پلاس رو در حد دانشگاه و محیط کنسول کار کردید شاید براتون عجیب باشه که با سی پلاس پلاس بشه بازی پیاده سازی کرد. باید بگم که درسته یادگیری سی پلاس پلاس به نسبت زبانهای دیگه کمی سخت تره ولی به هیچ وجه نمیشه قدرت این زبان رو در ساخت بازی ، نرم افزارهای سیستمی و … منکر شد و میشه گفت یکی از قدرتمندترین زبانهای برنامه نویسی در ساخت بازیه.
البته که می تو این پست میخواهیم بازی snake رو در محیط کنسول درست کنیم ولی اصول و قواعدی که به کار میبریم میتونه شروع خوبی باشه برای این که یک ذهنیت درست نسبت به بازیسازی در برنامه نویسی پیدا کنیم.
من در کانال یوتیوبم این بازی رو در 3 قسمت کوتاه ولی کامل آموزش دادم که پیشنهاد میکنم بعد از خوندن این پست، آموزش ویدیویی این پست رو هم ببینید.
بازی snake در c++

منطق پیاده سازی بازی

برای اینکه بتونیم این بازی رو پیاده سازی کنیم اول باید منطق نوشتن بازی رو درک کنیم. همه فیلمها و انیمیشنهایی که ما میبینیم از کنار هم قرار گرفتن یه سری فریم درست شدن و وقتی فریمها پشت سر هم به نمایش در میاد چشم ما حرکت بازیگر یا کاراکتر فیلم رو میتونه ببینه. در بازی snake هم همینجوریه. خیلی ساده به قضیه نگاه کنیم. توی ذهنتون تصور کنید که مار ما در وسط صفحه قرار داره (مثلا x =10 و y=10) چیزی که الان تو ذهنتون تصور کردید میشه فریم 1. حالا تو فریم 2 مار رو به اندازه یه واحد بیارید سمت راست. تو فریم 3 مار رو یه واحد دیگه بیارید سمت راست….

حالا اگه این فریمها رو پشت سر هم تو ذهنتون پخش کنید حرکت مار رو میتونید تصور کنید. پس ما در برناممون یه تابعی نیاز داریم که برامون فریمها رو رسم کنه. اسمش رو میذاریم: draw
دیگه چی میخواهیم؟ یه تابعی که بیاد منطق بازی رو کنترل کنه. که مثلا اگه مار به میوه خورد یکی به طولش اضافه بشه. مار با خودش برخورد کرد بازی تموم شه… اسم این تابع رو میذاریم logic
یه تابع دیگه هم میخواهیم که ورودی کاربر رو کنترل کنه. تو این بازی میخواهیم کاری کنیم که اگه کاربر w رو زد مار بره سمت بالا، اگه s رو زد مار بره سمت پایین و با a و d هم مار رو به سمت چپ و راست هدایت میکنیم. این دستورات رو در تابعی به اسم input انجام میدیم.
در کنار همه این توابع ما به تابعی نیاز داریم که اول بازی مقداردهی اولیه کنه. مثلا امتیاز رو برابر صفر قرار بده، جای اولیه مار و میوه رو مشخص کنه… این دستورات رو در تابعی به اسم setup انجام میدیم
 
پس چی شد؟ ما به این 4 تابع نیاز داریم و این 4 تا تابع رو باید پیاده کنیم
void setup(){
    
}

void draw(){ 

}

void input(){ 

}

void logic(){ 

} 

من اگه بخوام پیاده سازی این بازی رو به صورت کامل بهتون آموزش بدم این پست خیلی طولانی میشه . پیشنهاد میکنم قسمت اول آموزش ساخت بازی snake در سی پلاس پلاس رو در ویدیوی یوتیوبم ببینید:

چه جوری بازیمون رو قشنگ تر کنیم؟

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

1- به بازیتون صدا اضافه کنید.

توی محیط کنسول سی پلاس پلاس نمیتونید آهنگی یا صدایی که دوست دارید پخش کنید ولی میشه کدی بنویسید که کامپیوترتون صدای Beep بده! تو گوگل سرچ کنید Beep in C plus plus

2- به بازیتون Timer اضافه کنید

بازی بدون تایمر یه چیزیش کمه! برای اینکه بتونید تایمر به بازیتون اضافه کنید به تابع main دقت کنید. یه ساختار تکرار دارید که و یه Sleep داره. بیایید یه متغیر تعریف کنید تو ساختار تکرار هر بار یکی بهش اضافه میشه. اگه این متغیر رو بخواهید تو خروجی چاپ کنید (زیر score) میبینید که خیلی سریع داره اضافه میشه و زمان به ثانیه نمایش نمیده. چیکار باید کنید که درست نشون بده؟ بهش فکر کنید 😉

ایده تایمر برعکس هم پیاده کنید. جالبه. مثلا 60 ثانیه وقت داره که امتیاز جمع کنه.

3- حل مشکل cursor

تو آموزش گفتم که ممکنه cursor تو صفحتون نمایش بده که اصلا جالب نیست. دلیلش هم واضحه هر بار که میخواد صفحه draw بشه این cursor چشمک زن تو صفحه حرکت میکنه. برای حل این مشکل باید cursor رو غیر فعال کنید. تو گوگل اینو سرچ کنید:

Google:  set curser disable c++

4- دیگه چطور میتونیم بازی رو جذاب تر کنیم؟

شما بگید که با چه ایده ای میشه بازی رو قشنگ تر و جذاب تر کرد؟ اگه ایده ای دارید حتما تو کامنتها بگید و مطمئن باشید سرعت رشد شما در  یادگیری برنامه نویسی با پروژه هایی که شما خودتون برای خودتون تعریف میکنید بیشتر میشه.

کد این بازی رو میخوام!

یه دوره کامل براتون آماده کردم که هم بهتون سی پلاس پلاس یاد میدم، هم هنر حل مساله و فکر کردن یاد میدم و هم به همه کدها، تمرینها و پروژه های جذاب سی پلاس پلاس دسترسی پیدا میکنید. این دوره رو با یه قیمت خیلی مناسب میتونید تهیه کنید.پیشنهاد میکنم این دوره رو بررسی کنید و جلسات دوره رو ببینید

این آموزش براتون مفید بود؟ میتونید بقیه آموزشهای من رو هم اینجا ببینید

نمونه سوالات سی پلاس پلاس

کلی سوال برنامه نویسی!

اگه دوست دارید برنامه نویس خوبی بشید باید زیاد کدنویسی کنید و برای اینکار به مساله نیاز دارید. اینجا براتون کلی سوال برنامه نویسی آماده کردم که میتونید این سوالات رو ببینی

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