نمایش نتایج: از شماره 1 تا 1 , از مجموع 1

موضوع: برج هانوی با زبان c :)

  1. #1
    تاریخ عضویت
    Jul 2009
    محل سکونت
    تهران
    نوشته ها
    240
    سپاس ها
    220
    سپاس شده 546 در 162 پست

    پیش فرض برج هانوی با زبان c :)

    سلام
    این سورسش که با borland نوشته شده:)
    کد HTML:
    //parsipeople Team
    #include <stdio.h>
    #include <dos.h>
    #include <conio.h>
    
    int counterL,counterR=0,counterC=0;
    void paye();
    void mile();
    void mohre(int n);
    void transfer(int n, char from, char to, char temp);
    void counter(char from,char to);
    void move(int n,char from,char to,int counterL,int counterC,int counterR);
    void pak(int n,int x,int y);
    void chap(int n,int x,int y);
    
    void main()
    {
    int n;
    printf("chand disk?" );
    printf("[0<n<11]");
    scanf("%d",&n);
    if(n>10||n<1)
    {printf("tedad eshtebah ast\n");
    getch();
    }
    else
    {
    counterL=n;
    textbackground(7);
    clrscr();
    mile();
    paye();
    mohre(n);
    printf( "\n" );
    transfer(n,'L','R','C');
    getch();}
    }
    /*end main*/
    void transfer( int n, char from, char to, char temp)
    {
    if (n > 0) {
    transfer(n-1, from, temp,to);
    counter(from,to);
    move(n,from,to,counterL,counterC,counterR);
    transfer(n-1,temp,to,from);
    }
    return;
    }
    /*end transfer*/
    void paye()
    {
     for(int i=5;i<=75;i++)
     {if(i>=5&&i<=25)
     {gotoxy(i,23);
    textcolor(4);
    cprintf("%c",219);}
    else
    if(i>=30&&i<=50)
     {gotoxy(i,23);
    textcolor(4);
    cprintf("%c",219);}
    else
    if(i>=55&&i<=75)
     {gotoxy(i,23);
    textcolor(4);
    cprintf("%c",219);}}
    }
    /*end paye*/
    void mile()
    {
    for(int i=10;i<=22;i++)
    {gotoxy(15,i);
    textcolor(12);
    textbackground(4);
    cprintf("%c",'|');}
    for(int i=10;i<=22;i++)
    {gotoxy(40,i);
    textcolor(12);
    textbackground(4);
    cprintf("%c",'|');}
    for(int i=10;i<=22;i++)
    {gotoxy(65,i);
    textcolor(12);
    textbackground(4);
    cprintf("%c",'|');}}
    /*end mile*/
    void mohre(int n)
    {
    int x,y=22;
    x=15-n;
    for(int i=n;i>=1;i--)
    {gotoxy(x,y);
    for(int j=2*i+1;j>=1;j--)
    {textcolor(1);
    cprintf("%c",219);}
    x++;
    y--;}
    mile();
    }
    /*end mohre*/
    void counter(char from,char to)
    {
    switch(from)
    {
    case 'L':counterL--;break;
    case 'R':counterR--;break;
    case 'C':counterC--;break;}
    switch(to)
    {
    case 'L':counterL++;break;
    case 'R':counterR++;break;
    case 'C':counterC++;break;}
    }
    /*end counter*/
    
    void move(int n,char from,char to,int counterL,int counterC,int counterR)
    {int x,y,x1,y1,x2;
    switch(from)
    {
    case 'C':x=40-n;y=22-counterC;pak(n,x,y);break;
    case 'L':x=15-n;y=22-counterL;pak(n,x,y);break;
    case 'R':x=65-n;y=22-counterR;pak(n,x,y);break;}
    switch(to)
    {
    case 'C':x1=40-n;y1=23-counterC;break;
    case 'L':x1=15-n;y1=23-counterL;break;
    case 'R':x1=65-n;y1=23-counterR;break;}
    while(y>=10)
    {y-=1;
    chap(n,x,y);
    sleep(0.5);
    pak(n,x,y);}
    //------------------------------------------------------------
    x2=x1-x;
    if(x2>0)
    {for(int i=1;i<=x2;i++)
    {chap(n,x,y);
     sleep(0.25);
     pak(n,x,y);
     x+=1;}}
    //-------------------------------------------------------------
     else{
     for(int i=1;i<=-x2;i++)
    {chap(n,x,y);
     sleep(0.25);
     pak(n,x,y);
     x-=1;}}
    //---------------------------------------------------------------
    while(y<y1)
    {y+=1;
    chap(n,x,y);
    sleep(0.5);
    pak(n,x,y);}
    
    switch(to)
    {
    case 'C':x1=40-n;y1=23-counterC;chap(n,x1,y1);break;
    case 'L':x1=15-n;y1=23-counterL;chap(n,x1,y1);break;
    case 'R':x1=65-n;y1=23-counterR;chap(n,x1,y1);break;}
    }
    /*end move*/
    void pak(int n,int x,int y)
    {
    for(int i=1;i<=2*n+1;i++)
    {gotoxy(x,y);
    textcolor(7);
    cprintf("%c",219);
    x++;}}
    /*end pak*/
    void chap(int n,int x,int y)
    {
    for(int i=1;i<=2*n+1;i++)
    {gotoxy(x,y);
    textcolor(1);
    cprintf("%c",219);
    x++;
    }
    mile();
    }
    /*end chap*/
    برای کنترل سرعت عدد توی توابع sleep رو دستکاری کنید:)

  2. کاربر روبرو از پست مفید soroush_tayyebi سپاس کرده است .

    Persian Boy (02-11-2010)

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

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

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

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

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