تبلیغات :
ماهان سرور
آکوستیک ، فوم شانه تخم مرغی ، پنل صداگیر ، یونولیت
دستگاه جوجه کشی حرفه ای
فروش آنلاین لباس کودک
خرید فالوور ایرانی
خرید فالوور اینستاگرام
خرید ممبر تلگرام

[ + افزودن آگهی متنی جدید ]




صفحه 1 از 3 123 آخرآخر
نمايش نتايج 1 به 10 از 25

نام تاپيک: راهنمایی در مورد پروژه دانشگاه

  1. #1
    داره خودمونی میشه
    تاريخ عضويت
    May 2008
    پست ها
    80

    پيش فرض راهنمایی در مورد پروژه دانشگاه

    سلام به همه
    من یه کمک می خوام نه خود کدو اگه میشه در مورد الگوریتم ها هم راهنمایی کین
    پروژه ما اینه
    پروژه : بازی مار
    یک جدول 10 در 15 در نظر بگیرید، هر یک از خانه های این جدول میتواند
    1- خالی باشد که در این صورت آن را با - نمایش می دهیم،
    2- حاوی خوراکی باشد که آن را با * نمایش می دهیم.
    3- نقطه شروع باشد که با s نمایش داده می شود. (نقطه شروع همیشه در پایین ترین سطر جدول است)
    4- نقطه پایان باشد که با e نمایش داده می شود.(نقطه پایانی هم همیشه در بالاترین سطر است.)
    5- مانع باشد که که با b نمایش داده می شود.
    محل موانع و خوراکی ها به صورت تصادفی تعیین می شود. محل نقطه شروع در سطر پایین و نقطه پایان در سطر بالا هم به صورت تصادفی تعیین می شود.
    قوانین بازی به این صورت است.
    1- مار یک موجود انعطاف پذیر است که طول آن 4 است. سر مار با o و بدن او با m نشان داده می شود.
    2- طول مار در بازی ثابت می ماند.
    3- با رسیدن به خانه خوراکی مار خوراکی را می خورد و 10 امتیاز می گیرد.
    4- هر 30 امتیاز یک جان حساب می شود.
    5- اگر مار سعی کند وارد خانه ای بشود که مانع در آن است، یا اگر سعی کند از محیط بازی خارج شود، یکی از جان های مار از او گرفته می شود( 30 امتیاز). اگر مار جان نداشته باشد، مار سوخته و بازی تمام می شود.
    6- در ابتدای بازی مار بیرون سر ما در خانه s و بقیه بدن او خارج از زمین است.
    7- مار باید با گرفتن بیشترین امتیاز خود را به خانه e برساند و از آن خارج شود.
    8- کنترل حرکت مار به دست کاربر است. در هر بار :
    1- ورودی 1 یعنی حرکت به بالا
    2- ورود 2 یعنی حرکت به پایین
    3- رورودی 3 یعنی حرکت به راست
    4- ورودی 4 یعنی حرکت به چپ
    9- پس از هر بار که کاربر یک ورودی وارد می کند( هر حرکت مار) باید وضعیت جدید و امتیاز کسب شده را به کاربر نشان بدهید.
    لطفا راهنمایی کنین آخه 5 نمره داره و به زبان turbo ++c هستش و تا آخر آرایه ها بیشتر نخوندیم
    بازم مرسی از همتون


  2. #2
    داره خودمونی میشه mohsen_7's Avatar
    تاريخ عضويت
    Jun 2007
    پست ها
    68

    پيش فرض

    سلام دوست عزیز
    برنامه واقعا جالب و خوبی طرح شده. منتها اگه خیلی تازه کار هستید شاید یه کم سخت باشه واستون. اما اگه وقت بذارید حتما شدنیه.

    شما میتونید بازی رو بر روی یک آرایه دو بعدی یا همون ماتریس مدل کنید. یک ماتریس 10 در 15 از کاراکترها میسازید و در طول برنامه با مقدار دهی به خونه های ماتریس بازی رو به پیش میبرید. البته شاید برای برخی مسائل مجبور شید که یه خورده ماتریستون رو از حد واقعی بزرگتر انتخاب کنید که مسئله مهمی نیست.

    هر بار که تغییری در بازی اتفاق میوفته صفحه رو پاک میکنید و از اول تمام ماتریس رو میکشید.

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

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

    اگر حرکت مار با برداشتن دست از روی کلید روی صفحه ادامه نداشته باشه بازم کار ساده تر شده. و در صورتی که حرکت به صورت اتوماتیک باشه نیاز به استفاده از تابع sleep دارید.

    هر بار که تغییری در وضعیت مار به وجود میاد مختصات سر مار رو با تمام مختصات های موانع مقایسه میکنید. اگر با هم برابر بودن برخورد صورت گرفته و از امتیاز کم میشه.

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

  3. این کاربر از mohsen_7 بخاطر این مطلب مفید تشکر کرده است


  4. #3
    داره خودمونی میشه
    تاريخ عضويت
    May 2008
    پست ها
    80

    پيش فرض

    از شما ممنونم
    من صحفه رو تونستم بنویسم با استفاده از تابع رندم تونستم صفحه رو ایجاد کنم
    حالا می خوام که مقادیری آرایه پذیرفته رو عوض کنم مثلا خانه a[5][5]که الان b هست می خوام با "M" تغییرش بدم
    سوال بعدی اینه که برای گرفتن مقادیر متوالی باید چیکار کنم

  5. #4
    داره خودمونی میشه mohsen_7's Avatar
    تاريخ عضويت
    Jun 2007
    پست ها
    68

    پيش فرض

    خواهش میکنم دوست عزیز.

    برای عوض کردن مقدار مثلا خونه a[5][5] احتیاج به یک عمل انتساب ساده دارید. به این شکل:
    A[5][5] = ‘m’;
    بخش دوم سوالتون رو هم یک بار دیگه توضیح بدید. متوجه منظورتون نشدم.
    البته اگر منظورتون مقداردهی به خونه های قرارگیری مار در هنگام حرکته، یک روش راحتی هست که اگه به ذهنتون نیومد براتون توضیحشو میدم. موفق باشید

  6. این کاربر از mohsen_7 بخاطر این مطلب مفید تشکر کرده است


  7. #5
    داره خودمونی میشه
    تاريخ عضويت
    May 2008
    پست ها
    80

    پيش فرض بدن مار

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

  8. #6
    داره خودمونی میشه mohsen_7's Avatar
    تاريخ عضويت
    Jun 2007
    پست ها
    68

    پيش فرض

    پاسخ هر دو سوالتون خیر هست.

    اگر ساختار ها رو هنوز نخوندین چهار تا آرایه یک بعدی دو تایی به شکل زیر براش تعریف کنید.

    int snake1[2];
    int snake2[2];
    int snake3[2];
    int snake4[2];
    من ساده ترین شکلش رو در نظر گرفتم تا براتون واضحتر باشه.

    این چهار آرایه هر کدوم مختصات یکی از خونه هایی که مار در جدول اشغال میکند رو نگهداری میکنند. مثلا snake1 مختصات فعلی سر مار رو در جدول نگهداری میکنه.

    در این حالت اگر سر مار در خونه [4][5] (سطر پنج و ستون چهار) قرار داشته باشه مقدار snake1[0] پنج و مقدار snake1[1] چهار خواهد بود.

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


    Last edited by mohsen_7; 24-05-2011 at 14:51.

  9. #7
    داره خودمونی میشه
    تاريخ عضويت
    May 2008
    پست ها
    80

    پيش فرض رفرش

    من این دستور رفرشی که میگید بلد نیستم لطفا راهنمایی کنید.

  10. #8
    داره خودمونی میشه mohsen_7's Avatar
    تاريخ عضويت
    Jun 2007
    پست ها
    68

    پيش فرض

    ریفرش دستور خاصی نیست. منظورم این بود که با حرکت کردن مار ابتدا اون چهار آرایه ی دو تایی رو مقدار دهی میکنید و سپس جای مار رو در خونه های ماتریس با مقادیر تازه به روز میکنید.

  11. #9
    داره خودمونی میشه mohsen_7's Avatar
    تاريخ عضويت
    Jun 2007
    پست ها
    68

    پيش فرض

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

    هروقت دستور جابجایی مار در جدول به برنامه رسید ابتدا مقادیر آرایه ای که مختصات سر مار رو نگهداری میکنه (snake1) رو در یک آرایه موقت دوتایی مثل temp1 ذخیره میکنید و سپس مختصات سر مار رو با توجه به فرمانی که آمده به روز میکنید.

    مثلا اگر حرکت به سمت راست بوده باشه به مقدار فعلی ستون باید یکی اضافه کنید. و یا اگر مثلا دستور حرکت به سمت بالا اومده باشه از مقدار سطر یکی باید کم کنید.

    در مرحله بعدی اینبار مختصات snake2 رو در temp2 دخیره میکنید و snake2 رو با مقادیر temp1 مقداردهی میکنید و همینطور الی آخر.

    در واقع ما میخواهیم بعد از جلو بردن سر مار بقیه اعضا بدنش رو یکی یکی جلو بیاریم.

  12. این کاربر از mohsen_7 بخاطر این مطلب مفید تشکر کرده است


  13. #10
    داره خودمونی میشه
    تاريخ عضويت
    May 2008
    پست ها
    80

    پيش فرض کلی....

    سلام محسن جان ازت بي نهايت ممنونم
    من باز تو اين برنامه گيج شدم و واقعا ديگه هيچي بلد نيستم اگه ميشه الگوريتم کليشو همرا با جزئيات بهم بگي ممنونت ميشم و ببين آيا من اين کدي که نوشتم با برنامه که بايد بنويسم سنخيتي داره يا نه
    کد:
    برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
    #include<iostream.h>
    #include<conio.h>
    #include<stdlib.h>
    int main()
    {
    char a[15][10];
    for(int i=0;i<=9;i++)
    {
    for(int j=0;j<=14;j++)
    {int b;
    char c;
    b=rand()%3;
    switch(b)
    {
    case 0:
    c='b';
    break;
    case 1:
    c='-';
    break;
    case 2:
    c='*';
    break;
    }
    a[j][i]=c;
    }
    } int f,e,y;
    f=rand()%15;
    a[f][0]='e';
    e=rand()%15;
    a[e][9]='s';

    for(int l=0;l<=9;l++)
    {
    for(int k=0;k<=14;k++)
    cout<<a[k][l]<<" ";
    cout<<"\n";
    }


    return 0;
    }

صفحه 1 از 3 123 آخرآخر

Thread Information

Users Browsing this Thread

هم اکنون 1 کاربر در حال مشاهده این تاپیک میباشد. (0 کاربر عضو شده و 1 مهمان)

User Tag List

قوانين ايجاد تاپيک در انجمن

  • شما نمی توانید تاپیک ایحاد کنید
  • شما نمی توانید پاسخی ارسال کنید
  • شما نمی توانید فایل پیوست کنید
  • شما نمی توانید پاسخ خود را ویرایش کنید
  •