خدمت شما:
توجه داشته باشید که تمام این کد ها رو برای سیستم عامل ویندوز و اجرا بر روی Command Prompt نوشته ام. در صورت نیاز به استفاده روی سیستم عامل های دیگر، می بایست دستورات موجود در توابع ()system را متناسب با آن تغییر دهید.کد:#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"); } }
- - - Updated - - -
راستی، معمولا در چنین مواردی ارسال دستور cls به command prompt برای پاک کردن خروجی به دلیل کندی عملکرد و چشمک زدن خروجی (screen flickering)، پیشنهاد نمیشه. یک راهی که در سیستم عامل ویندوز به شما پیشنهاد میشه، استفاده از کد زیر هست:
با استفاده از این تابع که نام آن را ()clearScreen گذاشته ایم، دیگر شاهد چشمک زدن خروجی خود نخواهید بود و کار بسیار تمیز و زیبا انجام خواهد گرفت.کد:#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); }
- - - Updated - - -
کد نهایی برای شما ضمیمه شد.
ویرایش توسط nexinel : January 27th, 2015 در ساعت 22:09
!GOODBYE FOREVER
!I HAVE NO WEBSITE
راستی اگر ما یک کاراکتر توی یک سطری قرار بدیم بعد بخواهیم در صورتی که بهش برخورد کرد حذف بشه چجوری میشه این کارو انجام داد؟
در حال حاضر 1 کاربر در حال مشاهده این موضوع است. (0 کاربران و 1 مهمان ها)