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ố 18 kết quả

Đề tài: Code game Con rắn trong Text mode

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

    Mặc định Code game Con rắn trong Text mode

    Đây là game Rắn săn mồi viết trong Text mode , vì em mới làm quen với C nên ko biết xài Graphic.

    C Code:
    1. /*    SNAKE GAME
    2.    DHDL Van Lang
    3.    Class: K12T1
    4.    Total size: 8.5 KB
    5. */
    6.  
    7. #include<stdio.h>
    8. #include<conio.h>
    9. #include<dos.h>
    10. #include<stdlib.h>
    11. #include<ctype.h>
    12. #include<time.h>
    13.  
    14. // Directions of the Snake
    15. #define GO_UP     1
    16. #define GO_DOWN   2
    17. #define GO_RIGHT -1
    18. #define GO_LEFT  -2
    19.  
    20. //Arrow keys' code
    21. #define BT_UP    0x48 // button UP has code 0x48
    22. #define BT_DOWN  0x50
    23. #define BT_RIGHT 0x4d
    24. #define BT_LEFT  0x4b
    25.  
    26. //Limits
    27. #define TOP_LIM   3
    28. #define BOT_LIM   20  //Bottom limit
    29. #define LEFT_LIM  1
    30. #define RIGHT_LIM 40
    31.  
    32. #define len       3  //At the beginning, the Snake has 3 dots.
    33.  
    34. //Declarations
    35. typedef struct coord
    36. {
    37.     int x;
    38.     int y;
    39. } Point;
    40.  
    41. Point Snake[100]={LEFT_LIM+1,TOP_LIM+1,LEFT_LIM+1,TOP_LIM+1,LEFT_LIM+1,TOP_LIM+1}; //Define the Snake
    42. int intNew_len = len;
    43. int intHead    = len-1;    //its head is the 3th dot
    44. int intTail    = 0;        //its tail is the first dot
    45. int intDir     = GO_RIGHT; //At the beginning, the Snake's direction is to the RIGHT.
    46. int intScore   = 0;        //Eating one food, gaining one score, 10 scores for 1 level.
    47. int intLevel   = 1;        //if level+1,the speed will increase.
    48. int intAmount  = 10;       //if score > amount, level+1, amount+10
    49. int intSpeed   = 300;      //speed of the Snake, less -> faster, more -> slower
    50. char chrPress  = BT_RIGHT; //pressed button;
    51.  
    52. // Prototypes
    53. void drawYard(void);       // Draw playing yard
    54. int  onSnake(Point point); // Check whether a point is on the Snake
    55. void setLevel(void);       // Increase level
    56. void scoreCount(void);     // Count score
    57. void drawFood(void);       // Generate food
    58. void eatFood(void);        // Snake eats food
    59. void drawSnake(void);      // Draw beginning Snake
    60. void newHeadTail(void);    // After each move, the tail and head's positions are changed
    61. void moveSnake(char c);    // Make the Snake run
    62. int  checkStatus(int tempX,int tempY); // Check whether the Snake dies or not
    63. void refreshSnake(void);  // Snake after re-play
    64. void refreshScore(void); // Score after re-play
    65. void Dead(void);         // when the Snake dies
    66. char quitGame(void);     // say good bye
    67.  
    68.  
    69. void main()
    70. {
    71.     clrscr();
    72.     drawYard();
    73.     randomize();
    74.     drawFood();
    75.     drawSnake();
    76.     while(1)
    77.         {
    78.          play:
    79.  
    80.          while (!kbhit()) //While no key pressed
    81.             {
    82.                 moveSnake(chrPress);
    83.                 if (checkStatus(Snake[intHead].x,Snake[intHead].y)==1)
    84.                    {
    85.                      Dead();
    86.                      chrPress=BT_RIGHT;
    87.                      intDir = GO_RIGHT;//When re-play,the snake runs to the right
    88.                    }
    89.                 delay(intSpeed);
    90.  
    91.             }
    92.          chrPress= getch();
    93.          if(chrPress==0xd)
    94.             {
    95.             chrPress= quitGame();
    96.             if(chrPress=='N') goto play;
    97.             else if(chrPress=='Y')
    98.                     {
    99.                         clrscr();
    100.                         printf("Bye! Bye!");
    101.                         delay(500);
    102.                         exit(1);}
    103.             }
    104.         }
    105. }
    106.  
    107.  
    108. void drawYard() //Draw playing yard
    109. {
    110.     register int i;
    111.     //Trade mark
    112.     gotoxy(LEFT_LIM,TOP_LIM-2);
    113.     printf("Created by Chau Nguyen Thanh Vu~ T06-3546 K12T01");
    114.  
    115.     // Ve ÉÍÍÍÍÍÍÍÍÍ»
    116.     gotoxy(LEFT_LIM, TOP_LIM); // (10,5)
    117.     printf("%c",201); // Top left corner É
    118.  
    119.     for(i=LEFT_LIM+1; i<RIGHT_LIM; i++)
    120.         {
    121.           gotoxy(i,TOP_LIM);
    122.           printf("%c",205);    //Top horizonal line Í
    123.         }
    124.  
    125.     printf("%c",187); // Top right corner »
    126.  
    127.  
    128.     //Ve ÈÍÍÍÍÍÍÍÍÍͼ
    129.     gotoxy(LEFT_LIM, BOT_LIM); //(10,40)
    130.     printf("%c",200); // Bottom left corner È
    131.  
    132.     for(i=LEFT_LIM+1; i<RIGHT_LIM; i++)
    133.         printf("%c",205);  // Bottom horizonal line  Í
    134.  
    135.     printf("%c",188); //Bottom right corner ¼
    136.  
    137.     for(i=TOP_LIM+1; i<BOT_LIM; i++)
    138.         {
    139.           gotoxy(LEFT_LIM,i);
    140.           printf("%c",186); // Left vertical line º
    141.  
    142.         }
    143.  
    144.  
    145.     for(i=TOP_LIM+1; i<BOT_LIM; i++)
    146.         {
    147.           gotoxy(RIGHT_LIM,i);
    148.           printf("%c",186); // Right vertical line º
    149.         }
    150.  
    151.     //Instructions
    152.     gotoxy(RIGHT_LIM+2,TOP_LIM);
    153.     printf("Press any ARROW key to play");
    154.     gotoxy(RIGHT_LIM+2,TOP_LIM+2);
    155.     printf("Press ENTER to exit \n");
    156.     gotoxy(RIGHT_LIM+2,TOP_LIM+6);
    157.     printf("Speed: %3.d milisecs/step",intSpeed);
    158.  
    159.     //Title
    160.     gotoxy(LEFT_LIM+5,TOP_LIM);
    161.     printf(" Level %d ",intLevel);
    162.     gotoxy(LEFT_LIM+25,TOP_LIM);
    163.     printf(" Score %d ",intScore);
    164. }
    165.  
    166.  
    167. int onSnake(Point point)// Check whether a point is on the Snake
    168. {
    169.  register int i;
    170.  for(i=0;i<intNew_len-1;i++)
    171.     if( (point.x == Snake[i].x)&&(point.y == Snake[i].y) )
    172.         return 1;
    173.  return 0;
    174. }
    175.  
    176.  
    177. void setLevel()
    178. {
    179.     intScore++;
    180.  
    181.     if ( (intScore>=intAmount)&&
    182.          (intLevel<7) )         //Max level is 7, the Snake run crazily.
    183.         {
    184.          intAmount+= 10;
    185.          intLevel++;
    186.          intSpeed -= 49 ; //Decrease delay time, increase speed
    187.         }
    188.     if (intLevel == 7)
    189.         {
    190.           gotoxy(LEFT_LIM+14,TOP_LIM);
    191.           printf("(Max)");
    192.         }
    193.     gotoxy(LEFT_LIM+25,TOP_LIM);
    194.     printf(" Score: %d ",intScore);
    195.     gotoxy(LEFT_LIM+5,TOP_LIM);
    196.     printf(" Level %d ",intLevel);
    197.     gotoxy(RIGHT_LIM+2,TOP_LIM+6);
    198.     printf("Speed: %3.d milisecs/step",intSpeed);
    199. }
    200.  
    201. Point food = Snake[intHead];
    202. void drawFood()
    203. {
    204.  
    205.  while( (onSnake(food) != 0)||(food.x == 0) )
    206.         /* If food appears on the snake's body,
    207.            it must be re-generated until it appears
    208.            somewhere else */
    209.     {
    210.         food.x = LEFT_LIM+2+random(RIGHT_LIM - LEFT_LIM-3);
    211.         food.y = TOP_LIM+2+random(BOT_LIM - TOP_LIM-3);
    212.     }
    213.  gotoxy(food.x,food.y);
    214.  textcolor(CYAN);
    215.  cprintf("*");
    216.  return;
    217. }
    218.  
    219.  
    220. void eatFood()
    221. {
    222.  intNew_len++;
    223.  intHead++;
    224.  Snake[intHead].x = food.x;
    225.  Snake[intHead].y = food.y;
    226.  gotoxy(food.x,food.y);
    227.  textcolor(WHITE);
    228.  cprintf("@");
    229.  food = Snake[intHead-1]; // Put food on the snake's body, so that
    230.                        //   the drawFood() function can run
    231.  setLevel();
    232.  drawFood();
    233.  return;
    234. }
    235.  
    236.  
    237. void drawSnake() //At the beginning, the snake is a POINT.
    238. {
    239.  gotoxy(LEFT_LIM+1,TOP_LIM+1);
    240.  printf("@");
    241.  gotoxy(LEFT_LIM,TOP_LIM);
    242. }
    243.  
    244.  
    245. void newHeadTail() /* After each move, the intHead and the tail's positions
    246.                         are changed. */
    247. {
    248.     register int i;
    249.     for(i=0;i<intNew_len-1;i++)
    250.         Snake[i]= Snake[i+1];
    251. }
    252.  
    253.  
    254. char chrLast_button; //the last button pressed
    255.  
    256. void moveSnake(char chrButton)
    257. {
    258.  int arrow_pressed=0;
    259.  
    260.  while( arrow_pressed!=1 )
    261.     {
    262.        if(
    263.             (chrButton==BT_UP)||
    264.             (chrButton==BT_DOWN)||
    265.             (chrButton==BT_LEFT)||
    266.             (chrButton==BT_RIGHT)
    267.           )
    268.          {
    269.             gotoxy(Snake[intTail].x,Snake[intTail].y); //Erase the tail
    270.             textcolor(BLACK);
    271.             cprintf(" ");
    272.  
    273.             newHeadTail();
    274.  
    275.             switch (chrButton)
    276.               {
    277.                 case BT_UP:
    278.                     if( (intDir!=GO_DOWN)) /* While the Snake is going DOWN,
    279.                                               it cannot go UP. */
    280.                         {
    281.                             if ( (Snake[intHead].y-1 == food.y)&&
    282.                                  (Snake[intHead].x == food.x) )
    283.                               {
    284.                                 Snake[intHead].y -=1;
    285.                                 eatFood();
    286.                               }
    287.  
    288.                             Snake[intHead].y -=1;
    289.                             intDir = GO_UP;
    290.                         }
    291.                     else Snake[intHead].y +=1;
    292.                     break;
    293.  
    294.  
    295.                 case BT_DOWN:
    296.                     if( (intDir!=GO_UP) )
    297.                         {
    298.                             if ( (Snake[intHead].y+1 == food.y)&&
    299.                                  (Snake[intHead].x == food.x) )
    300.                               {
    301.                                 Snake[intHead].y +=1;
    302.                                 eatFood();
    303.                               }
    304.  
    305.                             Snake[intHead].y +=1;
    306.                             intDir = GO_DOWN;
    307.                         }
    308.                     else Snake[intHead].y -=1;
    309.                     break;
    310.                 case BT_LEFT:
    311.                     if( (intDir!=GO_RIGHT) )
    312.                         {
    313.                             if ( (Snake[intHead].x-1 == food.x)&&
    314.                                  (Snake[intHead].y == food.y) )
    315.                               {
    316.                                 Snake[intHead].x -=1;
    317.                                 eatFood();
    318.                               }
    319.  
    320.                             Snake[intHead].x -=1;
    321.                             intDir = GO_LEFT;
    322.                         }
    323.                     else Snake[intHead].x +=1;
    324.                     break;
    325.                 case BT_RIGHT:
    326.                     if( (intDir!=GO_LEFT) )
    327.                         {
    328.                             if ( (Snake[intHead].x+1 == food.x)&&
    329.                                  (Snake[intHead].y == food.y) )
    330.                               {
    331.                                 Snake[intHead].x +=1;
    332.                                 eatFood();
    333.                               }
    334.  
    335.                             Snake[intHead].x +=1;
    336.                             intDir = GO_RIGHT;
    337.                         }
    338.                     else Snake[intHead].x -=1;
    339.                     break;
    340.               }
    341.             chrLast_button = chrButton; //Remember the last ARROW key
    342.             gotoxy(Snake[intHead].x,Snake[intHead].y); //Draw intHead
    343.             textcolor(WHITE);
    344.             cprintf("@");
    345.             gotoxy(LEFT_LIM,TOP_LIM);
    346.             arrow_pressed=1;
    347.          }
    348.        else chrButton = chrLast_button; /* If the pressed key is not ARROW key,
    349.                             the snake uses the last ARROW key */
    350.     }
    351. }
    352.  
    353.  
    354. int checkStatus(int tempX,int tempY)
    355. {
    356.     if( (tempX <= LEFT_LIM)||
    357.         (tempX >= RIGHT_LIM) ||
    358.         (tempY <= TOP_LIM) ||
    359.         (tempY >= BOT_LIM) )
    360.        return 1; //The snake dies if it hits the wall.
    361.     else if( onSnake(Snake[intHead])==1) return 1; //It dies if bite itself
    362.     else return 0;
    363. }
    364.  
    365.  
    366. void refreshSnake()
    367. {
    368.   register int i;
    369.   intNew_len = 3;
    370.   intHead    = 2;
    371.   intTail    = 0;
    372.   intSpeed   = 300;
    373.   for(i=0;i<intNew_len;i++) //Return the Snake to the beginning
    374.     {
    375.         Snake[i].x = LEFT_LIM+1;
    376.         Snake[i].y = TOP_LIM+1;
    377.     }
    378. }
    379.  
    380. void refreshScore()
    381. {
    382.   intLevel   = 1;
    383.   intScore   = 0;
    384.   intAmount  = 10;
    385. }
    386.  
    387.  
    388. void Dead()
    389. {
    390.     char chrAns;
    391.     gotoxy(LEFT_LIM+2,BOT_LIM+2);
    392.     printf("You are lose. Play Again?(Y/N)");
    393.     do {
    394.           chrAns = toupper(getch());
    395.         }
    396.     while (chrAns != 'N' && chrAns != 'Y');
    397.     if (chrAns=='N')
    398.         {
    399.           clrscr();
    400.           printf("Bye Bye!");
    401.           delay(500);
    402.           exit(1);
    403.         }
    404.     else
    405.         {
    406.             Snake[intHead].x=LEFT_LIM+1;
    407.             Snake[intHead].y=TOP_LIM+1;
    408.             refreshScore();
    409.             refreshSnake();
    410.             clrscr();
    411.             drawYard();
    412.             drawFood();
    413.             drawSnake();
    414.             return ;
    415.         }
    416.  
    417. }
    418.  
    419.  
    420. char quitGame()
    421. {
    422.  char chrAns;
    423.  gotoxy(LEFT_LIM+2, BOT_LIM+2);
    424.  printf("Are you sure?(Y/N)");
    425.  do
    426.  {
    427.    chrAns = toupper(getch());
    428.  }
    429.  while (chrAns!= 'Y' && chrAns!='N');
    430.  gotoxy(LEFT_LIM+2, BOT_LIM+2);
    431.  printf("                  ");
    432.  return chrAns;
    433. }


    Tucõi phước
    Tìnhdây oan

  2. #2
    Ngày gia nhập
    02 2007
    Bài viết
    27

    Game Gỡ bom (Mine Sweeper), ăn cắp bản quyền của Windows, tất nhiên không hoàn toàn giống.

    C Code:
    1. /*
    2.  * Game: Mine Sweeper
    3.  * DHDL Van Lang
    4.  * Class: K12T01
    5.  * Total size: 12.0 KB
    6. */
    7.  
    8. #include <stdio.h>
    9. #include <conio.h>
    10. #include <stdlib.h>
    11.  
    12. void menu();//Choose level
    13. void frame(int color);// Playing frame
    14. int exist(int **bomb, int row, int x, int y);//not 2 bombs in 1 cell
    15. void makeBomb(int **&board, int range, int BombQuantity);//Generate bombs
    16. void fillBoard(int **&board, int row, int col);//Fill other cells
    17. void showBoard(int **board);//Show all cells
    18. void showCell(int **board, int row, int col);//Show selected cell
    19. void hideBoard(); //Hide al cells
    20. int openBoard(int **board,int i, int j);
    21. void openMass(int **board,int i, int j);//Open all non-bomb cell
    22. int play(int **&board, char c,int &i,int &j,int &cursorLeft, int &cursorTop);
    23. void death(int **board);//Win or lose
    24. void lockBomb(int **&board,int i,int j);//Set a flag on the bomb
    25.  
    26.  
    27. int top=7,left=5,bot,right,lose=0,flag;
    28. int BombNumber, Quantity;//when Quantity goes to 0, you win
    29.  
    30. void main()
    31. {
    32.     int **board,i,j;
    33.     char c=0;
    34.     menu();
    35.  
    36.     beginning:
    37.     clrscr();
    38.     lose=0;
    39.     Quantity=BombNumber;
    40.  
    41.     //creat dynamic matrix
    42.     board= (int**)calloc((bot-top)/2, sizeof(int*));
    43.     for(i=0; i<bot-top; i++)
    44.         board[i]= (int*)calloc((right-left), sizeof(int));
    45.  
    46.     //Set value for **board
    47.     for(i=0; i<(bot-top)/2; i++)
    48.         for(j=0; j<(right-left)/2; j++)
    49.             board[i][j]=-10; // -10 : no bomb && closed
    50.  
    51.     frame(WHITE);//Draw WHITE frame
    52.     makeBomb(board,(right-left)/2,BombNumber);
    53.     /*
    54.         (right-left)/2
    55.         For example:  |_|_|_|
    56.         right-left=6, but there are 3 cells
    57.     */
    58.  
    59.     fillBoard(board,(bot-top)/2,(right-left)/2);
    60.     hideBoard();
    61.  
    62.     int cursorLeft=left+1, cursorTop=top+1;//Cursor
    63.     i=0;
    64.     j=0;
    65.  
    66.     gotoxy(cursorLeft,cursorTop);
    67.     textbackground(GREEN);
    68.     showCell(board,cursorTop-top-1,cursorLeft-left-1);
    69.  
    70.     do
    71.       {
    72.         flushall();
    73.         c=getch();
    74.         if(play(board,c,i,j,cursorLeft,cursorTop)==0) goto beginning;
    75.  
    76.       }
    77.     while(c!=0xd);//play until button ENTER is pressed
    78.  
    79.     //free the matrix
    80.     for(j=0; j<(right-left)/2; j++)
    81.         free(board[j]);
    82.     free(board);
    83. }
    84.  
    85.  
    86. void menu()
    87. {
    88.     char c;
    89.     clrscr();
    90.     textcolor(WHITE);
    91.     gotoxy(21,8);
    92.     cprintf("MINE SWEEPER");
    93.     gotoxy(20,10);
    94.     cprintf("1. Beginner (Moi tap choi)");
    95.  
    96.     gotoxy(20,12);
    97.     cprintf("2. Experienced (Da biet choi)");
    98.  
    99.     gotoxy(20,14);
    100.     cprintf("3. Professional (Cao thu)");
    101.  
    102.     gotoxy(20,16);
    103.     cprintf("0. Quit ");
    104.     gotoxy(20,18);
    105.     cprintf("Chon cap do: ");
    106.     do
    107.       {
    108.             c=getch();
    109.       }
    110.     while(c<'0' || c>'3');
    111.  
    112.     switch(c)
    113.         {
    114.             case '1': bot=top+16; right=left+16; BombNumber=5; break;
    115.             case '2': bot=top+22; right=left+22; BombNumber=20; break;
    116.             case '3': bot=top+30; right=left+30; BombNumber=10; break;
    117.             case '0': return;
    118.         }
    119. }
    120.  
    121. int play(int **&board, char c,int &i,int &j,int &cursorLeft, int &cursorTop)
    122. {
    123.     switch(c)
    124.             {
    125.                 case 0x48://button UP
    126.                             if(cursorTop>top+1)
    127.                                 {
    128.                                     gotoxy(cursorLeft,cursorTop);
    129.                                     textbackground(BLACK);
    130.                                     showCell(board,i,j);
    131.                                     /* Because the cursor is GREEN
    132.                                         before it leaves a cell, we must
    133.                                         set textbackgound(BLACK)
    134.                                     */
    135.                                     cursorTop-=2;//set new position of the cursor
    136.                                     i--;
    137.                                 }
    138.                             break;
    139.  
    140.                 case 0x50://button DOWN
    141.                             if(cursorTop<bot-1)
    142.                                 {
    143.                                     gotoxy(cursorLeft,cursorTop);
    144.                                     textbackground(BLACK);
    145.                                     showCell(board,i,j);
    146.                                     cursorTop+=2;
    147.                                     i++;
    148.                                 }
    149.                             break;
    150.                 case 0x4d://button RIGHT
    151.                             if(cursorLeft<right-1)
    152.                                 {
    153.                                     gotoxy(cursorLeft,cursorTop);
    154.                                     textbackground(BLACK);
    155.                                     showCell(board,i,j);
    156.                                     cursorLeft+=2;
    157.                                     j++;
    158.                                 }
    159.                             break;
    160.                 case 0x4b://button LEFT
    161.                             if(cursorLeft>left+1)
    162.                                 {
    163.                                     gotoxy(cursorLeft,cursorTop);
    164.                                     textbackground(BLACK);
    165.                                     showCell(board,i,j);
    166.                                     cursorLeft-=2;
    167.                                     j--;
    168.                                 }
    169.                             break;
    170.                 case 0x3b:/* button F1*/
    171.                                 return 0;
    172.  
    173.                 case 0x3e:/*button F4*/
    174.                                 if(openBoard(board,i,j))
    175.                                     {
    176.                                         lose=1;
    177.                                         death(board);
    178.                                     }
    179.                                 break;
    180.  
    181.                 case 0x3f:/*button F5*/
    182.                                 lockBomb(board,i,j);break;
    183.  
    184.                 case 0x42:/*button F8*/
    185.                                 lose=1; death(board); break;
    186.  
    187.             }
    188.     //move the cursor
    189.     gotoxy(cursorLeft,cursorTop);
    190.     textbackground(GREEN);
    191.     showCell(board,i,j);
    192.     textbackground(BLACK);
    193.     gotoxy(1,1);
    194.     return 1;
    195. }
    196.  
    197.  
    198. void frame(int color)
    199. {
    200.     register int i,j;
    201.     //Trade mark
    202.     textcolor(color);
    203.     gotoxy(5,top-5);
    204.     cprintf("Created by Chau Nguyen Thanh Vu~ T06-3546 K12T01");
    205.  
    206.     flag=BombNumber;//Available flags
    207.     textcolor(LIGHTCYAN);
    208.     gotoxy(left+5,top-3);
    209.     cprintf("Flags: %d",flag);
    210.  
    211.     //Draw grid
    212.     for(i=0; i<bot-top; i++)
    213.         for(j=0; j<right-left-1; j++)
    214.             {
    215.                 gotoxy(left+1+j,top+1+i);
    216.                 textcolor(LIGHTGRAY);
    217.                 if(i%2!=0 && j%2!=0)cprintf("%c",197); //draw Å
    218.                 else if(i%2!=0) cprintf("%c",196);//draw Ä
    219.                 else if(j%2!=0) cprintf("%c",179);//draw ³
    220.             }
    221.  
    222.     textcolor(WHITE);
    223.     // Ve ÉÍÍÍÍÍÍÍÍÍ»
    224.     gotoxy(left,top);
    225.     cprintf("%c",201); // Top left corner É
    226.  
    227.     for(i=left+1; i<right; i++)
    228.         {
    229.           gotoxy(i,top);
    230.           cprintf("%c",205);    //Top horizonal line Í
    231.         }
    232.  
    233.     cprintf("%c",187); // Top right corner »
    234.  
    235.  
    236.     //Ve ÈÍÍÍÍÍÍÍÍÍͼ
    237.     gotoxy(left,bot); //(10,40)
    238.     cprintf("%c",200); // Bottom left corner È
    239.  
    240.     for(i=left+1; i<right; i++)
    241.         cprintf("%c",205);  // Bottom horizonal line  Í
    242.  
    243.     cprintf("%c",188); //Bottom right corner ¼
    244.  
    245.     for(i=top+1; i<bot; i++)
    246.         {
    247.           gotoxy(left,i);
    248.           cprintf("%c",186); // Left vertical line º
    249.  
    250.         }
    251.  
    252.  
    253.     for(i=top+1; i<bot; i++)
    254.         {
    255.           gotoxy(right,i);
    256.           cprintf("%c",186); // Right vertical line º
    257.         }
    258.  
    259.     //Number row
    260.     for(i=0,j=1; i<bot-top; i+=2,j++)
    261.         {
    262.             gotoxy(left-2,top+1+i);
    263.             cprintf("%2.d",j);
    264.         }
    265.  
    266.     //Alphabet column
    267.     for(i=0,j=65; i<right-left; i+=2,j++)
    268.         {
    269.             gotoxy(left+i,top-1);
    270.             cprintf("%2.c",j);
    271.         }
    272.  
    273.     //Instructions
    274.     textcolor(WHITE);
    275.     gotoxy(right+2,top+1); cprintf("F1: New Game (Choi lai)");
    276.     gotoxy(right+2,top+3); cprintf("F4: Open cell (Mo o^)");
    277.     gotoxy(right+2,top+5); cprintf("F5: Lock bomb (Kho'a bom)");
    278.     gotoxy(right+2,top+7); cprintf("F8: Resign (chiu thua)");
    279.     gotoxy(right+2,top+10); cprintf("Use ARROW keys to move");
    280.     gotoxy(right+2,top+12); cprintf("Press ENTER to QUIT");
    281.  
    282. }
    283.  
    284.  
    285. int exist(int **bomb, int row, int x, int y)
    286. {//check whether 2 bombs in 1 cell
    287.     for(int i=0; i<row; i++)
    288.         if(bomb[i][0]==x && bomb[i][1]==y) return 1;
    289.     return 0;
    290. }
    291.  
    292.  
    293. void makeBomb(int **&board, int range, int BombQuantity)
    294. {
    295.     int i,j,x,y;
    296.     randomize();
    297.  
    298.     //Dynamic matrix
    299.     int **bomb;
    300.     bomb=(int**)calloc(BombQuantity,sizeof(int*));
    301.     for(i=0; i<BombQuantity; i++)
    302.         bomb[i]= (int*)calloc(2,sizeof(int));
    303.  
    304.     for(i=0; i<BombQuantity;i++)
    305.        {
    306.            do
    307.            {
    308.                 //range from 0 -> (right-left)/2
    309.                 x= random(range);
    310.                 y= random(range);
    311.            }
    312.            while(exist(bomb,BombQuantity,x,y)==1);//2 bomb not 1 place
    313.             bomb[i][0]=x;
    314.            bomb[i][1]=y;
    315.             board[x][y]=-9;// -9 : 1 bomb && closed
    316.         }
    317.  
    318.     //Free the matrix
    319.     for(j=0; j<2; j++)
    320.         free(bomb[j]);
    321.     free(bomb);
    322. }
    323.  
    324.  
    325. void fillBoard(int **&board, int row, int col)
    326. {
    327.     int count,i,j;
    328.     for(i=0; i<row; i++)
    329.         for(j=0; j<col; j++)
    330.             if(board[i][j]!=-9)
    331.             {
    332.                 count=0;
    333.                 if(board[i-1][j]==-9) count++;
    334.                 if(board[i+1][j]==-9) count++;
    335.                 if(board[i][j-1]==-9) count++;
    336.                 if(board[i][j+1]==-9) count++;
    337.                 if(board[i-1][j-1]==-9) count++;
    338.                 if(board[i-1][j+1]==-9) count++;
    339.                 if(board[i+1][j-1]==-9) count++;
    340.                 if(board[i+1][j+1]==-9) count++;
    341.                 if(count==0) board[i][j]=-10; //-10: no bom && closed
    342.                 else board[i][j]=-count;// count<0 means: closed
    343.             }
    344. }
    345.  
    346.  
    347. void showBoard(int **board)
    348. {
    349.     for(int hang=0,i=0; i<(bot-top)/2;hang+=2,i++)
    350.         for(int cot=0,j=0; j<(right-left)/2;cot+=2,j++)
    351.             {
    352.                 gotoxy(left+1+cot,top+1+hang);
    353.                 showCell(board,i,j);
    354.             }
    355.  
    356. }
    357.  
    358. void showCell(int **board, int row, int col)
    359. {
    360.     textcolor(LIGHTMAGENTA);
    361.     if( (board[row][col]>=10 && lose==0)//lock selected cell
    362.          ||(board[row][col]==11) )//locked bomb
    363.             cprintf("%c",6);
    364.  
    365.     else if(board[row][col]>=10 && board[row][col]!=11  && lose==1)
    366.              { //locked, not bomb
    367.                 textcolor(LIGHTRED);
    368.                 cprintf("X");
    369.              }
    370.     else
    371.         {
    372.             textcolor(CYAN);
    373.             switch(board[row][col])
    374.                 {
    375.                     case  -9: cprintf("?"); break; //-9: closed bomb
    376.                     case -10: cprintf("?"); break; //-10: closed nothing
    377.                     case   0: cprintf(" "); break; // 0: opened nothing
    378.                     case   9:                      // 9: opened bomb
    379.                               textcolor(LIGHTRED);
    380.                               cprintf("*");
    381.                               break;
    382.                     default:
    383.                               if(board[row][col]>0)
    384.                                 { // >0 : opened number
    385.                                     textcolor(LIGHTBLUE);
    386.                                     cprintf("%d",board[row][col]);
    387.                                     break;
    388.                                 }
    389.                               else//if(board[row][col]<0): closed
    390.                                 {
    391.                                     textcolor(CYAN);
    392.                                     cprintf("?");
    393.                                     break;
    394.                                 }
    395.                  }
    396.         }
    397. }
    398.  
    399. void hideBoard()
    400. {
    401.     for(int i=top+1; i<bot; i+=2)
    402.         for(int j=left+1; j<right; j+=2)
    403.             {
    404.                 gotoxy(j,i);
    405.                 textcolor(CYAN);
    406.                 cprintf("?");
    407.             }
    408. }
    409.  
    410. int openBoard(int **board,int i, int j)
    411. {
    412.     int flag=0;
    413.     if(board[i][j]==-9) return 1;//Open bomb, die!!
    414.     else if(board[i][j]==-10)
    415.         {
    416.             openMass(board,i,j);//open all non-bomb cell
    417.             flag=1;
    418.         }
    419.     else if(board[i][j]<0)  board[i][j]=-board[i][j];
    420.     if(flag==1) showBoard(board);
    421.     return 0;
    422. }
    423.  
    424. void openMass(int **board,int i, int j)
    425. {
    426.     if(board[i][j]==-10)// -10: non-bomb && closed
    427.         board[i][j]=0;// 0: non-bomb && opened
    428.  
    429.     if(board[i-1][j]==-10) openMass(board,i-1,j);
    430.     if(board[i+1][j]==-10) openMass(board,i+1,j);
    431.     if(board[i][j-1]==-10) openMass(board,i,j-1);
    432.     if(board[i][j+1]==-10) openMass(board,i,j+1);
    433.  
    434.     if(board[i-1][j]<0)/*If a numbered cell is next to
    435.                                 a non-bomb cell, open that numbered cell */
    436.             board[i-1][j]=-board[i-1][j];
    437.  
    438.     if(board[i+1][j]<0)
    439.             board[i+1][j]=-board[i+1][j];
    440.  
    441.     if(board[i][j-1]<0)
    442.             board[i][j-1]=-board[i][j-1];
    443.  
    444.     if(board[i][j+1]<0)
    445.             board[i][j+1]=-board[i][j+1];
    446.  
    447.     return;
    448. }
    449.  
    450. void death(int **board)
    451. {
    452.     int hang,cot,i,j;
    453.     for(i=0; i<(bot-top)/2;i++)
    454.         for(j=0; j<(right-left)/2; j++)
    455.             {
    456.                 if(board[i][j]==-10) board[i][j]=0;//opend all non-bomb cells
    457.                 if(board[i][j]<0) board[i][j]=-board[i][j];
    458.                                         //opened all numbered cells
    459.                                         //becase <0 : closed
    460.                                         //       >0 : opened
    461.             }
    462.  
    463.     showBoard(board);
    464.  
    465.     if(lose==1)// LOSE mode
    466.         {
    467.             gotoxy(left+16,top-3);
    468.             textcolor(YELLOW);
    469.             cprintf("BAN DA THUA ! NHAN F1 DE CHOI LAI.");
    470.         }
    471.     else// WIN mode
    472.         {
    473.             gotoxy(left+16,top-3);
    474.             textcolor(YELLOW);
    475.             cprintf("CHUC MUNG! BAN DA CHIEN THANG!");
    476.         }
    477.  
    478.     gotoxy(right+2, top+15);
    479.     textcolor(LIGHTRED);
    480.     cprintf("X");
    481.     textcolor(WHITE);
    482.     cprintf(": not a bomb (khong phai bom)");
    483.  
    484.     gotoxy(right+2, top+17);
    485.     textcolor(LIGHTRED);
    486.     cprintf("*");
    487.     textcolor(WHITE);
    488.     cprintf(": a bomb (day la bom)");
    489.  
    490.     gotoxy(right+2, top+19);
    491.     textcolor(LIGHTMAGENTA);
    492.     cprintf("%c",6);
    493.     textcolor(WHITE);
    494.     cprintf(": locked bomb (bom bi kho'a)");
    495. }
    496.  
    497. void lockBomb(int **&board,int i,int j)//locked or unlock selected cell
    498. {
    499.     if(board[i][j]<0 && flag>0)//only lock <0 cell (closed cell)
    500.         {
    501.             if(board[i][j]==-9) Quantity--; //if a bomb is locked
    502.             /*Quantity of bomb is not shown
    503.               it is the remaining bombs to defuse
    504.               when it goes to 0, you win.*/
    505. /* (1)*/ board[i][j]+=20;/*for example: board[i][j]=-1 -> board[i][j]=19
    506.                                   19>0 : so it won't be opened by showCell()
    507.                                   because showCell() only opens <0 cell*/
    508.             flag--;
    509.             textcolor(WHITE);
    510.             gotoxy(left+12,top-3);
    511.             cprintf("%2.1d",flag);
    512.             if(Quantity==0)
    513.                 {
    514.                     lose=0;// you win
    515.                     death(board);//show all cells in WIN mode
    516.                 }
    517.         }
    518.     else if(board[i][j]>=10 && lose==0)
    519.         {
    520. /* (2)*/ board[i][j]-=20;
    521.             /* In (1), board[i][j]=-1 -> board[i][j]=19;
    522.                 In (2), board[i][j]=19 -> board[i][j]=-1;
    523.                 => when the flag is removed,
    524.                     board[i][j] returns to the previous value
    525.             */
    526.             if(board[i][j]==-9) Quantity++;//if a bomb is unlocked
    527.             flag++;
    528.             textcolor(WHITE);
    529.             gotoxy(left+12,top-3);
    530.             cprintf("%2.1d",flag);
    531.         }
    532. }


    Tucõi phước
    Tìnhdây oan

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

    Game Caro 2 người chơi,
    Luật: 5 "con" là thắng, không cần phân biệt chặn đầu, bịt đuôi.

    C Code:
    1. /*
    2.  * Game: CARO human v.s human
    3.  * DHDL Van Lang
    4.  * Class: K12T01
    5.  * Total size: 7.62 KB
    6. */
    7.  
    8. #include <stdio.h>
    9. #include <conio.h>
    10. #include <stdlib.h>
    11. #include <string.h>
    12.  
    13. #define player1 -1
    14. #define player2 1
    15.  
    16. void askName();
    17. void showName();
    18. void frame(int color);// Playing frame
    19. void showCell(int **board, int i, int j);
    20. int play(int **&board, char c,int &i,int &j,int &cursorLeft, int &cursorTop);
    21. void newArea(int i,int j);
    22. void check(int **board);//Win or lose
    23.  
    24.  
    25. int top=7,left=5,bot=37,right=35,turn=player1, endGame=0;
    26. int minTop=(bot-top)/2, maxRight=0;
    27. int minLeft=(right-left)/2, maxBot=0;
    28.      //Area in the matrix, which has been filled
    29. char play1[30], play2[30];// players' name
    30.  
    31. void main()
    32. {
    33.     int **board,i,j;
    34.     char c=0;
    35.     askName();
    36.  
    37.     beginning:
    38.     clrscr();
    39.     c=0;
    40.     endGame=0;
    41.  
    42.     //creat dynamic matrix
    43.     board= (int**)calloc((bot-top)/2, sizeof(int*));
    44.     for(i=0; i<bot-top; i++)
    45.         board[i]= (int*)calloc((right-left), sizeof(int));
    46.  
    47.     //Set value for **board, because calloc() works not perfectly
    48.     for(i=0; i<(bot-top)/2; i++)
    49.         for(j=0; j<(right-left)/2; j++)
    50.             board[i][j]=0;
    51.  
    52.     frame(WHITE);//Draw WHITE frame
    53.  
    54.  
    55.     int cursorLeft=left+1, cursorTop=top+1;//Cursor
    56.     i=0;
    57.     j=0;
    58.  
    59.     gotoxy(cursorLeft,cursorTop);
    60.     textbackground(GREEN);
    61.     showCell(board,cursorTop-top-1,cursorLeft-left-1);
    62.  
    63.     do
    64.       {
    65.         flushall();
    66.         showName();
    67.         c=getch();
    68.         if(play(board,c,i,j,cursorLeft,cursorTop)==0) goto beginning;
    69.  
    70.       }
    71.     while(c!=0xd);//play until button ENTER is pressed
    72.  
    73.     //free the matrix
    74.     for(j=0; j<(right-left)/2; j++)
    75.         free(board[j]);
    76.     free(board);
    77.  
    78. }
    79.  
    80.  
    81. void askName()
    82. {
    83.     clrscr();
    84.     textcolor(WHITE);
    85.  
    86.     do
    87.       {
    88.             cprintf("Nhap ten nguoi choi thu 1 (toi da 20 ky tu): ");
    89.             gets(play1);
    90.       }
    91.     while(strlen(play1)<=0 || strlen(play1)>20);
    92.     do
    93.       {
    94.             cprintf("Nhap ten nguoi choi thu 2 (toi da 20 ky tu): ");
    95.             gets(play2);
    96.       }
    97.     while(strlen(play2)<=0 || strlen(play2)>20);
    98. }
    99.  
    100.  
    101. void showName()
    102. {
    103.     textbackground(BLACK);
    104.     textcolor(WHITE);
    105.     gotoxy(right+2,top+2);
    106.     cprintf("Luot di cua: ");
    107.     for(int i=0; i<30; i++) printf(" ");//Erase last name
    108.  
    109.     gotoxy(right+15,top+2);
    110.     if(turn==player1)
    111.         {
    112.             textcolor(LIGHTRED);
    113.             cprintf("%s (O)",play1);
    114.         }
    115.     else
    116.         {
    117.             textcolor(LIGHTCYAN);
    118.             cprintf("%s (X)",play2);
    119.         }
    120. }
    121.  
    122.  
    123. void frame(int color)
    124. {
    125.     register int i,j;
    126.     //Trade mark
    127.     textcolor(color);
    128.     gotoxy(5,top-5);
    129.     cprintf("Created by Chau Nguyen Thanh Vu~ T06-3546 K12T01");
    130.  
    131.     //Draw grid
    132.     for(i=0; i<bot-top; i++)
    133.         for(j=0; j<right-left-1; j++)
    134.             {
    135.                 gotoxy(left+1+j,top+1+i);
    136.                 textcolor(LIGHTGRAY);
    137.                 if(i%2!=0 && j%2!=0)cprintf("%c",197); //draw Å
    138.                 else if(i%2!=0) cprintf("%c",196);//draw Ä
    139.                 else if(j%2!=0) cprintf("%c",179);//draw ³
    140.             }
    141.  
    142.     textcolor(WHITE);
    143.     // Ve ÉÍÍÍÍÍÍÍÍÍ»
    144.     gotoxy(left,top);
    145.     cprintf("%c",201); // Top left corner É
    146.  
    147.     for(i=left+1; i<right; i++)
    148.         {
    149.           gotoxy(i,top);
    150.           cprintf("%c",205);    //Top horizonal line Í
    151.         }
    152.  
    153.     cprintf("%c",187); // Top right corner »
    154.  
    155.  
    156.     //Ve ÈÍÍÍÍÍÍÍÍÍͼ
    157.     gotoxy(left,bot); //(10,40)
    158.     cprintf("%c",200); // Bottom left corner È
    159.  
    160.     for(i=left+1; i<right; i++)
    161.         cprintf("%c",205);  // Bottom horizonal line  Í
    162.  
    163.     cprintf("%c",188); //Bottom right corner ¼
    164.  
    165.     for(i=top+1; i<bot; i++)
    166.         {
    167.           gotoxy(left,i);
    168.           cprintf("%c",186); // Left vertical line º
    169.  
    170.         }
    171.  
    172.  
    173.     for(i=top+1; i<bot; i++)
    174.         {
    175.           gotoxy(right,i);
    176.           cprintf("%c",186); // Right vertical line º
    177.         }
    178.  
    179.     //Number row
    180.     for(i=0,j=1; i<bot-top; i+=2,j++)
    181.         {
    182.             gotoxy(left-2,top+1+i);
    183.             cprintf("%2.d",j);
    184.         }
    185.  
    186.     //Alphabet column
    187.     for(i=0,j=65; i<right-left; i+=2,j++)
    188.         {
    189.             gotoxy(left+i,top-1);
    190.             cprintf("%2.c",j);
    191.         }
    192.  
    193.     //Instructions
    194.     textcolor(WHITE);
    195.     gotoxy(right+2,top+5); cprintf("Ctrl-N: New Game (Choi lai)");
    196.     gotoxy(right+2,top+11); cprintf("Use ARROW keys to move");
    197.               gotoxy(right+2,top+13; cprintf("Press SPACE BAR to check");
    198.     gotoxy(right+2,top+15); cprintf("Press ENTER to QUIT");
    199.  
    200. }
    201.  
    202.  
    203. int play(int **&board, char c,int &i,int &j,int &cursorLeft, int &cursorTop)
    204. {
    205.      switch(c)
    206.             {
    207.                 case 0x48://button UP
    208.                             if(cursorTop>top+1)
    209.                                 {
    210.                                     gotoxy(cursorLeft,cursorTop);
    211.                                     textbackground(BLACK);
    212.                                     showCell(board,i,j);
    213.                                     /* Because the cursor is GREEN
    214.                                         before it leaves a cell, we must
    215.                                         set textbackgound(BLACK)
    216.                                     */
    217.                                     cursorTop-=2;//set new position of the cursor
    218.                                     i--;
    219.                                 }
    220.                             break;
    221.  
    222.                 case 0x50://button DOWN
    223.                             if(cursorTop<bot-1)
    224.                                 {
    225.                                     gotoxy(cursorLeft,cursorTop);
    226.                                     textbackground(BLACK);
    227.                                     showCell(board,i,j);
    228.                                     cursorTop+=2;
    229.                                     i++;
    230.                                 }
    231.                             break;
    232.                 case 0x4d://button RIGHT
    233.                             if(cursorLeft<right-1)
    234.                                 {
    235.                                     gotoxy(cursorLeft,cursorTop);
    236.                                     textbackground(BLACK);
    237.                                     showCell(board,i,j);
    238.                                     cursorLeft+=2;
    239.                                     j++;
    240.                                 }
    241.                             break;
    242.                 case 0x4b://button LEFT
    243.                             if(cursorLeft>left+1)
    244.                                 {
    245.                                     gotoxy(cursorLeft,cursorTop);
    246.                                     textbackground(BLACK);
    247.                                     showCell(board,i,j);
    248.                                     cursorLeft-=2;
    249.                                     j--;
    250.                                 }
    251.                             break;
    252.                 case 0xe:/* hot key Ctrl-N*/
    253.                                 return 0;
    254.  
    255.                 case 0x20:/*button SPACE-BAR*/
    256.                                 if(board[i][j]==0 && endGame!=1)
    257.                                     {
    258.                                         board[i][j]=turn;
    259.                                         newArea(i,j);
    260.                                         check(board);
    261.                                         turn=-turn;
    262.                                     }
    263.                                 break;
    264.  
    265.  
    266.             }
    267.  
    268.     //move the cursor
    269.     gotoxy(cursorLeft,cursorTop);
    270.     textbackground(GREEN);
    271.     showCell(board,i,j);
    272.     textbackground(BLACK);
    273.     return 1;
    274. }
    275.  
    276. //int minTop=(bot-top)/2, maxBot=0;
    277. //int minLeft=(right-left)/2, maxRight=0;
    278. void newArea(int i,int j)
    279. {
    280.     if(i<minTop) minTop=i;
    281.     if(i>maxBot) maxBot=i;
    282.  
    283.     if(j<minLeft) minLeft=j;
    284.     if(j>maxRight) maxRight=j;
    285.  
    286. }
    287.  
    288.  
    289. void showCell(int **board, int i, int j)
    290. {
    291.     switch(board[i][j])
    292.         {
    293.             case -1: textcolor(LIGHTRED);
    294.                         cprintf("O"); break;
    295.  
    296.             case  0: cprintf(" ");
    297.                         break;
    298.             case  1:
    299.                         textcolor(LIGHTCYAN);
    300.                         cprintf("X");
    301.                         break;
    302.         }
    303.  
    304. }
    305.  
    306.  
    307. void check(int **board)//Win or lose
    308. {
    309.     int winner;
    310.     for(int x= minTop; x<=maxBot; x++)
    311.         for(int y= minLeft; y<=maxRight; y++)
    312.             {
    313.                 //Kiem tra doc
    314.                 if(board[x][y]!=0 && board[x][y]==board[x+1][y])
    315.                     {
    316.                         int dem=2;
    317.                         for(int z=x+2; z<=maxBot; z++)
    318.                             if(board[z][y]==board[x][y])
    319.                                 dem++;
    320.                             else break;
    321.  
    322.                         if(dem==5) { winner=turn; goto result; }
    323.                         else winner=0;
    324.                     }
    325.  
    326.                 //Kiem tra ngang
    327.                 else if(board[x][y]!=0 && board[x][y]==board[x][y+1])
    328.                     {
    329.                         int dem=2;
    330.                         for(int z=y+2; z<=y+4; z++)
    331.                             if(board[x][z]==board[x][y])
    332.                                 dem++;
    333.                         if(dem==5) { winner=turn; goto result; }
    334.                         else winner=0;
    335.                     }
    336.  
    337.                 //Kiem tra cheo trai -> phai
    338.                 else if(board[x][y]!=0 && board[x][y]==board[x+1][y+1])
    339.                     {
    340.                         int dem=2;
    341.                         for(int z=2; z<=4; z++)
    342.                             if(board[x+z][y+z]==board[x][y])
    343.                                 dem++;
    344.                         if(dem==5) { winner=turn; goto result; }
    345.                         else winner=0;
    346.                     }
    347.  
    348.                 //Kiem tra cheo phai -> trai
    349.                 else if(board[x][y]!=0 && board[x][y]==board[x-1][y+1])
    350.                     {
    351.                         int dem=2;
    352.                         for(int z=2; z<=4; z++)
    353.                             if(board[x-z][y+z]==board[x][y])
    354.                                 dem++;
    355.                         if(dem==5) { winner=turn; goto result; }
    356.                         else winner=0;
    357.                     }
    358.             }
    359.  
    360.     result:
    361.     gotoxy(left+3,top-3);
    362.     textcolor(YELLOW+BLINK);
    363.     textbackground(BLACK);
    364.     if(winner==player1)
    365.         {
    366.             cprintf("%s (O) DA CHIEN THANG!",strupr(play1));
    367.             endGame=1;
    368.         }
    369.     else if(winner==player2)
    370.                 {
    371.                     cprintf("%s (X) DA CHIEN THANG!",strupr(play2));
    372.                     endGame=1;
    373.                 }
    374. }


    Tucõi phước
    Tìnhdây oan

  4. #4
    Ngày gia nhập
    10 2006
    Nơi ở
    In Your Bugs
    Bài viết
    823

    Ặc cái này tui viết lâu rồi , cái caro thì viết trên giấy vì lúc đó chưa có máy tính thầy bảo được rồi tui vứt cái code ở đâu mất nên không chuyển qua cái demo được , bi giờ đang cần để thử ứng dụng cái thuật toán tham lam nên chắc hôm nào ngồi viết lại , còn game con rắn tui viết dở ẹt tuy vậy còn nhiếu ý tưởng lắm , hôm nào U post cái file exe lên đây anh em đánh giá cho , còn cái exe của kid thì post lên lâu rồi hôm nào search thử góp ý lại nhé .

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

    Thuật toán tham lam là sao anh ?


    Tucõi phước
    Tìnhdây oan

  6. #6
    Ngày gia nhập
    07 2007
    Nơi ở
    Thành phố Hồ Chí Minh
    Bài viết
    9

    Mặc định Code game Con rắn trong Text mode

    Đó còn là 1 tên khác của thuật toán vét cạn,... Bạn có thể lên google để tìm thêm thông tin về thuật toán này... ^_^
    ========================================
    Chúc các bạn 1 ngày làm việc vui vẻ...
    ========================================

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

    Cảm ơn nhiều

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

    chrPress = getch();
    cho mình hỏi cái hàm này là gì ?
    nó có tương tự như getch(); k ?
    [CENTER][QUOTE][CENTER][COLOR="Red"][SIZE="6"](*_*) Learn to live in the present (*_*)
    (*_*) And stop worrying about the future (*_*)

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

    Mấy cái game trên lỗi tùm lum hết lun )
    Coi lại đi mấy huynh

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

    sao mình paste vao borland c 5.02 thì nó báo là call to undefined function delay vậy, cái game con rắn đó

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

  1. Trả lời: 1
    Bài viết cuối: 13-07-2014, 08:06 AM
  2. Code nối hai bài thơ trong file text bằng C++! Có cách nào tối ưu hơn không?
    Gửi bởi davidpuskin trong diễn đàn Thảo luận, góp ý code C/C++ của bạn
    Trả lời: 1
    Bài viết cuối: 14-09-2011, 06:52 AM
  3. in code thành file text trong C++?
    Gửi bởi it92 trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 10
    Bài viết cuối: 01-04-2011, 09:05 PM
  4. code C#: Tìm số nhị phân trong một đoạn text?
    Gửi bởi mik trong diễn đàn Thắc mắc lập trình C#
    Trả lời: 5
    Bài viết cuối: 23-12-2010, 11:48 AM
  5. Souce code C# | Cool Text -Crazy Text
    Gửi bởi thepbac trong diễn đàn Dự án & Source code C#, ASP.NET
    Trả lời: 5
    Bài viết cuối: 22-11-2010, 03:49 PM

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