Trang 1 trên tổng số 2 12 Cuối cùngCuối cùng
Từ 1 tới 10 trên tổng số 14 kết quả

Đề tài: Mô phỏng bài toán mã đi tuần

  1. #1
    Ngày gia nhập
    02 2008
    Bài viết
    6

    Mặc định Mô phỏng bài toán mã đi tuần

    Tui có bài tập là mô phỏng bài toán mã đi tuần bằng đồ họa với số ô cờ và vị trí mã nhập từ bàn phím.
    Code bài toán thì tui biết nhưng mô phỏng nó bằng đồ họa thì tui chịu vì tui hok rành đồ họa lắm (vẽ bàn cờ, cho quân cờ di chuyển ...)
    Ai biết xin chỉ giáo dùm !
    Thanks !

  2. #2
    Ngày gia nhập
    07 2007
    Nơi ở
    Sơn La
    Bài viết
    133

    Trích dẫn Nguyên bản được gửi bởi nc4ever Xem bài viết
    Tui có bài tập là mô phỏng bài toán mã đi tuần bằng đồ họa với số ô cờ và vị trí mã nhập từ bàn phím.
    Code bài toán thì tui biết nhưng mô phỏng nó bằng đồ họa thì tui chịu vì tui hok rành đồ họa lắm (vẽ bàn cờ, cho quân cờ di chuyển ...)
    Ai biết xin chỉ giáo dùm !
    Thanks !
    Bạn có thể tham khảo bài của tôi, hồi đó vừa đọc về linklist nên dùng nó để lưu cấu hình sinh. Định vẽ con mã và dùng chuột để kéo thả vị trí nhưng chưa có thời gian làm(cái này thì đơn giản thôi), bạn có thể thêm bớt vào.
    Bài này hồi đó mới học chưa được nhiều nên viết code còn chưa khoa học và chưa tạo tệp header(*.h).
    Còn thuật toán bạn có thể xem bài knight's tour của rr ấy(mình cũng chưa kịp đọc bài của rr, có gì mình sẽ trao đổi sau).
    Tệp GRAPHICS.CPP
    C Code:
    1. #include "conio.h"
    2. #include "stdio.h"
    3. #include "stdlib.h"
    4. #include "graphics.h"
    5.  
    6. #define CL_khung RED
    7. #define  MAXX getmaxx()
    8. #define  MAXY getmaxy()
    9. #define  SIZE 50
    10.  
    11.  
    12. extern int hn,hd,x,y;
    13.  
    14. void Fill(int i,int j)//to o ban co
    15.  {
    16.     if((i+j)%2==0) {                setfillstyle(SOLID_FILL,MAGENTA);
    17.                      floodfill(j*SIZE+35,MAXY-i*SIZE-35,WHITE);
    18.                   }
    19.             else {
    20.                      setfillstyle(SOLID_FILL,CYAN);
    21.                      floodfill(j*SIZE+35,MAXY-i*SIZE-35,WHITE);
    22.                   }
    23.  }
    24.  
    25. extern void ban_co(int a=1,int b=0)    //ve ban co
    26.  {
    27.      int i,j;
    28.         setcolor(WHITE);
    29.     for(i=0;i<hd;i++)
    30.         for( j=0;j<hn;j++)
    31.          {
    32.               if(a){
    33.             rectangle(j*SIZE+10,MAXY-i*SIZE-10,(j+1)*SIZE+10,MAXY-(i+1)*SIZE-10);
    34.                 }
    35.               Fill(i,j);//fill pane
    36.               if(b) {
    37.                    setcolor(YELLOW);
    38.                 circle(j*SIZE+10+SIZE/2,MAXY-i*SIZE-10-SIZE/2,14);
    39.                  }
    40.          }
    41.  }
    42.  
    43. void khung()//ve khung
    44.  {
    45.   //khung va nen
    46.   setcolor(CL_khung);
    47.   rectangle(0,0,MAXX,MAXY);
    48.  
    49.   setfillstyle(SOLID_FILL,BLACK+BLUE);
    50.   floodfill(1,1,CL_khung);
    51.   //bong do 3D cho ban co
    52.   setfillstyle(1,BLACK+DARKGRAY);
    53.   bar(hn*SIZE+10,MAXY-5,hn*SIZE+15,MAXY-hd*SIZE-5);//doc
    54.   bar(15,MAXY-5,hn*SIZE+10,MAXY-10);//ngang
    55.  }

    Tệp TESTRUN.CPP
    C Code:
    1. #include <stdio.h>
    2. #include <stdlib.h>
    3. #include <conio.h>
    4. #include <alloc.h>
    5. #include <string.h>
    6. #include <iostream.h>
    7. #include <graphics.h>
    8. #define MAXX getmaxx()
    9. #define MAXY getmaxy()
    10. #define SIZE 50
    11.  
    12. int a[12][12];
    13. int hn,hd,x,y;
    14. int O_FREE=0;
    15. unsigned socach;
    16.  
    17. struct save{
    18.  int A[8][8];
    19.   save *tiep;
    20. };
    21. save *luu1,*luu2;
    22. int state=0;
    23.  
    24. extern void luu_ban_co(){
    25. socach++;
    26. if(state==0) {
    27.   luu1=(struct save *) malloc(sizeof(save));
    28.   luu2=luu1;
    29.       for(int i=0;i<hd;i++)
    30.        for(int j=0;j<hn;j++)
    31.      luu1->A[i][j]=a[i+2][j+2];
    32.   state=1;
    33.   luu1->tiep=NULL;
    34. }
    35.  luu1=luu2;
    36.   while(luu1->tiep!=NULL) luu1=luu1->tiep;
    37.    luu1->tiep=(struct save*)malloc(sizeof(save));
    38.     luu1=luu1->tiep;
    39.       for(int i=0;i<hd;i++)
    40.        for(int j=0;j<hn;j++)
    41.      luu1->A[i][j]=a[i+2][j+2];
    42.      luu1->tiep=NULL;
    43. }
    44.  
    45. extern void ban_co(int a,int b);
    46.  
    47.  //not graphics
    48. int  HC[8][2]={-2,1,-1,2, 1, 2,2,1,2,-1,1,-2,-1,-2,-2,-1};
    49.  
    50. void khoi_tao(){
    51.  int i,j;
    52.   for(i=0;i<hd+4;i++)
    53.     for(j=0;j<hn+4;j++)
    54.      a[i][j]=-1;
    55.  
    56.   for(i=2;i<hd+2;i++)
    57.     for(j=2;j<hn+2;j++)
    58.      a[i][j]=O_FREE;
    59.   a[y+1][x+1]=1;
    60.  }
    61.  
    62. void WriteResult()//viet ket qua
    63. {
    64.    luu1=luu2;
    65.    char *ch,*ch1;
    66.    int i,j;
    67.    unsigned sc=1;
    68.  
    69.    setcolor(RED);
    70.    outtextxy(20,50,"So cot :");
    71.    outtextxy(130,50,itoa(hn,ch1,10));
    72.    outtextxy(20,60,"So hang:");
    73.    outtextxy(130,60,itoa(hd,ch1,10));
    74.    outtextxy(20,70,"Vi tri dat ma:[   ][   ]");
    75.    setcolor(YELLOW);
    76.    outtextxy(148,70,itoa(x,ch1,10));
    77.    setcolor(CYAN);
    78.    outtextxy(188,70,itoa(y,ch1,10));
    79.  
    80.    setcolor(WHITE);
    81.    outtextxy(20,20,"Ban hay bam phim bat ky de xem ket qua");
    82.    outtextxy(20,30,"Co tat ca:");
    83.      outtextxy(110,30,itoa(socach,ch1,10));
    84.    setcolor(WHITE);
    85.    outtextxy(20,40,"Cach thu:");
    86.  
    87.    while(luu1->tiep!=NULL){
    88.    getch();
    89.    ban_co(0,1);//xoa khi nhay sang buoc khac
    90.         //  j*SIZE+10,MAXY-i*SIZE-10 j*SIZE+10+SIZE/2,MAXY-i*SIZE-10-SIZE/2
    91.     setfillstyle(SOLID_FILL,RED);//tao vi tri con ma dau tien
    92.      floodfill((x-1)*SIZE+10+SIZE/2,MAXY-(hd-y)*SIZE-10-SIZE/2,YELLOW);
    93.  
    94.    setfillstyle(SOLID_FILL,BLUE);
    95.    bar( 108,39,108+strlen(itoa(sc,ch1,10))*8+2,49);
    96.     outtextxy(110,40,itoa(sc,ch1,10));//hien cach chay thu..n..cua con ma
    97.  
    98.   setcolor(BLACK);
    99.   for(i=0;i<hd;i++)
    100.      for(j=0;j<hn;j++)
    101.       outtextxy(j*SIZE+SIZE/2+5,MAXY-(hd-i)*SIZE-15+SIZE/2,itoa(luu1->A[i][j],ch,10));
    102.   luu1=luu1->tiep;
    103.   sc++;
    104.   }
    105.  }
    106.  
    107. void Try(int sb,int u,int v)//thu cac buoc chay cua Ma
    108. {
    109.   int i,uu,vv;
    110.   for(i=0;i<8;i++)
    111.     {
    112.       uu=u+HC[i][0];
    113.       vv=v+HC[i][1];
    114.        if(a[uu][vv]==O_FREE){
    115.       a[uu][vv]=sb;
    116.       if(sb==hn*hd) luu_ban_co();
    117.        else  Try(sb+1,uu,vv);
    118.           a[uu][vv]=O_FREE;
    119.        }
    120.     }
    121. }
    122.  
    123. extern void ma_di_tuan()
    124.  {
    125.      khoi_tao();
    126.      Try(2,y+1,x+1);
    127.      if(state) WriteResult();
    128.      setcolor(WHITE);
    129.      outtextxy(MAXX/2,MAXY/2,"THE END");
    130.      getch();
    131.  }

    Tệp Main.cpp
    C Code:
    1. #include <graphics.h>
    2. #include <stdio.h>
    3. #include <iostream.h>
    4. #include <conio.h>
    5.  
    6. void ban_co(int a,int b);
    7. void khung();
    8. void ma_di_tuan();
    9. extern int hn,hd,x,y;
    10.  
    11. extern int dong_y(int a,int b)
    12.  {
    13.    if(a>=1&&a<=b) return 1;
    14.    else  return 0;
    15.  }
    16.  
    17.  //function main
    18. main()
    19. {
    20.  cout<<"NHAP KICH THUOC CUA BAN CO (!;;!)"<<endl;
    21.   do{
    22.      cout<<"Nhap hang ngang cua ban co (!;;! voi 3<=hang<=8)"<<endl;
    23.       cin>>hn;
    24.       if(hn<3) hn=0;
    25.      }while(!dong_y(hn,8));
    26.   do{
    27.      cout<<"Nhap hang doc cua ban co (!;;! voi 3<=cot<=8)"<<endl;
    28.       cin>>hd;
    29.       if(hd<3) hd=0;
    30.      }while(!dong_y(hd,8));
    31.    cout<<"NHAP TOA DO CUA CON MA (!;;!)"<<endl;
    32.      do{
    33.     cout<<"Nhap vao toa do X (!;;! voi 1<=X<="<<hn<<"):"<<endl;
    34.      cin>>x;
    35.      }while(!dong_y(x,hn));
    36.      do{
    37.     cout<<"Nhap vao toa do Y (!;;! voi 1<=Y<="<<hd<<"):"<<endl;
    38.      cin>>y;
    39.      }while(!dong_y(y,hd));
    40.  
    41.   int mh=DETECT,kieu;
    42.   initgraph(&mh,&kieu,"c:\\tc\\bgi");
    43.   khung();//khung
    44.   ban_co(1,0);//ban co
    45.   ma_di_tuan();
    46.   closegraph();
    47.   return 0;
    48. }
    bạn save với tệp nào cũng được ,rồi tạo project và add nó vào là được.
    Đã được chỉnh sửa lần cuối bởi NT_OnlyLove : 27-02-2008 lúc 09:00 AM.
    Trao đổi kiến thức sẽ giúp ta tiếp cận nhanh với kiến thức.

  3. #3
    Ngày gia nhập
    02 2008
    Bài viết
    6

    Cảm ơn bác rất nhiều, thế cái đồ họa trên cũng có thể áp dụng với bài 8 quân hậu đúng không ?
    Bác có bài 8 quân hậu chi tiết không ?

  4. #4
    Ngày gia nhập
    07 2007
    Nơi ở
    Sơn La
    Bài viết
    133

    Trích dẫn Nguyên bản được gửi bởi nc4ever Xem bài viết
    Cảm ơn bác rất nhiều, thế cái đồ họa trên cũng có thể áp dụng với bài 8 quân hậu đúng không ?
    Bác có bài 8 quân hậu chi tiết không ?
    h0h0, tất nhiên mà bạn vì nó cũng là bàn cờ mà.
    Bạn có thể tham khảo bài 8 hậu, mình cũng làm khá lâu rùi.
    C++ Code:
    1. #include <iostream.h>
    2. #include <stdlib.h>
    3. #include <string.h>
    4. #include <conio.h>
    5. #include <stdio.h>
    6. #include <dos.h>
    7. #include <math.h>
    8. #include <alloc.h>
    9. #define o_free 0
    10. #include <graphics.h>
    11. #define SIZE 50
    12.  
    13. void khung();
    14. void ban_co();
    15. int Pane[8][8];//ban co 8*8
    16. int sc,state=0;
    17. struct tao_do{
    18.  int x[8],y[8];
    19. };
    20. struct save{
    21.  tao_do Hau;
    22.  save *next;
    23. };
    24.  save *dau,*temp,*cuoi;
    25. void luu(){
    26.           sc++;
    27.           if(dau==NULL)
    28.             {
    29.         dau=(struct save*)malloc(sizeof(save));
    30.          cuoi=dau;
    31.            cuoi->Hau=temp->Hau;
    32.         cuoi->next=NULL;
    33.             }else{
    34.          cuoi=dau;
    35.          while(cuoi->next!=NULL) cuoi=cuoi->next;
    36.            cuoi->next=(struct save*)malloc(sizeof(save));
    37.               cuoi=cuoi->next;
    38.              cuoi->Hau=temp->Hau;
    39.          cuoi->next=NULL;
    40.              }//end E
    41.      return;
    42.   }
    43. void khoi_tao(){
    44.   for(int i=0;i<8;i++)
    45.      for(int j=0;j<8;j++)
    46.         Pane[i][j]=o_free;
    47.          sc=0;
    48.            temp=(struct save*)malloc(sizeof(save));
    49.          dau=NULL;
    50.       return ;
    51. }
    52.  
    53. void xoa(int hn){
    54.     for(int i=0;i<8;i++)
    55.      for(int j=0;j<8;j++)
    56.       if(Pane[i][j]==hn+1) Pane[i][j]=o_free;
    57.      return ;
    58. }
    59.  
    60. void write_result(){
    61.   char *ch;
    62.   int J=1;
    63.    setcolor(RED);
    64.      outtextxy(100,10,itoa(sc,ch,10));
    65.       setcolor(WHITE);
    66.       rectangle(96, 6,102+(strlen(itoa(sc,ch,10)))*8,20);
    67.      rectangle(96,22,102+(strlen(itoa(sc,ch,10)))*8,34);
    68.     cuoi=dau;
    69.   while(cuoi!=NULL){
    70.       setfillstyle(SOLID_FILL,YELLOW);
    71.       floodfill(97,25,WHITE);
    72.       setcolor(CYAN);
    73.       if( J <10 ){
    74.       outtextxy(100,24,"0");
    75.       outtextxy(110,24,itoa(J,ch,10));
    76.       }else outtextxy(100,24,itoa(J,ch,10));
    77.       ban_co();
    78.       setcolor(YELLOW);
    79.       for(int i=0;i<8;i++)
    80.       circle((cuoi->Hau.x[i]-1)*SIZE+10+SIZE/2,getmaxy()-(cuoi->Hau.y[i]-1)*SIZE-10-SIZE/2,14);
    81.       cuoi=cuoi->next;
    82.       ++J;
    83.       getch();
    84.     }
    85.   return ;
    86. }
    87.  
    88. void da_di(int hn,int hd){
    89.     for(int i=0;i<8;i++)
    90.      for(int j=0;j<8;j++)
    91.       {
    92.         if(abs(j-hn)==abs(i-hd)&& Pane[i][j]==o_free) Pane[i][j]=hn+1;
    93.         if(i==hd && Pane[i][j]==o_free)               Pane[i][j]=hn+1;
    94.         if(j==hn && Pane[i][j]==o_free)               Pane[i][j]=hn+1;
    95.       }
    96.      return ;
    97. }
    98.  
    99. void run(int tt)
    100. {
    101.   for(int i=0;i<8;i++)
    102.   {
    103.     if(tt==8) { luu();break;}//co the dung cach khac voi if(tt==8)...
    104.      else{                   //nhu vay chuong trinh se toi uu hon
    105.       if(Pane[i][tt]==o_free)//do do can mot for o fc luu();
    106.          {
    107.             temp->Hau.x[tt]=tt+1;
    108.              temp->Hau.y[tt]=i+1;
    109.               da_di(tt,i);
    110.              run(tt+1);
    111.             xoa(tt);
    112.           }
    113.             }//end else
    114.     }//end if  1
    115. }
    116.  
    117. main(){
    118.   int mh=DETECT,kieu;
    119.     initgraph(&mh,&kieu,"c:\\tc\\bgi");
    120. khung();
    121. khoi_tao();
    122. run(0);
    123. write_result();
    124. closegraph();
    125. return 0;
    126. }
    Trao đổi kiến thức sẽ giúp ta tiếp cận nhanh với kiến thức.

  5. #5
    Ngày gia nhập
    02 2008
    Bài viết
    6

    Bác góp ý cho tui về cách này nhé, tui muốn có thể nhập tọa độ của quân hậu đầu nữa nhưng vẫn chưa biết nên cho vào đâu :
    C Code:
    1. #include<stdio.h>
    2. #include<conio.h>
    3. #include<dos.h>
    4. #include<graphics.h>
    5.  
    6. int a[8][8];
    7. int hau = 4, an =10;
    8. int width = 60;
    9. int color = 15;
    10.  
    11. void kddh()
    12. {
    13.     int gdriver = DETECT, gmode, errorcode;
    14.     initgraph(&gdriver, &gmode, "d:\\learning\\laptrinh\\TC30\\BGI");
    15.     errorcode = graphresult();
    16.     if (errorcode != grOk)  /* an error occurred */
    17.     {
    18.         printf("Graphics error: %s\n", grapherrormsg(errorcode));
    19.         printf("Press any key to halt:");
    20.         getch();
    21.         return;
    22.     }
    23. }
    24.  
    25. void xuat1vt(int d,int c)
    26. {
    27.     // setcolor(4);
    28.     if (a[d][c]==1) //ascii = 2
    29.     {
    30.         setfillstyle(1, 10);
    31.         fillellipse (c*width+30, d*width+30, 15, 10);
    32.         //settextstyle(1, HORIZ_DIR, 5);
    33.         //outtextxy(c*width + 10, d*width + 10, "Û");
    34.     }
    35.     else           //ascii = 1
    36.     {
    37.         setfillstyle(1, 4);
    38.         bar(c*width + 10, d*width + 10, c*width+50, d*width+50);
    39.         //settextstyle(1, HORIZ_DIR, 5);
    40.         //outtextxy(c*width + 10, d*width + 10, "N");
    41.     }
    42.     delay(50);
    43. }
    44.  
    45. void antrai(int d,int c)
    46. {
    47.     c--; //di qua trai
    48.     while (c>=0) //bien trai
    49.     if (a[d][c])
    50.         c--;
    51.     else
    52.     {
    53.         a[d][c]=1;
    54.         xuat1vt(d,c--);
    55.         delay(400);
    56.     }
    57. }
    58.  
    59. void anphai(int d,int c)
    60. {
    61.     c++;
    62.     while (c<8) //bien phai
    63.         if (a[d][c])
    64.             c++;
    65.         else
    66.         {
    67.             a[d][c]=1;
    68.             xuat1vt(d,c++);
    69.             delay(400);
    70.         }
    71. }
    72.  
    73. void anxuong(int d,int c)
    74. {
    75.     d++;
    76.     while(d<8)
    77.     if (a[d][c])
    78.         d++;
    79.     else
    80.     {
    81.         a[d][c]=1;
    82.         xuat1vt(d++,c);
    83.         delay(400);
    84.     }
    85. }
    86.  
    87. void ancheo6(int d,int c)
    88. {
    89.     d++;c++;
    90.     while (d<8&&c<8) //trong khi con nam trong ban co
    91.         if (a[d][c])
    92.         {
    93.             c++;
    94.             d++;
    95.             delay(400);
    96.         }
    97.         else
    98.         {
    99.             a[d][c]=1;
    100.             xuat1vt(d++,c++);
    101.             delay(400);
    102.         }
    103. }
    104.  
    105. void ancheo8(int d,int c)
    106. {
    107.     d++;
    108.     c--;
    109.     while (d<8&&c>=0)
    110.     if (a[d][c])
    111.     {
    112.         d++;
    113.         c--;
    114.     }
    115.     else
    116.     {
    117.     a[d][c]=1;
    118.         xuat1vt(d++,c--);
    119.         delay(400);
    120.     }
    121. }
    122.  
    123. void dat1hau(int d,int c)
    124. {
    125.     a[d][c]=2;
    126.     xuat1vt(d,c);
    127.     antrai(d,c);
    128.     anphai(d,c);
    129.     anxuong(d,c);
    130.     ancheo6(d,c);
    131.     ancheo8(d,c);
    132.     delay(400);
    133. }
    134.  
    135. int demcheo8(int d,int c)
    136. {
    137.     int dem=0;
    138.     d++;
    139.     c--;
    140.     while (d<8&&c>=0)
    141.     if (a[d++][c--]==0)
    142.         dem++;
    143.     return dem;
    144. }
    145.  
    146. int demcheo6(int d,int c)
    147. {
    148.     int dem=0;
    149.     d++;
    150.     c++;
    151.     while (d<8&&c<8)
    152.     if (a[d++][c++]==0)
    153.     dem++;
    154.     return dem;
    155. }
    156.  
    157. int demxuong(int d,int c)
    158. {
    159.     int dem=0;
    160.     d++;
    161.     while (d<8)
    162.     if (a[d++][c]==0)
    163.         dem++;
    164.     return dem;
    165. }
    166.  
    167. int dem_otrong(int d,int c)
    168. {
    169.     int dem=0;
    170.     dem+=demxuong(d,c);
    171.     dem+=demcheo6(d,c);
    172.     dem+=demcheo8(d,c);
    173.     return dem;
    174. }
    175.  
    176. int tim_otrong(int d,int c)
    177. {
    178.     while (a[d][c]&&c<8)//bo qua nhung o da dung
    179.         c++;
    180.     return c;    // c mang 2 gia tri 8:khong con trong ban co,
    181.                 // hoac <8:co 1 o trong tai vi tri c
    182. }
    183.  
    184. int timmin(int d)
    185. {
    186.     int min=65;//khoi tao gia tri tim min ->max
    187.     int vtc=8; //vi tri cot min
    188.     int c=0;//vua la vi tri bat dau xet tim o trong, vua la tri tra ve
    189.     while (c<8)
    190.     {
    191.         c = tim_otrong(d,c); //dong dang xet,cot bat dau
    192.         if (c<8)//co it nhat 1 o trong
    193.         {
    194.             int h=dem_otrong(d,c);
    195.             if (h<min)
    196.             {
    197.                 min=h; //cap nhat lai gia tri min
    198.                 vtc=c; //cap nhat lai vi tri min
    199.             }
    200.             c++; //tim o trong ke tiep
    201.         }
    202.     }
    203.     return vtc;
    204. }
    205.  
    206. int tamhau()
    207. {
    208.     dat1hau(0,3);
    209.     dat1hau(1,7);
    210.     dat1hau(2,0);
    211.     for (int d=3;d<8;d++) //dat 5 con hau con lai
    212.     {
    213.         int c=timmin(d); //tim o bang min thi chon
    214.         if (c>=8)
    215.         {
    216.             getch();
    217.             return 0;
    218.         } //khong tim thay o trong nao ca,retrun ve that bai
    219.         dat1hau(d,c); //dat hau vao vi tri vua tim duoc,cot thi tim min
    220.     }
    221.     getch();
    222.     return 1; //thanh cong
    223. }
    224.  
    225. void VeBC()
    226. {
    227.     setcolor(color);
    228.     rectangle(0, 0, width*8-1, width*8-1);
    229.     for (int i=0; i<8; i++)
    230.         for (int j=0; j<8; j++)
    231.             if ( (i%2==0 && j%2==0) || (i%2!=0 && j%2!=0) )
    232.             {
    233.                 setfillstyle(1, color);
    234.                 bar( j*width, i*width, j*width + width, i*width + width);
    235.             }
    236. }
    237.  
    238. void canhan()
    239. {
    240.     rectangle(500,15,630,470);//Vien lon
    241.     rectangle(497,13,633,473);//Vien nho
    242.     rectangle(510,25,620,60);//Ten chuong trinh
    243.     rectangle(510,70,620,240);//Mo ta chuong trinh
    244.     rectangle(510,70,620,90);//
    245.  
    246.     rectangle(510,250,620,400);//Tac gia
    247.     rectangle(510,410,620,460);//Ket qua
    248.     outtextxy(520,420,"Ket qua:");
    249.     setcolor(2);
    250.     settextstyle(2,HORIZ_DIR,5);
    251.     //sprintf(ng,"%d",ngay);
    252.     outtextxy(520,260,"Tac Gia:");
    253.     setcolor(YELLOW);
    254.     outtextxy(520,280,"Trong Bang");
    255.     setcolor(2);
    256.     //printf("\n");
    257.     outtextxy(520,310,"Lop:");
    258.     setcolor(YELLOW);
    259.     outtextxy(520,330,"DH-KHMT1-K1");setcolor(2);
    260.     outtextxy(520,360,"MSSV:");
    261.     setcolor(YELLOW);
    262.     outtextxy(520,380,"14106046");
    263.     //Ten chuong trinh
    264.     setcolor(RED);
    265.     settextstyle(13,HORIZ_DIR,7);
    266.     //sprintf(ng,"%d",ngay);
    267.     outtextxy(525,35,"BAI TAM HAU");
    268.     setcolor(2);
    269.     settextstyle(13,HORIZ_DIR,3);
    270.     outtextxy(545,80,"MO TA");
    271.     char *s[]={"Nhiem vu la","dat tam con","hau vao ban","co sao cho" ,
    272.         "khong co 2","con hau nao  ","an duoc nhau","theo luat",
    273.         "co vua"};
    274.     int x=110;
    275.     for (int k=0;k<=9;k++)
    276.     {
    277.         setcolor(15);
    278.         outtextxy(520,x,s[k]);
    279.         x+=10;
    280.     }
    281. }
    282.  
    283. void  main()
    284. {
    285.     clrscr();
    286.     kddh();
    287.     VeBC();
    288.     canhan();
    289.     int kq=tamhau();
    290.     if (kq)
    291.         outtextxy(520, 435, "Thanh cong"); //kq==1:thanh cong
    292.     else
    293.         outtextxy(520, 435, "Ko thanh cong"); //kq==0:that bai
    294.     getch();
    295. }
    Đã được chỉnh sửa lần cuối bởi nc4ever : 28-02-2008 lúc 09:16 PM.

  6. #6
    Ngày gia nhập
    02 2008
    Bài viết
    6

    Mặc định Mô phỏng bài toán mã đi tuần

    bác NT_OnlyLove giúp tui với !

  7. #7
    Ngày gia nhập
    07 2007
    Nơi ở
    Sơn La
    Bài viết
    133

    Trích dẫn Nguyên bản được gửi bởi nc4ever Xem bài viết
    bác NT_OnlyLove giúp tui với !
    Hix, bạn ơi. Mình đang làm một chương trình thi cho Khoa của mình bằng Flash.
    Mới đầu dự kiến 1/2 tháng, ai dè hôm wa họ bảo thứ 5 này phải có để duyệt rồi. very busy à.
    Thứ 6 này tổ chức xong việc của Khoa mình sẽ xem giúp bạn sau.
    Thông cảm nhé.
    Trao đổi kiến thức sẽ giúp ta tiếp cận nhanh với kiến thức.

  8. #8
    Ngày gia nhập
    02 2008
    Bài viết
    6

    Các bác giúp em với !!!!!!

  9. #9
    Ngày gia nhập
    03 2008
    Bài viết
    4

    Trích dẫn Nguyên bản được gửi bởi NT_OnlyLove Xem bài viết
    Bạn có thể tham khảo bài của tôi, hồi đó vừa đọc về linklist nên dùng nó để lưu cấu hình sinh. Định vẽ con mã và dùng chuột để kéo thả vị trí nhưng chưa có thời gian làm(cái này thì đơn giản thôi), bạn có thể thêm bớt vào.
    Bài này hồi đó mới học chưa được nhiều nên viết code còn chưa khoa học và chưa tạo tệp header(*.h).
    Còn thuật toán bạn có thể xem bài knight's tour của rr ấy(mình cũng chưa kịp đọc bài của rr, có gì mình sẽ trao đổi sau).
    Tệp GRAPHICS.CPP
    C Code:
    1. #include "conio.h"
    2. #include "stdio.h"
    3. #include "stdlib.h"
    4. #include "graphics.h"
    5.  
    6. #define CL_khung RED
    7. #define  MAXX getmaxx()
    8. #define  MAXY getmaxy()
    9. #define  SIZE 50
    10.  
    11.  
    12. extern int hn,hd,x,y;
    13.  
    14. void Fill(int i,int j)//to o ban co
    15.  {
    16.     if((i+j)%2==0) {                setfillstyle(SOLID_FILL,MAGENTA);
    17.                      floodfill(j*SIZE+35,MAXY-i*SIZE-35,WHITE);
    18.                   }
    19.             else {
    20.                      setfillstyle(SOLID_FILL,CYAN);
    21.                      floodfill(j*SIZE+35,MAXY-i*SIZE-35,WHITE);
    22.                   }
    23.  }
    24.  
    25. extern void ban_co(int a=1,int b=0)    //ve ban co
    26.  {
    27.      int i,j;
    28.         setcolor(WHITE);
    29.     for(i=0;i<hd;i++)
    30.         for( j=0;j<hn;j++)
    31.          {
    32.               if(a){
    33.             rectangle(j*SIZE+10,MAXY-i*SIZE-10,(j+1)*SIZE+10,MAXY-(i+1)*SIZE-10);
    34.                 }
    35.               Fill(i,j);//fill pane
    36.               if(b) {
    37.                    setcolor(YELLOW);
    38.                 circle(j*SIZE+10+SIZE/2,MAXY-i*SIZE-10-SIZE/2,14);
    39.                  }
    40.          }
    41.  }
    42.  
    43. void khung()//ve khung
    44.  {
    45.   //khung va nen
    46.   setcolor(CL_khung);
    47.   rectangle(0,0,MAXX,MAXY);
    48.  
    49.   setfillstyle(SOLID_FILL,BLACK+BLUE);
    50.   floodfill(1,1,CL_khung);
    51.   //bong do 3D cho ban co
    52.   setfillstyle(1,BLACK+DARKGRAY);
    53.   bar(hn*SIZE+10,MAXY-5,hn*SIZE+15,MAXY-hd*SIZE-5);//doc
    54.   bar(15,MAXY-5,hn*SIZE+10,MAXY-10);//ngang
    55.  }

    Tệp TESTRUN.CPP
    C Code:
    1. #include <stdio.h>
    2. #include <stdlib.h>
    3. #include <conio.h>
    4. #include <alloc.h>
    5. #include <string.h>
    6. #include <iostream.h>
    7. #include <graphics.h>
    8. #define MAXX getmaxx()
    9. #define MAXY getmaxy()
    10. #define SIZE 50
    11.  
    12. int a[12][12];
    13. int hn,hd,x,y;
    14. int O_FREE=0;
    15. unsigned socach;
    16.  
    17. struct save{
    18.  int A[8][8];
    19.   save *tiep;
    20. };
    21. save *luu1,*luu2;
    22. int state=0;
    23.  
    24. extern void luu_ban_co(){
    25. socach++;
    26. if(state==0) {
    27.   luu1=(struct save *) malloc(sizeof(save));
    28.   luu2=luu1;
    29.       for(int i=0;i<hd;i++)
    30.        for(int j=0;j<hn;j++)
    31.      luu1->A[i][j]=a[i+2][j+2];
    32.   state=1;
    33.   luu1->tiep=NULL;
    34. }
    35.  luu1=luu2;
    36.   while(luu1->tiep!=NULL) luu1=luu1->tiep;
    37.    luu1->tiep=(struct save*)malloc(sizeof(save));
    38.     luu1=luu1->tiep;
    39.       for(int i=0;i<hd;i++)
    40.        for(int j=0;j<hn;j++)
    41.      luu1->A[i][j]=a[i+2][j+2];
    42.      luu1->tiep=NULL;
    43. }
    44.  
    45. extern void ban_co(int a,int b);
    46.  
    47.  //not graphics
    48. int  HC[8][2]={-2,1,-1,2, 1, 2,2,1,2,-1,1,-2,-1,-2,-2,-1};
    49.  
    50. void khoi_tao(){
    51.  int i,j;
    52.   for(i=0;i<hd+4;i++)
    53.     for(j=0;j<hn+4;j++)
    54.      a[i][j]=-1;
    55.  
    56.   for(i=2;i<hd+2;i++)
    57.     for(j=2;j<hn+2;j++)
    58.      a[i][j]=O_FREE;
    59.   a[y+1][x+1]=1;
    60.  }
    61.  
    62. void WriteResult()//viet ket qua
    63. {
    64.    luu1=luu2;
    65.    char *ch,*ch1;
    66.    int i,j;
    67.    unsigned sc=1;
    68.  
    69.    setcolor(RED);
    70.    outtextxy(20,50,"So cot :");
    71.    outtextxy(130,50,itoa(hn,ch1,10));
    72.    outtextxy(20,60,"So hang:");
    73.    outtextxy(130,60,itoa(hd,ch1,10));
    74.    outtextxy(20,70,"Vi tri dat ma:[   ][   ]");
    75.    setcolor(YELLOW);
    76.    outtextxy(148,70,itoa(x,ch1,10));
    77.    setcolor(CYAN);
    78.    outtextxy(188,70,itoa(y,ch1,10));
    79.  
    80.    setcolor(WHITE);
    81.    outtextxy(20,20,"Ban hay bam phim bat ky de xem ket qua");
    82.    outtextxy(20,30,"Co tat ca:");
    83.      outtextxy(110,30,itoa(socach,ch1,10));
    84.    setcolor(WHITE);
    85.    outtextxy(20,40,"Cach thu:");
    86.  
    87.    while(luu1->tiep!=NULL){
    88.    getch();
    89.    ban_co(0,1);//xoa khi nhay sang buoc khac
    90.         //  j*SIZE+10,MAXY-i*SIZE-10 j*SIZE+10+SIZE/2,MAXY-i*SIZE-10-SIZE/2
    91.     setfillstyle(SOLID_FILL,RED);//tao vi tri con ma dau tien
    92.      floodfill((x-1)*SIZE+10+SIZE/2,MAXY-(hd-y)*SIZE-10-SIZE/2,YELLOW);
    93.  
    94.    setfillstyle(SOLID_FILL,BLUE);
    95.    bar( 108,39,108+strlen(itoa(sc,ch1,10))*8+2,49);
    96.     outtextxy(110,40,itoa(sc,ch1,10));//hien cach chay thu..n..cua con ma
    97.  
    98.   setcolor(BLACK);
    99.   for(i=0;i<hd;i++)
    100.      for(j=0;j<hn;j++)
    101.       outtextxy(j*SIZE+SIZE/2+5,MAXY-(hd-i)*SIZE-15+SIZE/2,itoa(luu1->A[i][j],ch,10));
    102.   luu1=luu1->tiep;
    103.   sc++;
    104.   }
    105.  }
    106.  
    107. void Try(int sb,int u,int v)//thu cac buoc chay cua Ma
    108. {
    109.   int i,uu,vv;
    110.   for(i=0;i<8;i++)
    111.     {
    112.       uu=u+HC[i][0];
    113.       vv=v+HC[i][1];
    114.        if(a[uu][vv]==O_FREE){
    115.       a[uu][vv]=sb;
    116.       if(sb==hn*hd) luu_ban_co();
    117.        else  Try(sb+1,uu,vv);
    118.           a[uu][vv]=O_FREE;
    119.        }
    120.     }
    121. }
    122.  
    123. extern void ma_di_tuan()
    124.  {
    125.      khoi_tao();
    126.      Try(2,y+1,x+1);
    127.      if(state) WriteResult();
    128.      setcolor(WHITE);
    129.      outtextxy(MAXX/2,MAXY/2,"THE END");
    130.      getch();
    131.  }

    Tệp Main.cpp
    C Code:
    1. #include <graphics.h>
    2. #include <stdio.h>
    3. #include <iostream.h>
    4. #include <conio.h>
    5.  
    6. void ban_co(int a,int b);
    7. void khung();
    8. void ma_di_tuan();
    9. extern int hn,hd,x,y;
    10.  
    11. extern int dong_y(int a,int b)
    12.  {
    13.    if(a>=1&&a<=b) return 1;
    14.    else  return 0;
    15.  }
    16.  
    17.  //function main
    18. main()
    19. {
    20.  cout<<"NHAP KICH THUOC CUA BAN CO (!;;!)"<<endl;
    21.   do{
    22.      cout<<"Nhap hang ngang cua ban co (!;;! voi 3<=hang<=8)"<<endl;
    23.       cin>>hn;
    24.       if(hn<3) hn=0;
    25.      }while(!dong_y(hn,8));
    26.   do{
    27.      cout<<"Nhap hang doc cua ban co (!;;! voi 3<=cot<=8)"<<endl;
    28.       cin>>hd;
    29.       if(hd<3) hd=0;
    30.      }while(!dong_y(hd,8));
    31.    cout<<"NHAP TOA DO CUA CON MA (!;;!)"<<endl;
    32.      do{
    33.     cout<<"Nhap vao toa do X (!;;! voi 1<=X<="<<hn<<"):"<<endl;
    34.      cin>>x;
    35.      }while(!dong_y(x,hn));
    36.      do{
    37.     cout<<"Nhap vao toa do Y (!;;! voi 1<=Y<="<<hd<<"):"<<endl;
    38.      cin>>y;
    39.      }while(!dong_y(y,hd));
    40.  
    41.   int mh=DETECT,kieu;
    42.   initgraph(&mh,&kieu,"c:\\tc\\bgi");
    43.   khung();//khung
    44.   ban_co(1,0);//ban co
    45.   ma_di_tuan();
    46.   closegraph();
    47.   return 0;
    48. }
    bạn save với tệp nào cũng được ,rồi tạo project và add nó vào là được.
    CÁC ANH ƠI EM LÀM NHƯ TRÊN NÀY SAO EM BỊ LỖI NÀY LÀ SAO HẢ CÁC ANH
    :: LINKER ERROR UNABLE OPEN FILE ' TCLASSS.LIB'
    thế là lỗi j thế các anh? sửa lỗi này như thế nào vậy chỉ em với?
    con tạo project và add nó vào là như thế nào

  10. #10
    Ngày gia nhập
    07 2007
    Nơi ở
    Sơn La
    Bài viết
    133

    Trích dẫn Nguyên bản được gửi bởi thuan_8x Xem bài viết
    CÁC ANH ƠI EM LÀM NHƯ TRÊN NÀY SAO EM BỊ LỖI NÀY LÀ SAO HẢ CÁC ANH
    :: LINKER ERROR UNABLE OPEN FILE ' TCLASSS.LIB'
    thế là lỗi j thế các anh? sửa lỗi này như thế nào vậy chỉ em với?
    con tạo project và add nó vào là như thế nào
    Bạn đã liên kết đồ họa chưa?
    options->linker->libraris->graphics labrary.
    Tạo project:
    Nếu bạn dùng VS ver *** thì mỗi lần nó đều bắt bạn tạo project rồi.
    Còn nếu for dos thì :
    Project->openproject->
    1.Nếu muốn mở một P có sẵn thì tìm và mở nó
    2.Chưa có ( tức tạo mới ) thì đặt một cái tên rùi OK
    (Sau khi tạo xong thì add hoặc creat *.c ( || *.cpp ) là được)
    Trao đổi kiến thức sẽ giúp ta tiếp cận nhanh với kiến thức.

Các đề tài tương tự

  1. Trả lời: 0
    Bài viết cuối: 03-10-2013, 02:02 PM
  2. Bài toán quân mã đi tuần
    Gửi bởi chuong01 trong diễn đàn Nhập môn lập trình C/C++
    Trả lời: 11
    Bài viết cuối: 24-02-2012, 04:58 PM
  3. Xác định tính tuần hoàn của một số .
    Gửi bởi materazzi trong diễn đàn Nhập môn lập trình C/C++
    Trả lời: 1
    Bài viết cuối: 04-06-2010, 11:44 AM
  4. Bài toán mã đi tuần
    Gửi bởi vanmeo trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 13
    Bài viết cuối: 28-05-2010, 10:11 AM
  5. code mã đi tuần bằng C | source code mã đi tuần
    Gửi bởi quangspk trong diễn đàn Dự án & Source code C#, ASP.NET
    Trả lời: 3
    Bài viết cuối: 11-03-2009, 12:08 AM

Quyền hạn của bạn

  • Bạn không thể gửi đề tài mới
  • Bạn không thể gửi bài trả lời
  • Bạn không thể gửi các đính kèm
  • Bạn không thể chỉnh sửa bài viết của bạn