صفحه 1 از 2 12 آخرینآخرین
نمایش نتایج: از شماره 1 تا 10 , از مجموع 13

موضوع: حرکت دادن یک کاراکتر

Hybrid View

پست قبلی پست قبلی   پست بعدی پست بعدی
  1. #1
    عضو جدید
    تاریخ عضویت
    Nov 2014
    نوشته ها
    21
    تشکر تشکر کرده 
    26
    تشکر تشکر شده 
    1
    تشکر شده در
    تشکر شده 1 بار در 1 پست

    70 حرکت دادن یک کاراکتر

    سلام میخواستم بپرسم چطوری توی یک ارایه دو بعدی ما یک کاراکتر رو حرکت بدیم به گونه ای که بعد از یک ثانیه بتونیم ببینیمش مثلا بازی ماری که حرکت میکنه ولی و کاراکتر قبلی هم پاک بشه و همینطوری ادامه پیدا کنه مثلا یک کاراکتر از پایین به بالا به صورت عمودی حرکت کنه با تشکر میخواهم این حرکت بدون هرگونه فشار دادن کلید باشه و وقتی حرکت میکنه نشون داده بشه مثلا در یک مربع یا مستطیل یک کاراکتر از بالا به پایین حرکت کنه و ما بتونیم حرکتش رو ببینیم یک مثال ساده هم کفایت میکنه واسه یاد گیریش با تشکر فراوان از شما

  2. #2
    عضو انجمن
    تاریخ عضویت
    Apr 2014
    نوشته ها
    297
    تشکر تشکر کرده 
    19
    تشکر تشکر شده 
    303
    تشکر شده در
    245 پست

    پیش فرض پاسخ : حرکت دادن یک کاراکتر

    با سلام
    با جاوا میشه
    باید از قابلیت تایم اوت استفاده کنید و یه تابع واسش بنویسید
    ترجمه متون تخصصی ---- تدریس خصوصی
    اسکریپت نویسی php

  3. تعداد تشکر ها از hamid53214 به دلیل پست مفید


  4. #3
    عضو جدید
    تاریخ عضویت
    Nov 2014
    نوشته ها
    21
    تشکر تشکر کرده 
    26
    تشکر تشکر شده 
    1
    تشکر شده در
    تشکر شده 1 بار در 1 پست

    پیش فرض پاسخ : حرکت دادن یک کاراکتر

    من میخواستم با سی بنویسمش ولی فکر نکنم سخت باشه بدون اون هم باید بشه زمانش مهم نیست فقط مهم اینه بشه دیدش

    - - - Updated - - -

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

  5. #4
    عضو انجمن
    تاریخ عضویت
    Apr 2014
    نوشته ها
    297
    تشکر تشکر کرده 
    19
    تشکر تشکر شده 
    303
    تشکر شده در
    245 پست

    پیش فرض پاسخ : حرکت دادن یک کاراکتر

    سلام
    شما توی بخش طراحی سایت زدید واسه همین گفتم جاوا
    ترجمه متون تخصصی ---- تدریس خصوصی
    اسکریپت نویسی php

  6. تعداد تشکر ها از hamid53214 به دلیل پست مفید


  7. #5
    عضو جدید
    تاریخ عضویت
    Nov 2014
    نوشته ها
    21
    تشکر تشکر کرده 
    26
    تشکر تشکر شده 
    1
    تشکر شده در
    تشکر شده 1 بار در 1 پست

    پیش فرض پاسخ : حرکت دادن یک کاراکتر

    هرگونه راهنمایی رو که میتونید انجام بدید بگید

  8. #6
    عضو انجمن
    تاریخ عضویت
    Jan 2014
    نوشته ها
    125
    تشکر تشکر کرده 
    3
    تشکر تشکر شده 
    282
    تشکر شده در
    174 پست

    پیش فرض پاسخ : حرکت دادن یک کاراکتر

    معمولا اگر کسی قصد نوشتن بازی مثل Snake رو با زبان ++C داشته باشه، میره سراغ کتابخانه GLUT یا همان OpenGL. اما اگر قصد نوشتن آن با زبان ++C/C خالص را دارید و می خواهید در محیط Console اجرا کنید، بحث حرکت کار سختی نخواهد بود. شما فقط نیاز به کمی محاسبه، ذخیره برخی مقادیر و دستکاری خروجی دارید. به هر صورت اگر بصورت واضح و دقیق بفرمایید دنبال چه چیزی هستید، می توانم آن مسئله مورد نظر را برای شما توضیح داده و کد های لازم را برای شما بنویسم.
    !GOODBYE FOREVER
    !I HAVE NO WEBSITE

  9. تعداد تشکر ها از nexinel به دلیل پست مفید


  10. #7
    عضو جدید
    تاریخ عضویت
    Nov 2014
    نوشته ها
    21
    تشکر تشکر کرده 
    26
    تشکر تشکر شده 
    1
    تشکر شده در
    تشکر شده 1 بار در 1 پست

    پیش فرض پاسخ : حرکت دادن یک کاراکتر

    با تشکر فراوان از شما و نگاه کنید شما یک آرایه دو بعدی ایجاد کنید از نوع char بعدش مثلا تو خونه پایینیش یک کاراکتر بگذارید بدون هیچ گرافیک و چیز خاصی درست؟ بعدش این کاراکتر به محض اجرا شدن برنامه ( بهتره با فشار دادن یک کلید شروع به حرکت کنه و به بالا بره تا آخرین خونه آرایه و این حرکت رو ما بتونیم ببینیم با تشکر

  11. #8
    عضو انجمن
    تاریخ عضویت
    Jan 2014
    نوشته ها
    125
    تشکر تشکر کرده 
    3
    تشکر تشکر شده 
    282
    تشکر شده در
    174 پست

    پیش فرض پاسخ : حرکت دادن یک کاراکتر

    نقل قول نوشته اصلی توسط mehran34 نمایش پست ها
    با تشکر فراوان از شما و نگاه کنید شما یک آرایه دو بعدی ایجاد کنید از نوع char بعدش مثلا تو خونه پایینیش یک کاراکتر بگذارید بدون هیچ گرافیک و چیز خاصی درست؟ بعدش این کاراکتر به محض اجرا شدن برنامه ( بهتره با فشار دادن یک کلید شروع به حرکت کنه و به بالا بره تا آخرین خونه آرایه و این حرکت رو ما بتونیم ببینیم با تشکر
    پیرو صحبتی که در یاهو داشتیم و IDE معرفی شده توسط شما یعنی Code::Blocks و کامپایلر مورد استفاده که MinGW/GCC بوده است، کد زیر را برای شما نوشته ام که البته با توجه به عدم پشتیبانی در سیستم های مختلف، کد های جایگزین نیز برای شما کامنت شده است:

    کد:
    #include <stdio.h>#include <conio.h>
    
    
    #define NROWS  5  // Rows of array
    #define NCOLS  5  // Columns of array
    #define MARBL 'X'
    #define EMPTY 'O'
    
    
    void draw(int x, int y);
    
    
    int main ()
    {
        int x = 3; // set from 0 to NROWS-1
        int y = 1; // set from 0 to NCOLS-1
    
    
        draw(x, y);
    
    
        printf("\n\nPress any key to start...");
        getch();
    
    
        while(x > 0)
        {
            x--;
    
    
            draw(x, y);
    
    
            int k; for(k = 0; k < 10000000; k++); // or sleep(500); with time.h or even delay(500); with stdlib.h
        }
    
    
        printf("\n\nPress any key to exit...");
        getch();
    
    
        return 0;
    }
    
    
    void draw(int x, int y)
    {
        int i, j;
        char a[NROWS][NCOLS];
    
    
        system("cls"); // or clrscr();
    
    
        printf("---------------------------------------\n");
    
    
        for(i = 0; i < NROWS; i++)
        {
            for(j = 0; j < NCOLS; j++)
            {
                if(i == x && j == y)
                {
                    a[i][j] = MARBL;
                }
                else
                {
                    a[i][j] = EMPTY;
                }
    
    
                printf("%c\t", a[i][j]);
            }
    
    
            printf("\n---------------------------------------\n");
        }
    }
    این کد کاملا تست شده و کار می کند که البته بسته به نیاز خود می توانید آن را تغییر دهید.
    ویرایش توسط nexinel : January 27th, 2015 در ساعت 17:40
    !GOODBYE FOREVER
    !I HAVE NO WEBSITE

  12. تعداد تشکر ها از nexinel به دلیل پست مفید


  13. #9
    عضو جدید
    تاریخ عضویت
    Nov 2014
    نوشته ها
    21
    تشکر تشکر کرده 
    26
    تشکر تشکر شده 
    1
    تشکر شده در
    تشکر شده 1 بار در 1 پست

    پیش فرض پاسخ : حرکت دادن یک کاراکتر

    حالا اگر یک ارایه 18*21 رو در نظر بگیریم و بعدش بخواهیم در این آرایه یک کاراکتر در 8*19 قرار بدیم بعدش این کاراکتر با زاویه 45 درجه حرکت کنه و وقتی به خونه آخر رسید از دوباره با زاویه 45 درجه شروع به حرکت کنه راستی شروع حرکت به سمت شمال شرق هست ممنون و مرسی

    - - - Updated - - -

    وقتی برخورد کرد جهت حرکتش تغییر میکنه

  14. #10
    عضو انجمن
    تاریخ عضویت
    Jan 2014
    نوشته ها
    125
    تشکر تشکر کرده 
    3
    تشکر تشکر شده 
    282
    تشکر شده در
    174 پست

    پیش فرض پاسخ : حرکت دادن یک کاراکتر

    نقل قول نوشته اصلی توسط mehran34 نمایش پست ها
    حالا اگر یک ارایه 18*21 رو در نظر بگیریم و بعدش بخواهیم در این آرایه یک کاراکتر در 8*19 قرار بدیم بعدش این کاراکتر با زاویه 45 درجه حرکت کنه و وقتی به خونه آخر رسید از دوباره با زاویه 45 درجه شروع به حرکت کنه راستی شروع حرکت به سمت شمال شرق هست ممنون و مرسی

    - - - Updated - - -

    وقتی برخورد کرد جهت حرکتش تغییر میکنه
    خدمت شما:

    کد:
    #include <stdio.h>
    #include <conio.h>
    
    
    #define NROWS 21  // Rows of array
    #define NCOLS 18  // Columns of array
    #define MARBL 'X'
    #define EMPTY ' '
    
    
    void draw(int x, int y);
    
    
    int main ()
    {
        char xd = 'u'; // xd: u = up & d = down
        char yd = 'r'; // xd: r = right & l = left
        int x = 19;    // set from 0 to NROWS-1
        int y = 8;     // set from 0 to NCOLS-1
        int c = 0;
    
    
        system("mode con: cols=150 lines=50"); // set the size of output window
    
    
        draw(x, y);
    
    
        printf("\n\nPress any key to start...");
        getch();
    
    
        while(c < 100)
        {
            if(xd == 'd')
            {
                x++;
            }
            else if(xd == 'u')
            {
                x--;
            }
    
    
            if(yd == 'r')
            {
                y++;
            }
            else if(yd == 'l')
            {
                y--;
            }
    
    
            draw(x, y);
    
    
            if(x == 0)
            {
                xd = 'd';
            }
            else if(x == (NROWS - 1))
            {
                xd = 'u';
            }
    
    
            if(y == 0)
            {
                yd = 'r';
            }
            else if(y == (NCOLS - 1))
            {
                yd = 'l';
            }
    
    
            int k; for(k = 0; k < 10000000; k++); // or sleep(500); with time.h or even delay(500); with stdlib.h
    
    
            c++;
        }
    
    
        printf("\n\nPress any key to exit...");
        getch();
    
    
        return 0;
    }
    
    
    void draw(int x, int y)
    {
        int i, j;
        char a[NROWS][NCOLS];
    
    
        system("cls"); // or clrscr();
    
    
        printf("-----------------------------------------------------------------------------------------------------------------------------------------\n");
    
    
        for(i = 0; i < NROWS; i++)
        {
            for(j = 0; j < NCOLS; j++)
            {
                if(i == x && j == y)
                {
                    a[i][j] = MARBL;
                }
                else
                {
                    a[i][j] = EMPTY;
                }
    
    
                printf("%c\t", a[i][j]);
            }
    
    
            printf("\n-----------------------------------------------------------------------------------------------------------------------------------------\n");
        }
    }
    توجه داشته باشید که تمام این کد ها رو برای سیستم عامل ویندوز و اجرا بر روی Command Prompt نوشته ام. در صورت نیاز به استفاده روی سیستم عامل های دیگر، می بایست دستورات موجود در توابع ()system را متناسب با آن تغییر دهید.

    - - - Updated - - -

    راستی، معمولا در چنین مواردی ارسال دستور cls به command prompt برای پاک کردن خروجی به دلیل کندی عملکرد و چشمک زدن خروجی (screen flickering)، پیشنهاد نمیشه. یک راهی که در سیستم عامل ویندوز به شما پیشنهاد میشه، استفاده از کد زیر هست:

    کد:
    #include <windows.h>
    
    void clearScreen();
    
    int main()
    {
        // your codes here
    }
    
    void clearScreen()
    {
        HANDLE hOut;
        COORD Position;
        
        hOut = GetStdHandle(STD_OUTPUT_HANDLE);
        
        Position.X = 0;
        Position.Y = 0;
        SetConsoleCursorPosition(hOut, Position);
    }
    با استفاده از این تابع که نام آن را ()clearScreen گذاشته ایم، دیگر شاهد چشمک زدن خروجی خود نخواهید بود و کار بسیار تمیز و زیبا انجام خواهد گرفت.

    - - - Updated - - -

    کد نهایی برای شما ضمیمه شد.
    فایل های پیوست شده فایل های پیوست شده
    • نوع فایل: zip main.zip (1.0 کیلو بایت, 0 نمایش)
    ویرایش توسط nexinel : January 27th, 2015 در ساعت 22:09
    !GOODBYE FOREVER
    !I HAVE NO WEBSITE

  15. تعداد تشکر ها از nexinel به دلیل پست مفید


صفحه 1 از 2 12 آخرینآخرین

اطلاعات موضوع

کاربرانی که در حال مشاهده این موضوع هستند

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

مجوز های ارسال و ویرایش

  • شما نمیتوانید موضوع جدیدی ارسال کنید
  • شما امکان ارسال پاسخ را ندارید
  • شما نمیتوانید فایل پیوست کنید.
  • شما نمیتوانید پست های خود را ویرایش کنید
  •