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

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

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

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

    نقل قول نوشته اصلی توسط marketvps نمایش پست ها
    با کدام زبان میخواین بنویسیدش؟ سورس امادش را در ویژوال بیسیک دارم خواستید بگید بدم خدمتتون

    - - - Updated - - -

    با کدام زبان میخواین بنویسیدش؟ سورس امادش را در ویژوال بیسیک دارم خواستید بگید بدم خدمتتون
    به زبان سی

  2. # ADS




     

  3. #12
    عضو انجمن
    تاریخ عضویت
    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

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


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

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

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

صفحه 2 از 2 نخستنخست 12

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

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

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

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

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