تیم برنامه نویسی گروه تمدن

مرجع کامل فارسی برنامه نویسی به زبان سی پلاس پلاس

  • Increase font size
  • Default font size
  • Decrease font size

ساخت بازی در سی پلاس پلاس به روایت Sacha

فرستادن به ایمیل چاپ مشاهده در قالب پی دی اف

برای داشتن یک بازی کاربر پسند و موفق در سی پلاس پلاس، باید موارد زیر را در نظر داشته باشیم:
اول از همه سادگی، اصل کلیدی است. البته، اگر شما با داشتن یک بازی گرافیک بالا در سی پلاس پلاس راحت ترید، می توانید از روش های ساخت پیچیده تر بازی مثل روش Liero استفاده کنید اما در این جا سادگی را ملاک می گیریم.
همچنین باید به یاد داشته باشید که سختی بازی باید مناسب باشد یعنی نه خیلی آسان باشد و نه خیلی سخت. همچنین زمانی که برنده می شوید باید پاداشی برای آن در نظر بگیرید که کاربر با آن هدف به بازی ادامه دهد. (برای مثال یک پیغام پیروزی به صورت رنگی چاپ شود)
همچنین یک بازی می بایست کمی فراتر از پیاده سازی به شکل متنی باشد. برای مثال می توانید از خطوط و حاشیه ها یا متن های رنگی ساده استفاده نمایید.
زمانی که با این مفاهیم و طرز کار احساس راحتی کنید می توانید جهت ساخت یک بازی به صورت واقعی اقدام نمایید.
اگر با خروجی متون به صورت رنگی آشنا نیستید به شما پیشنهاد می کنم قبل از ساخت بازی چگونگی استفاده از آن را بیاموزید چرا که به معنای واقعی آسان است. در ابتدا قبل از اینکه شروع به نوشتن main() بکنید، باید این خطوط را به برنامه اضافه کنید.

void setcolor(unsigned short color)                 //The function that you'll use to
{                                                   //set the colour
    HANDLE hcon = GetStdHandle(STD_OUTPUT_HANDLE);
    SetConsoleTextAttribute(hcon,color);
}

سپس قبل از دستور خروجی متن باید رنگ را با دستور زیر تنظیم کنید:

setcolor (x);

