برنامه نویس شدن فقط یادگیری نحوه و مفاهیم زبان برنامه نویسی نیست؛ بلکه درمورد چگونگی استفاده از این دانش، برای ساختن و انجام پروژه برنامهها است. اکنون باید روی ایده برای برنامههای جدید و هیجانانگیز کار کنید و سعی کنید آنها را به برنامههایی واقعی تبدیل کنید.
هنگام شروع برنامه، شما احتمالاً از همه آنچه برای برنامه خود نیاز دارید نمیدانید و این قضیه کاملاً طبیعی میباشد. به این دلیل که هرچقدر بخواهید برنامه خود را واقعیتر کنید، انگیزه شما برای یادگیری این موارد جدید افزایش خواهد یافت.
برنامه نویسان به طور مداوم در حال یادگیری چیزهای جدید برای پروژههای جدید هستند.
برای مطالعه بیشتر، روی سرویس ابری چیست؟ کلیل کنید!
مراحل برنامهریزی یک پروژه برنامه نویسی به این صورت میباشد:
در این پروژه برنامه نویسی، چه چیزی را قصد دارید بسازید؟
اگر از قبل ایدهای ندارید، چند سوال برای کمک به طوفان مغزی میتوان طرح کرد:
- گیم مورد علاقه شما چیست؟ بازی آنلاین، بوردگیم یا بازی ورزشی؟ آیا میتوانید نسخه دیجیتالی ساده ای از آن بسازید؟ آیا میتوانید کمی آن را دستکاری کنید؟ برای مثال موضوع آن را متفاوت انتخاب کنید یا شخصیتهای جدیدی به آن بدهید؟
- سایر رشته های دانشگاهی مورد علاقه شما کدامند؟ اگر عاشق هنر هستید، میتوانید یک برنامه با موضوع هنری بسازید. اگر عاشق علم هستید، یک شبیه سازی علمی پیشنهاد خوبی میباشد.
- علایق شخصی شما چیست؟ فیلم یا سریال تلویزیونی مورد علاقه شما چیست؟ آیا میتوانید از یک صحنه یا شخصیت آن، یک نسخه دیجیتالی بسازید؟ یا حتی میتوانید بر اساس آن، یک بازی بسازید.
- یک ابزار واقعی که عاشق آن هستید چیست؟ آیا میتوانید از آن شبیهسازی دیجیتالی بسازید؟
حال، هنگامی که ایده خود را انتخاب کردید، باید توضیحی در مورد آن بنویسید. به عنوان مثال، اگر تصمیم گرفتید یک کلون از “Breakout” را بسازید مینویسید:
Breakout: یک بازی که در آن شما در پایین صفحه یک پنل را کنترل میکنید و از آن برای تعیین ضربه و زاویه برای پرتاب یک توپ به سمت بالا به هدف شکستن آجرها، استفاده میکنید. هدف این بازی این است که همه آجرها را شکسته و اجازه ندهید که توپ از پایین بیشتر از سه بار، عبور کند.
در حال حاضر، این ایده برای ادامه روند برنامه ریزی، به اندازه کافی خوب میباشد.
از چه فناوری استفاده خواهید کرد؟
در این مرحله، شما باید در نظر بگیرید که با کدام فناوریها (زبانها، کتابخانهها، محیطها) آشنا هستید و یا میتوانید آنها را به راحتی یاد بگیرید و کدام یک برای کار مناسبتر میباشند.
ویژگیهای این پروژه برنامه نویسی چه خواهند بود؟
اینجاست که وارد مرحله واقعی پروژه میشویم. هدف شما در این مرحله این است که بفهمید واقعاً در حال ساخت چه چیزی هستید و بعد از اتمام احتمالاً کار چه شکلی خواهد بود؟ چه ویژگیهایی را شامل میشود و چه ویژگیهایی را شامل نمیشود.
اولین کاری که در این مرحله می توانید انجام دهید، ساخت ماکت یا طرحهایی میباشد که شبیه کاری هستند که شما هدف ساخت آن را دارید؛ اما بدون جزئیاتی مانند رنگآمیزی یا اندازه دقیق.
می توانید روی کاغذ یا حتی برنامههای دیجیتال آن را ماکت کنید.
برای مطالعات بیشتر در زمینه هاست، روی هاست چیست؟ کلیک کنید!
برای اینکه تصوری از ماکت داشته باشید، در عکس زیر ماکت “Breakout” نمایش داده شده است. در این ماکت هر صحنه جداگانه ترسیم شده و خطوط بین آنها کشیده شده تا نشان دهد که چگونه یک صحنه به صحنه دیگر منتهی میشود.
این پیکانها کمک میکنند تا بفهمید در برنامه خود به چه منطقی نیاز دارید تا بین حالتهای برنامه، آنها را قرار دهید.
اکنون میتوانید از این ماکت برای کمک به تهیه لیست ویژگیهای پروژه برنامه نویسی استفاده کنید و آن را به صورت لیست درآورید.
به عنوان مثال برای “Breakout“، این لیست میتواند ویژگیهای بازی باشد که براساس صحنه تقسیم میشود:
صحنهی بازی
- کنترل توسط کاربر
- آجرهای چند رنگ
- حرکت توپ با زاویه
- تشخیص برخورد
- نمایش آنی
- نمایش نمره
- جلوههای صوتی
صحنهی اصلی
- دکمه شروع
- دکمه راهنما
صحنهی کمک
- متن
- دکمه برگشت
صحنه پیروزی
- عنوان
- انیمیشن آتش بازی
صحنه باخت
- متن
- دکمه راه اندازی مجدد
چه ویژگی هایی “باید” داشته باشد؟
اگر زمان کافی برای ساخت پروژهها بینهایت بود، میشد همه ویژگیهایی که در لیست قرار دارند را وارد کرد. اما این امکان وجود ندارد؛ بنابراین در این مرحله، شما باید تصمیم بگیرید که کدام ویژگی مهمتر است و فقط در صورت داشتن وقت، ویژگیهای غیر ضروری را انجام دهید. این موضوع، به شما کمک میکند تا از مهمترین تا کم اهمیتترین ویژگی را لیست کرده و پروژه را در وقت مورد نظر به اتمام رسانید.
برای کمک به درک اهمیت هر ویژگی، این سوالات را از خود بپرسید:
- اگر این پروژه را با یکی از دوستانم به اشتراک بگذارم، کار کردن صحیح کدام ویژگی برایم با اهمیتتر خواهد بود؟
- من بیشتر از کدام ویژگی در ساخت پروژه هیجان زدهام؟
- کدام ویژگیها برنامه من را منحصر به فرد میکند؟
- از پیاده سازی کدام ویژگیها بیشتر میآموزم؟
- آیا ویژگیهایی وجود دارد که فراتر از سطح مهارت فعلی من باشد؟
سپس، لیست ویژگیهای خود را مرور کرده و به هر ویژگی رتبهای اضافه کنید.
برای لیست ویژگیهای “Breakout“،“P1” ، “P2”و “P3” در کنار هر ویژگی قرار گرفته تا نشانگر اولویت برتر(P1) ، اولویت متوسط (P2) و کمترین اولویت (P3) باشد. در این لیست، مکانیکهای بازی، نسبت به ویژگیهای کلی بازی (مانند صحنهها) در اولویت قرار داده شده است:
(P1) صحنه بازی
- (P1) پارویی که توسط کاربر کنترل میشود
- (P1) آجرهای رنگی متعدد
- (P1) حرکت زاویه دار توپ
- (P1) تشخیص برخورد
- (P2) نمایش آنی
- (P2) نمایش امتیاز
- (P3) جلوههای صوتی
(P2) صحنه اصلی
- (P2) دکمه شروع
- (P3) دکمه راهنما
(P3) صحنه راهنما
- (P3) متن
- (P3) دکمه برگشت
(P2) صحنه پیروزی
- (P2) عنوان
- (P3) انیمیشن پیروزی
(P2) صحنه باخت
- (P2) متن
- (P3) دکمه راهاندازی مجدد
به عنوان یک نکته کلی برای بازی سازان، در اینجا توصیه میشود اولویتبندی منوها، مراحل بازی، گرافیکهای سه بعدی انجام نشود. به چیزهای منحصر به فرد و سرگرم کننده بازی توجه کنید، سپس موارد دیگر را اضافه کنید.
همچنین میتوانید لیست اولویت بندی خود را به نسخههایی از پروژه تبدیل کنید تا به راحتی بتوانید آنچه را که باید در هر نسخه پیادهسازی کنید، مشاهده کنید. همیشه میتوانید پس از اتمام یکی از این نسخه ها توقف کنید و از آنچه ساختهاید، خوشحال باشید.
در اینجا نسخه های نمونه که برای “Breakout” برای فهم راحت تر آورده شده است:
V1
- کنترل پنل کاربر
- آجرهای چند رنگ
- حرکت زاویه دار توپ
- تشخیص برخورد
V2
- نمایش آنی
- نمایش امتیاز
- صحنه شروع
- صحنه پیروزی
V3
- جلوههای صوتی
- دکمه راهنما
- آتش بازی پیروزی
- صحنه باخت و راه اندازی مجدد
پیادهسازی پروژه برنامه نویسی
حال، شما تصوری از ویژگیهای برنامه خود دارید، اما اگر قصد شروع داشته باشید، به یک برنامه کاملاً خالی و بدون کد خیره خواهید شد. این قضیه میتواند ترسناک باشد و سوالاتی برای شما ایجاد کند. کدام متغیرها را باید ابتدا نوشت؟ کدام توابع؟
یکی از راهحلهای این مشکل این است که به “معماری سطح بالا” یا “high level architecture” برنامه خود فکر کنید و آن را به دسته هایی مانند “اشیا” ، “منطق” ، “تعامل کاربر” ، “دادههای کاربر” و “صحنهها” تقسیم کرده و سپس به چگونگی پیادهسازی آنها فکر کنید.
به عنوان مثال، در اینجا معماری برای “Breakout” آورده شده است:
اشیاء
- آجر).isHit(
- پارو).move(
- توپ).move(
صحنهها
- شروع
- بازی
- پایان
منطق
- برخورد آجر با توپ )function, use bounding box(
- زاویه توپ با پارو )function, invert angle(
تعامل کاربر
- حرکت پارو با صفحه کلید )keyPressed(
- دکمههای تغییر صحنه )mouseClicked(
دادههای کاربر
- از دست رفتن توپ (array)
- ضربههای توپ (array)
حال که به معماری سطح بالا یا “high level architecture” فکر کردید، باید برایتان مشخص شود که ابتدا با کدام کد کار خود را شروع میکنید.
جدول زمانی شما برای این پروژه برنامه نویسی چیست؟
چه مدت زمان برای ساخت این برنامه دارید؟ چند هفته و هر روز چقدر وقت دارید؟ هر هفته چه ویژگیهایی را مینویسید؟ هدف شما در این مرحله تعیین یک جدول زمانی، برای پروژه برنامه نویسی است.
در اینجا یک جدول زمانی برای “Breakout” با فرض 2-4 ساعت کار در هر هفته آورده شده است:
- هفته 1: طراحی و سودوکد
- هفته 2: Rough visuals
- هفته 3: مکانیک حرکت و برخورد توپ
- هفته 4: مکانیک امتیازدهی
- هفته 5: صحنهها (شروع، برد و باخت)
- هفته 6: پولیش، آزمون دستی(QA) ، آمادهسازی برای نسخهی نمایشی یا دمو
مشخص کردن جدول زمانی برای پروژه های برنامه نویسی سخت است. بعضی از چیزهایی که به نظر آسان میرسند، بیش از آنچه انتظار دارید طول میکشند.حتی برعکس! بعضی از چیزهایی که سخت به نظر میرسند زمان کمتری از آنچه انتظار دارید میبرند.
همیشه فرض را بر این بگیرید که بیشتر از آنچه فکر میکنید پروژه زمان میبرد و در ادامه، کار خود را با زمان، تنظیم کنید.
دیگر مقالات مارا بخوانید. روی جذب سرمایه برای پروژه کلیک کنید!
ثبت ديدگاه