(که ورودی x به ازای اعداد مختلف، نتیجه متفاوتی خواهد داشت. برای مثال (setcolor(7 بیان گر رنگ پیش فرض سفید خواهد بود.)
حال بیاید شروع به ساخت بازی نماییم. در ابتدا با توجه به نوع بازی ای که قصد ساخت آن را دارید به یک ایده نیاز دارید. با توجه به هدف این مقاله بیاید یک بازی بسیار ساده به اسم «?higher or lower» را بسازیم. به کاربر یک عدد نمایش داده شده و از او می پرسد که آیا عدد بعدی بیشتر یا کمتر است.
در ابتدا، بایستی متغیر های خود را اعلان نماییم. در این جا به سه عدد از نوع صحیح کوتاه و بدون علامت احتیاج داریم. این اعداد باید اولین عدد، دومین عدد و امتیاز کلی باشد. بعد از آن به یک متغیر از نوع کارکتر احتیاج داریم که کاربر به واسطه آن یکی از دو کارکتر H و L را به نمایندگی از Higher یا Lower وارد خواهد کرد. اعلان آن ها به صورت زیر خواهد بود.

int main()
{
         short unsigned int score = 0;
short unsigned int num = 0;
short unsigned int num2 = 0;
char letter;

حال برای داشتن اعدادی به صورت کاملا تصادفی در خروجی باید این کدها را وارد نماییم. هر کد دارای comment جهت توضیح بیشتر آن می باشد.

loop:  //This labels the code for quick reference later on.
srand(time(NULL));  //Initialize random number generator
    num = 1 + rand() % (6 - 1 + 1);  //Shows that num is a random integer between 1 and 6.
    num2 = 1 + rand() % (6 - 1 + 1); //Shows that num2 is a random integer between 1 and 6.

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

cout <<"\nPoints: ";
    setcolor (10);
    cout << score << endl;
    setcolor (7);
    cout <<"Get to 5 points to win. The numbers range between 1 and 6.\n";
    setcolor (12);
    cout << num;
    setcolor (7);
    cout <<" is the first number. \nIs the next number going to be higher or lower? H or L?" << endl;

سپس می توانیم دنباله ی ورودی را شروع کنیم.

cin >> letter;
    if (letter == 'h'||letter == 'H')
    {
               setcolor (12);
    cout << num2;
    setcolor (7);
    cout <<" is the second number.";
    if (num2>num) goto win;
                 else if (num2<num) goto lose;
                 else if (num2==num) goto same;
                 }
                      else
                      {
                          setcolor (12);
                           cout << num2;
                           setcolor (7);
                           cout <<" is the second number.";
                           if (num2<num) goto win;
                                        else if (num2>num) goto lose;
                                        else if (num2==num) goto same;
                                        win:
                                            {
                                                if (score==4)
                                                {
                                                             setcolor (12);
                                                             cout <<" You completed the game! Well done!!!\n";
                                                system ("pause");
                                                return 0;
                                                }
                                                else
                                                {cout <<"You win! Well done!\n";
                                             system ("pause");
                                             score++;
                                             goto loop;}
                                             }
                                             same:
                                                  {if (score==4)
                                                {
                                                             setcolor (10);
                                                             cout <<" You completed the game! Well done!!!\n";
                                                system ("pause");
                                                return 0;}
                                                        else
                                                        {cout <<"The numbers were the same! What a coincidence! I think\n we can give you a point for that...";
                                                        system ("pause");
                                                        score++;
                                                        goto loop;}}
                                             lose:
                                                  {cout <<"You lose...\n";
                                                    system ("pause");
}}                                                    return 0;}

اگر تمام این کارها را به درستی انجام داده باشید، زمان آن رسیده که پروژه را تمام کنید:

#include <iostream>
#include <time.h>
#include <cstdlib>
#include <windows.h>
using namespace std;
void setcolor(unsigned short color)                 //The function that you'll use to
{                                                   //set the colour
    HANDLE hcon = GetStdHandle(STD_OUTPUT_HANDLE);
    SetConsoleTextAttribute(hcon,color);
}
int main()
{
         short unsigned int score = 0;
short unsigned int num = 0;
short unsigned int num2 = 0;
char letter;
loop:
srand(time(NULL));
//Initialize random number generator
    num = 1 + rand() % (6 - 1 + 1);
    num2 = 1 + rand() % (6 - 1 + 1);
    cout <<"\nPoints: ";
    setcolor (10);
    cout << score << endl;
    setcolor (7);
    cout <<"Get to 5 points to win. The numbers range between 1 and 6.\n";
    setcolor (12);
    cout << num;
    setcolor (7);
    cout <<" is the first number. \nIs the next number going to be higher or lower? H or L?" << endl;
    cin >> letter;
    if (letter == 'h'||letter == 'H')
    {
               setcolor (12);
    cout << num2;
    setcolor (7);
    cout <<" is the second number.";
    if (num2>num) goto win;
                 else if (num2<num) goto lose;
                 else if (num2==num) goto same;
                 }
                      else
                      {
                          setcolor (12);
                           cout << num2;
                           setcolor (7);
                           cout <<" is the second number.";
                           if (num2<num) goto win;
                                        else if (num2>num) goto lose;
                                        else if (num2==num) goto same;
                                        win:
                                            {
                                                if (score==4)
                                                {
                                                             setcolor (12);
                                                             cout <<" You completed the game! Well done!!!\n";
                                                system ("pause");
                                                return 0;
                                                }
                                                else
                                                {cout <<"You win! Well done!\n";
                                             system ("pause");
                                             score++;
                                             goto loop;}
                                             }
                                             same:
                                                  {if (score==4)
                                                {
                                                             setcolor (10);
                                                             cout <<" You completed the game! Well done!!!\n";
                                                system ("pause");
                                                return 0;}
                                                        else
                                                        {cout <<"The numbers were the same! What a coincidence! I think\n we can give you a point for that...";
                                                        system ("pause");
                                                        score++;
                                                        goto loop;}}
                                             lose:
                                                  {cout <<"You lose...\n";
                                                    system ("pause");
}}                                                    return 0;}

منبع: سایت cplusplus.com نوشته Sacha

ترجمه و ویرایش: مرجع فارسی سی پلاس پلاس به آدرس cplusplus.ir

آخرین بروز رسانی مطلب در شنبه ، 4 آذر 1391 ، 15:43  

افزودن نظر

دوست عزیز و کاربر گرامی
نظرات بعد از بررسی در سایت درج خواهند شد.
مطمئنا از شنیدن انتقادهای شما خوشحال خواهیم شد.
دلیل فیلتر کردن نظرات صرفا جلوگیری از نظرات مغایر با اسلام و جمهوری اسلامی ایران می باشد. امیدواریم ما را به خاطر این کار درک نمایید. با تشکر






کد امنیتی
بازنشانی